diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..8f5007fa --- /dev/null +++ b/.eslintignore @@ -0,0 +1,10 @@ +node_modules +.eslintrc +.nyc_output +.vscode +coverage +build +dist +lib +example +trash \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..afe5579f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior. A few things to consider including: +- Is the server an open server or closed? +- What requests are you making, or what methods aren't working as expected. +- What launch sequence are you using? + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Client-side (please complete the following information):** + - OS: [e.g. Windows, OS, iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + - Front-end Framework(s) [e.g. React, jQuery] + +**Server-side (please complete the following information):** + - Node version: [e.g. v21.6.0] + - OS: [e.g. OS, Unix] + - Framework [e.g. Express, HAPI, none] + - Framework Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. If you have links to any deployed tools or webpages, they would be good to include. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..bbcbbe7d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/browser.yml b/.github/workflows/browser.yml new file mode 100644 index 00000000..644bd5d0 --- /dev/null +++ b/.github/workflows/browser.yml @@ -0,0 +1,32 @@ + +name: Browser Tests + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + workflow_dispatch: + branches: [ "*" ] + +jobs: + build: + + runs-on: ubuntu-20.04 + + steps: + + - uses: actions/checkout@v3 + + - name: Setup Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: npm + + - run: npm ci --legacy-peer-deps + + - run: npm run build --if-present + + - run: npm run nightwatch + diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml new file mode 100644 index 00000000..ef328a0c --- /dev/null +++ b/.github/workflows/node.yml @@ -0,0 +1,41 @@ + +name: NodeJS Tests + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + workflow_dispatch: + branches: [ "*" ] + +jobs: + build: + + runs-on: ubuntu-20.04 + + strategy: + matrix: + node-version: [ 18.x, 20.x ] + + steps: + + - uses: actions/checkout@v3 + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: npm + + - run: npm ci --legacy-peer-deps + + - run: npm run build --if-present + + - run: npm test + + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + diff --git a/.gitignore b/.gitignore index ad68e0f4..7da26980 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,11 @@ .#* *.swp node_modules +.vscode +# test.html +trash +post-launch/index.html +.DS_Store +coverage +.nyc_output +tests_output diff --git a/.labrc.js b/.labrc.js new file mode 100644 index 00000000..f9825a5e --- /dev/null +++ b/.labrc.js @@ -0,0 +1,115 @@ +module.exports = { + + // coverage ---------------------------------------------------------------- + + // enable code coverage analysis (-c, --coverage) + // coverage: false, + + // set code coverage path (--coverage-path) + // coveragePath: "dist", + + // set code coverage excludes (--coverage-exclude) + // coverageExclude: "lib/**.*", + + // include all files in coveragePath in report (--coverage-all) + // coverageAll: true, + + // --coverage-flat prevent recursive inclusion of all files in coveragePath in report + // coverageFlat: false, + + // --coverage-module enable coverage on external module + // coverageModule: true, + + // --coverage-pattern file pattern to use for locating files for coverage + // coveragePattern: "src/**.*", + + // sourcemaps -------------------------------------------------------------- + + // enable support for sourcemaps (-S, --sourcemaps) + sourcemaps: true, + + // transform --------------------------------------------------------------- + // javascript file that exports an array of objects ie. + // [ { ext: ".js", transform: function (content, filename) { ... } } ] + // (-T, --transform) + // transform: "node_modules/lab-transform-typescript", + + // reporters --------------------------------------------------------------- + // reporter type [console, html, json, tap, lcov, clover, junit] + // Note that the order of entries corresponds to the `output` below + // (-r, --reporter) + reporter: ["console"], + + // output ------------------------------------------------------------------ + // file path to write test results + // Note that the order of entries corresponds to the `reporter` above + // (-o, --output) + // output: ["stdout"], + + // Other ------------------------------------------------------------------- + // ignore a list of globals for the leak detection (comma separated) + // (-I, --globals) + globals: "crypto,__coverage__", // "__core-js_shared__", + + // --bail exit the process with a non zero exit code on the first test failure + bail: false, + + // -p, --default-plan-threshold minimum plan threshold to apply to all tests that don't define any plan + defaultPlanThreshold: 90, + + // -e, --environment value to set NODE_ENV before tests + environment: "test", + + // -f, --flat prevent recursive collection of tests within the provided path + flat: false, + + // -l, --leaks disable global variable leaks detection + leaks: true, + + // --shuffle shuffle script execution order + shuffle: false, + + // -s, --silence silence test output + silence: false, + + // -k, --silent-skips don’t output skipped tests + silentSkips: false, + + // -t, --threshold code coverage threshold percentage + // threshold: 90, + + // -m, --timeout timeout for each test in milliseconds + timeout: 5000, + + // -M, --context-timeout timeout for before, after, beforeEach, afterEach in milliseconds + contextTimeout: 1000, + + // -Y, --types test types definitions + types: false, + // --types-test location of types definitions test file + + // -v, --verbose verbose test output + verbose: true, + + // -V, --version version information + // -h, --help display usage options + // -a, --assert specify an assertion library module path to require and + // make available under Lab.assertions + // -C, --colors enable color output (defaults to terminal capabilities) + // -d, --dry skip all tests (dry run) + // --inspect starts lab with the node.js native debugger + // --seed use this seed to randomize the order with `--shuffle`. + // This is useful to debug order dependent test failures + // -L, --lint enable linting + lint: false, + // -n, --linter linter path to use + // --lint-fix apply any fixes from the linter. + // --lint-options specify options to pass to linting program. It must be a + // string that is JSON.parse(able). + // --lint-errors-threshold linter errors threshold in absolute value + // --lint-warnings-threshold linter warnings threshold in absolute value + // -P, --pattern file pattern to use for locating tests + // -g, --grep only run tests matching the given pattern which is + // internally compiled to a RegExp + // -i, --id test identifier +}; diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..2d9290c3 --- /dev/null +++ b/.npmignore @@ -0,0 +1,19 @@ +*.log +*.pyc +*.tmproj +*~ +.project +*# +.#* +*.swp +node_modules +.vscode +old +trash +test +docs +.babelrc +.eslintignore +.eslintrc.js +.labrc.js +webpack.config.js \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..3f430af8 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v18 diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 08ef5606..00000000 --- a/Gruntfile.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = function (grunt) { - - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-browserify'); - grunt.loadNpmTasks('grunt-shell'); - grunt.loadNpmTasks('grunt-curl'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - - grunt.initConfig({ - curl: { - conformance: { - dest: 'vendor/conformance.json', - src: 'http://hl7-fhir.github.io/conformance-base.json' - } - }, - shell: { - browserify: { - command: "./node_modules/.bin/browserify -e client/entry.js -i './node_modules/jsdom/**' > dist/fhir-client.js", - options: { - failOnError: true, - stderr: true - } - } - }, - uglify: { - minifiedLib: { - files: { - 'dist/fhir-client.min.js': ['dist/fhir-client.js'] - } - } - } - }); - - grunt.registerTask('browserify', 'Browserify to create window.FHIR', ['shell:browserify']); - grunt.registerTask('conformance', 'Download conformance base', ['curl:conformance']); - grunt.registerTask('default', ['browserify', 'uglify:minifiedLib']); - grunt.registerTask('all', ['conformance', 'default']); -}; diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..2169c47b --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Copyright 2015 Boston Children's Hospital + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this software 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. diff --git a/README.md b/README.md new file mode 100644 index 00000000..eceafd61 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +SMART on FHIR JavaScript Library +================================ + +This is a JavaScript library for connecting SMART apps to Fhir servers. +It works both in browsers (including IE11+) and on the server (NodeJS). + +## Installation + +Install from npm: +```sh +npm i fhirclient +``` + +
+ +## Documentation +The documentation for the upcoming release is available at [http://docs.smarthealthit.org/client-js/](http://docs.smarthealthit.org/client-js/). + +Check out [what's new in v2](http://docs.smarthealthit.org/client-js/v2.html)! + + +
+ +## Contributing and Development + +### NPM Scripts + +After you `cd` into to the project folder and run `npm i`, you can use npm scripts to handle any project-related task: + +```sh +# run tests +npm test + +# Build everything +npm run build + +# Build all bundles (browser packages in dist/build) +npm run pack + +# Build the CommonJS modules (for Node and bundlers) +npm run build:module +``` + +## License +Apache 2.0 + + diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..8916ad06 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,40 @@ +module.exports = { + env: { + pure: {}, + browser: { + plugins: ["@babel/plugin-transform-runtime"], + presets: [ + ["@babel/preset-env", { + useBuiltIns: "usage", + modules: "commonjs", + corejs: { + version: 3, + proposals: true + }, + targets: [ + "last 2 Chrome versions", + "last 2 firefox versions", + "last 2 Edge versions", + "ie 11" + ], + debug: true, + // loose: true, // needed for IE 10 + }] + ] + }, + module: { + presets: [ + ["@babel/preset-env", { + useBuiltIns: "usage", + modules: "commonjs", + corejs: { + version: 3 + }, + targets: [ + "node 18" + ] + }] + ] + } + } +}; diff --git a/client/bb-client.js b/client/bb-client.js deleted file mode 100644 index 67ef3a96..00000000 --- a/client/bb-client.js +++ /dev/null @@ -1,185 +0,0 @@ -var $ = jQuery = require('./jquery'); -var FhirClient = require('./client'); -var Guid = require('./guid'); - -var BBClient = module.exports = {debug: true} -BBClient.jQuery = BBClient.$ = jQuery; - -BBClient.ready = function(hash, callback){ - - var mustClearHash = false; - if (arguments.length == 1){ - mustClearHash = true; - callback = hash; - hash = window.location.hash; - } - - var oauthResult = hash.match(/#(.*)/); - oauthResult = oauthResult ? oauthResult[1] : ""; - oauthResult = oauthResult.split(/&/); - - BBClient.authorization = null; - BBClient.state = null; - - var authorization = {}; - for (var i = 0; i < oauthResult.length; i++){ - var kv = oauthResult[i].split(/=/); - if (kv[0].length > 0) { - authorization[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]); - } - } - - if (Object.keys(authorization).length > 0 && authorization.state){ - BBClient.authorization = authorization; - BBClient.state = JSON.parse(localStorage[BBClient.authorization.state]); - } else { - return; - } - - console.log(BBClient); - - // don't expose hash in the URL while in production mode - if (mustClearHash && BBClient.debug !== true) { - window.location.hash=""; - } - - var fhirClientParams = BBClient.fhirAuth = { - serviceUrl: BBClient.state.provider.bb_api.fhir_service_uri, - patientId: authorization.patient - }; - - if (BBClient.authorization.access_token !== undefined) { - fhirClientParams.auth = { - type: 'bearer', - token: BBClient.authorization.access_token - }; - } - process.nextTick(function(){ - var ret = FhirClient(fhirClientParams); - ret.state = JSON.parse(JSON.stringify(BBClient.state)); - callback && callback(ret); - }); -} - -function providers(fhirServiceUrl, callback){ - jQuery.get( - fhirServiceUrl+"/metadata", - function(r){ - var res = { - "name": "SMART on FHIR Testing Server", - "description": "Dev server for SMART on FHIR", - "url": null, - "oauth2": { - "registration_uri": null, - "authorize_uri": null, - "token_uri": null - }, - "bb_api":{ - "fhir_service_uri": fhirServiceUrl, - "search": fhirServiceUrl + "/DocumentReference" - } - }; - - try { - jQuery.each(r.rest[0].security.extension, function(responseNum, arg){ - if (arg.url === "http://fhir-registry.smartplatforms.org/Profile/oauth-uris#register") { - res.oauth2.registration_uri = arg.valueUri; - } else if (arg.url === "http://fhir-registry.smartplatforms.org/Profile/oauth-uris#authorize") { - res.oauth2.authorize_uri = arg.valueUri; - } else if (arg.url === "http://fhir-registry.smartplatforms.org/Profile/oauth-uris#token") { - res.oauth2.token_uri = arg.valueUri; - } - }); - } - catch (err) { - } - - callback && callback(res); - }, - "json" - ); -}; - -BBClient.noAuthFhirProvider = function(serviceUrl){ - return { - "oauth2": null, - "bb_api":{ - "fhir_service_uri": serviceUrl - } - } -}; - -function relative(url){ - return (window.location.protocol + "//" + window.location.host + window.location.pathname).match(/(.*\/)[^\/]*/)[1] + url; -} - -function getParameterByName(name) { - name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); - var regexS = "[\\?&]" + name + "=([^&#]*)"; - var regex = new RegExp(regexS); - var results = regex.exec(window.location.search); - if(results == null) - return ""; - else - return decodeURIComponent(results[1].replace(/\+/g, " ")); -} - -BBClient.authorize = function(params){ - - if (!params.client){ - params = { - client: params - }; - } - - if (!params.client.redirect_uri){ - params.client.redirect_uri = relative(""); - } - - if (!params.client.redirect_uri.match(/:\/\//)){ - params.client.redirect_uri = relative(params.client.redirect_uri); - } - - var launch = getParameterByName("launch"); - if (launch){ - if (!params.client.scope.match(/launch:/)){ - params.client.scope += " launch:"+launch; - } - } - - var server = getParameterByName("iss"); - if (server){ - if (!params.server){ - params.server = server; - } - } - - providers(params.server, function(provider){ - - params.provider = provider; - - var state = Guid.newGuid(); - var client = params.client; - - if (params.provider.oauth2 == null) { - localStorage[state] = JSON.stringify(params); - window.location.href = client.redirect_uri + "#state="+state; - return; - } - - localStorage[state] = JSON.stringify(params); - - console.log("sending client reg", params.client); - - var redirect_to=params.provider.oauth2.authorize_uri + "?" + - "client_id="+client.client_id+"&"+ - "response_type=token&"+ - "scope="+client.scope+"&"+ - "redirect_uri="+client.redirect_uri+"&"+ - "state="+state; - - window.location.href = redirect_to; - }); -}; - - diff --git a/client/build-definitions.js b/client/build-definitions.js deleted file mode 100644 index 69431a62..00000000 --- a/client/build-definitions.js +++ /dev/null @@ -1,22 +0,0 @@ -var c = require('../vendor/conformance.json'); -var definitions = {}; -var camelCased = function(s){ - return s.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); -}; - -c.rest[0].resource.forEach(function(r){ - var params = []; - definitions[r.type] = { - params: params - }; - - r.searchParam.forEach(function(sp){ - params.push({ - name: camelCased(sp.name), - wireName: sp.name, - type: sp.type - }); - }); -}); - -module.exports = definitions; diff --git a/client/client.js b/client/client.js deleted file mode 100644 index fc6615f0..00000000 --- a/client/client.js +++ /dev/null @@ -1,364 +0,0 @@ -var btoa = require('btoa'); -var Search = require('./search'); -var $ = jQuery = require('./jquery'); - -module.exports = FhirClient; - -function absolute(id, server) { - if (id.match(/^http/)) return id; - if (id.match(/^urn/)) return id; - return server.serviceUrl + '/' + id; -} - -var regexpSpecialChars = /([\[\]\^\$\|\(\)\\\+\*\?\{\}\=\!])/gi; - -function relative(id, server) { - if (!id.match(/^http/)) { - id = server.serviceUrl + '/' + id - } - var quotedBase = ( server.serviceUrl + '/' ).replace(regexpSpecialChars, '\\$1'); - var matcher = new RegExp("^"+quotedBase + "([^/]+)/([^/]+)(?:/_history/(.*))?$"); - var match = id.match(matcher); - if (match === null) { - throw "Couldn't determine a relative URI for " + id; - } - - var params = { - resource: match[1], - id: match[2], - version: match[3] - }; - - return params; -} - -function ClientPrototype(){}; -var clientUtils = require('./utils'); -Object.keys(clientUtils).forEach(function(k){ - ClientPrototype.prototype[k] = clientUtils[k]; -}); - -function FhirClient(p) { - // p.serviceUrl - // p.auth { - // type: 'none' | 'basic' | 'bearer' - // basic --> username, password - // bearer --> token - // } - - var cache = {}; - var client = new ClientPrototype(); - - var server = client.server = { - serviceUrl: p.serviceUrl, - auth: p.auth - } - - client.patientId = p.patientId; - client.practitionerId = p.practitionerId; - - client.cache = { - get: function(p) { - var url = absolute(typeof p === 'string' ? p : (p.resource + '/'+p.id), server); - if (url in cache) { - return getLocal(url); - } - return null; - } - }; - - - server.auth = server.auth || { - type: 'none' - }; - - if (!client.server.serviceUrl || !client.server.serviceUrl.match(/https?:\/\/.+[^\/]$/)) { - throw "Must supply a `server` propery whose `serviceUrl` begins with http(s) " + - "and does NOT include a trailing slash. E.g. `https://fhir.aws.af.cm/fhir`"; - } - - client.indexResource = function(id, r) { - r.resourceId = relative(id, server); - var ret = [r]; - cache[absolute(id, server)] = r; - return ret; - }; - - client.indexFeed = function(atomResult) { - var ret = []; - var feed = atomResult.feed || atomResult; - (feed.entry || []).forEach(function(e){ - var more = client.indexResource(e.id, e.content); - [].push.apply(ret, more); - }); - return ret; - }; - - client.authenticated = function(p) { - if (server.auth.type === 'none') { - return p; - } - - var h; - if (server.auth.type === 'basic') { - h = "Basic " + btoa(server.auth.username + ":" + server.auth.password); - } else if (server.auth.type === 'bearer') { - h = "Bearer " + server.auth.token; - } - if (!p.headers) {p.headers = {};} - p.headers['Authorization'] = h - //p.beforeSend = function (xhr) { xhr.setRequestHeader ("Authorization", h); } - - return p; - }; - - function handleReference(p){ - return function(from, to) { - - // Resolve any of the following: - // 1. contained resource - // 2. already-fetched resource - // 3. not-yet-fetched resource - - if (to.reference === undefined) { - throw "Can't follow a non-reference: " + to; - } - - if (to.reference.match(/^#/)) { - return p.contained(from, to.reference.slice(1)); - } - - var url = absolute(to.reference, server); - if (url in cache) { - return p.local(url); - } - - if (!p.remote) { - throw "Can't look up unfetched resource " + url; - } - - return p.remote(url); - } - }; - - client.cachedLink = handleReference({ - contained: getContained, - local: getLocal - }); - - client.followLink = handleReference({ - contained: followContained, - local: followLocal, - remote: followRemote - }); - - function getContained(from, id) { - var matches = from.contained.filter(function(c){ - return c.id === id; - }); - if (matches.length !== 1) { - return null; - } - return matches[0]; - } - - function getLocal(url) { - return cache[url]; - } - - function followContained(from, id) { - var ret = new $.Deferred(); - var val = getContained(from, id); - setTimeout(function(){ - if (val === null) { - return ret.reject("No contained resource matches #"+id); - } - return ret.resolve(val); - }, 0); - return ret; - }; - - function followLocal(url) { - var ret = new $.Deferred(); - var val = getLocal(url); - setTimeout(function(){ - if (val === null) { - return ret.reject("No local resource matches #"+id); - } - return ret.resolve(val); - }, 0); - return ret; - }; - - function followRemote(url) { - var getParams = relative(url, server); - return client.get(getParams); - }; - - client.get = function(p) { - // p.resource, p.id, ?p.version, p.include - - var ret = new $.Deferred(); - var url = server.serviceUrl + '/' + p.resource + '/' + p.id; - - $.ajax(client.authenticated({ - type: 'GET', - url: url, - dataType: 'json' - })) - .done(function(data, status){ - var ids = client.indexResource(url, data); - if (ids.length !== 1) { - ret.reject("Didn't get exactly one result for " + url); - } - ret.resolve(ids[0]); - }) - .fail(function(){ - ret.reject("Could not fetch " + url, arguments); - }); - return ret; - }; - - client.urlFor = function(searchSpec){ - return client.server.serviceUrl+searchSpec.queryUrl(); - } - - client.search = function(searchSpec){ - // p.resource, p.count, p.searchTerms - var s = Search({ - client: client, - spec: searchSpec - }); - - return s.execute(); - } - - client.drain = function(searchSpec, batch){ - var d = $.Deferred(); - - if (batch === undefined){ - var db = []; - batch = function(vs) { - vs.forEach(function(v){ - db.push(v); - }); - } - } - - db = db || {}; - client.search(searchSpec) - .done(function drain(vs, cursor){ - batch(vs); - if (cursor.hasNext()){ - cursor.next().done(drain); - } else { - d.resolve(); - } - }); - return d.promise(); - }; - - var specs = require('./search-specification')({ - "search": client, - "drain": client - }); - - function patientPropertyName(searchSpec){ - var propertyName = null; - ['patient', 'subject'].forEach(function(pname){ - if (typeof searchSpec[pname] === 'function'){ - propertyName = pname; - } - }); - return propertyName; - } - - function withDefaultPatient(searchSpec){ - var propertyName = patientPropertyName(searchSpec); - if (propertyName !== null && client.patientId !== undefined){ - searchSpec = searchSpec[propertyName](specs.Patient._id(client.patientId)); - } else if (searchSpec.resourceName === 'Patient'){ - searchSpec = searchSpec._id(client.patientId); - } else { - searchSpec = null; - } - - return searchSpec; - } - - function getterFor(r){ - return function(id){ - - if (r.resourceName === 'Patient' && id === undefined){ - id = client.patientId - } - - return client.get({ - resource: r.resourceName, - id: id - }); - } - }; - - function writeTodo(){ - throw "Write functionality not implemented."; - }; - - client.context = {}; - - client.context.practitioner = { - 'read': function(){ - return client.api.Practitioner.read(client.practitionerId); - } - }; - - client.context.patient = { - 'read': function(){ - return client.api.Patient.read(client.practitionerId); - } - }; - - client.api = {}; - - // Create SearchSpec-specific handlers - // as properties on some target object - // e.g. target.Alert, target.Condition, etc. - function decorateWithApi(target, tweaks){ - - tweaks = tweaks || {filter:function(){return true;}}; - - Object.keys(specs).forEach(function(r){ - - if (!tweaks.filter(specs[r])){ - return; - } - - target[r] = { - read: getterFor(specs[r]), - post: writeTodo, - put: writeTodo, - delete: writeTodo, - drain: function(){ - return target[r].where.drain(); - }, - search: function(){ - return target[r].where.search(); - }, - where: specs[r] - }; - - if (tweaks.where){ - target[r].where = tweaks.where(target[r].where); - } - - }); - } - - decorateWithApi(client.api); - decorateWithApi(client.context.patient, { - filter: withDefaultPatient, - where: withDefaultPatient - }); - - return client; -} diff --git a/client/definitions.json b/client/definitions.json deleted file mode 100644 index 92f324dd..00000000 --- a/client/definitions.json +++ /dev/null @@ -1,4492 +0,0 @@ -{ - "Address": { - "edges": { - "city": { - "parser": "string" - }, - "country": { - "parser": "string" - }, - "line": { - "parser": "string" - }, - "period": { - "next": "Period" - }, - "state": { - "parser": "string" - }, - "text": { - "parser": "string" - }, - "use": { - "parser": "string" - }, - "zip": { - "parser": "string" - } - } - }, - "AdverseReaction": { - "edges": { - "contained": { - "next": "Resource" - }, - "didNotOccurFlag": { - "parser": "boolean" - }, - "exposure": { - "next": "AdverseReaction.exposure" - }, - "extension": { - "next": "Extension" - }, - "reactionDate": { - "parser": "date" - }, - "recorder": { - "next": "ResourceReference" - }, - "subject": { - "next": "ResourceReference" - }, - "symptom": { - "next": "AdverseReaction.symptom" - }, - "text": { - "next": "Narrative" - } - } - }, - "AdverseReaction.exposure": { - "edges": { - "causalityExpectation": { - "parser": "string" - }, - "exposureDate": { - "parser": "date" - }, - "exposureType": { - "parser": "string" - }, - "substance": { - "next": "ResourceReference" - } - } - }, - "AdverseReaction.symptom": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "severity": { - "parser": "string" - } - } - }, - "Alert": { - "edges": { - "author": { - "next": "ResourceReference" - }, - "category": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "note": { - "parser": "string" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "AllergyIntolerance": { - "edges": { - "contained": { - "next": "Resource" - }, - "criticality": { - "parser": "string" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "reaction": { - "next": "ResourceReference" - }, - "recordedDate": { - "parser": "date" - }, - "recorder": { - "next": "ResourceReference" - }, - "sensitivityTest": { - "next": "ResourceReference" - }, - "sensitivityType": { - "parser": "string" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "substance": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "Attachment": { - "edges": { - "contentType": { - "parser": "string" - }, - "data": { - "parser": "string" - }, - "hash": { - "parser": "string" - }, - "language": { - "parser": "string" - }, - "size": { - "parser": "integer" - }, - "title": { - "parser": "string" - }, - "url": { - "parser": "string" - } - } - }, - "CarePlan": { - "edges": { - "activity": { - "next": "CarePlan.activity" - }, - "concern": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "goal": { - "next": "CarePlan.goal" - }, - "identifier": { - "next": "Identifier" - }, - "modified": { - "parser": "date" - }, - "notes": { - "parser": "string" - }, - "participant": { - "next": "CarePlan.participant" - }, - "patient": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - }, - "status": { - "parser": "string" - }, - "text": { - "next": "Narrative" - } - } - }, - "CarePlan.activity": { - "edges": { - "actionTaken": { - "next": "ResourceReference" - }, - "category": { - "parser": "string" - }, - "code": { - "next": "CodeableConcept" - }, - "dailyAmount": { - "next": "Quantity" - }, - "details": { - "parser": "string" - }, - "location": { - "next": "ResourceReference" - }, - "notes": { - "parser": "string" - }, - "performer": { - "next": "ResourceReference" - }, - "product": { - "next": "ResourceReference" - }, - "prohibited": { - "parser": "boolean" - }, - "quantity": { - "next": "Quantity" - }, - "status": { - "parser": "string" - }, - "timingPeriod": { - "next": "Period" - }, - "timingSchedule": { - "next": "Schedule" - }, - "timingString": { - "parser": "string" - } - } - }, - "CarePlan.goal": { - "edges": { - "description": { - "parser": "string" - }, - "notes": { - "parser": "string" - }, - "status": { - "parser": "string" - } - } - }, - "CarePlan.participant": { - "edges": { - "member": { - "next": "ResourceReference" - }, - "role": { - "next": "CodeableConcept" - } - } - }, - "Choice": { - "edges": { - "code": { - "parser": "string" - }, - "isOrdered": { - "parser": "boolean" - }, - "option": { - "next": "Choice.option" - } - } - }, - "Choice.option": { - "edges": { - "code": { - "parser": "string" - }, - "display": { - "parser": "string" - } - } - }, - "CodeableConcept": { - "edges": { - "coding": { - "next": "Coding" - }, - "primary": { - "parser": "string" - }, - "text": { - "parser": "string" - } - } - }, - "Coding": { - "edges": { - "code": { - "parser": "string" - }, - "display": { - "parser": "string" - }, - "system": { - "parser": "string" - } - } - }, - "Condition": { - "edges": { - "abatementAge": { - "next": "Age" - }, - "abatementBoolean": { - "parser": "boolean" - }, - "abatementDate": { - "next": "date" - }, - "asserter": { - "next": "ResourceReference" - }, - "category": { - "next": "CodeableConcept" - }, - "certainty": { - "next": "CodeableConcept" - }, - "code": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "dateAsserted": { - "next": "date" - }, - "encounter": { - "next": "ResourceReference" - }, - "evidence": { - "next": "Condition.evidence" - }, - "extension": { - "next": "Extension" - }, - "location": { - "next": "Condition.location" - }, - "notes": { - "parser": "string" - }, - "onsetAge": { - "next": "Age" - }, - "onsetDate": { - "next": "date" - }, - "relatedItem": { - "next": "Condition.relatedItem" - }, - "severity": { - "next": "CodeableConcept" - }, - "stage": { - "next": "Condition.stage" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "Condition.evidence": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "detail": { - "next": "ResourceReference" - } - } - }, - "Condition.location": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "detail": { - "parser": "string" - } - } - }, - "Condition.relatedItem": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "target": { - "next": "ResourceReference" - }, - "type": { - "parser": "string" - } - } - }, - "Condition.stage": { - "edges": { - "assessment": { - "next": "ResourceReference" - }, - "summary": { - "next": "CodeableConcept" - } - } - }, - "Conformance": { - "edges": { - "acceptUnknown": { - "parser": "boolean" - }, - "contained": { - "next": "Resource" - }, - "date": { - "parser": "date" - }, - "description": { - "parser": "string" - }, - "document": { - "next": "Conformance.document" - }, - "experimental": { - "parser": "boolean" - }, - "extension": { - "next": "Extension" - }, - "fhirVersion": { - "parser": "string" - }, - "format": { - "parser": "string" - }, - "identifier": { - "parser": "string" - }, - "implementation": { - "next": "Conformance.implementation" - }, - "messaging": { - "next": "Conformance.messaging" - }, - "name": { - "parser": "string" - }, - "publisher": { - "parser": "string" - }, - "rest": { - "next": "Conformance.rest" - }, - "software": { - "next": "Conformance.software" - }, - "status": { - "parser": "string" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - }, - "version": { - "parser": "string" - } - } - }, - "Conformance.document": { - "edges": { - "documentation": { - "parser": "string" - }, - "mode": { - "parser": "string" - }, - "profile": { - "next": "ResourceReference" - } - } - }, - "Conformance.implementation": { - "edges": { - "description": { - "parser": "string" - }, - "url": { - "parser": "string" - } - } - }, - "Conformance.messaging": { - "edges": { - "documentation": { - "parser": "string" - }, - "endpoint": { - "parser": "string" - }, - "event": { - "next": "Conformance.messaging.event" - }, - "reliableCache": { - "parser": "integer" - } - } - }, - "Conformance.messaging.event": { - "edges": { - "code": { - "parser": "string" - }, - "documentation": { - "parser": "string" - }, - "focus": { - "parser": "string" - }, - "mode": { - "parser": "string" - }, - "protocol": { - "next": "Coding" - }, - "request": { - "next": "ResourceReference" - }, - "response": { - "next": "ResourceReference" - } - } - }, - "Conformance.rest": { - "edges": { - "batch": { - "parser": "boolean" - }, - "documentation": { - "parser": "string" - }, - "history": { - "parser": "boolean" - }, - "mode": { - "parser": "string" - }, - "query": { - "next": "Conformance.rest.query" - }, - "resource": { - "next": "Conformance.rest.resource" - }, - "security": { - "next": "Conformance.rest.security" - } - } - }, - "Conformance.rest.query": { - "edges": { - "documentation": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "parameter": { - "next": "Conformance.rest.resource.searchParam" - } - } - }, - "Conformance.rest.resource": { - "edges": { - "operation": { - "next": "Conformance.rest.resource.operation" - }, - "profile": { - "next": "ResourceReference" - }, - "readHistory": { - "parser": "boolean" - }, - "searchInclude": { - "parser": "string" - }, - "searchParam": { - "next": "Conformance.rest.resource.searchParam" - }, - "type": { - "parser": "string" - } - } - }, - "Conformance.rest.resource.operation": { - "edges": { - "code": { - "parser": "string" - }, - "documentation": { - "parser": "string" - } - } - }, - "Conformance.rest.resource.searchParam": { - "edges": { - "chain": { - "parser": "string" - }, - "documentation": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "source": { - "parser": "string" - }, - "target": { - "parser": "string" - }, - "type": { - "parser": "string" - }, - "xpath": { - "parser": "string" - } - } - }, - "Conformance.rest.security": { - "edges": { - "certificate": { - "next": "Conformance.rest.security.certificate" - }, - "description": { - "parser": "string" - }, - "service": { - "next": "CodeableConcept" - } - } - }, - "Conformance.rest.security.certificate": { - "edges": { - "blob": { - "parser": "string" - }, - "type": { - "parser": "string" - } - } - }, - "Conformance.software": { - "edges": { - "name": { - "parser": "string" - }, - "releaseDate": { - "parser": "date" - }, - "version": { - "parser": "string" - } - } - }, - "Contact": { - "edges": { - "period": { - "next": "Period" - }, - "system": { - "parser": "string" - }, - "use": { - "parser": "string" - }, - "value": { - "parser": "string" - } - } - }, - "Coverage": { - "edges": { - "contained": { - "next": "Resource" - }, - "dependent": { - "parser": "integer" - }, - "extension": { - "next": "Extension" - }, - "group": { - "next": "Identifier" - }, - "identifier": { - "next": "Identifier" - }, - "issuer": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - }, - "plan": { - "next": "Identifier" - }, - "sequence": { - "parser": "integer" - }, - "subplan": { - "next": "Identifier" - }, - "subscriber": { - "next": "Coverage.subscriber" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "Coding" - } - } - }, - "Coverage.subscriber": { - "edges": { - "address": { - "next": "Address" - }, - "birthdate": { - "next": "date" - }, - "name": { - "next": "HumanName" - } - } - }, - "Device": { - "edges": { - "assignedId": { - "next": "Identifier" - }, - "contact": { - "next": "Contact" - }, - "contained": { - "next": "Resource" - }, - "expiry": { - "next": "date" - }, - "extension": { - "next": "Extension" - }, - "identity": { - "next": "Device.identity" - }, - "location": { - "next": "ResourceReference" - }, - "manufacturer": { - "parser": "string" - }, - "model": { - "parser": "string" - }, - "owner": { - "next": "ResourceReference" - }, - "patient": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - }, - "url": { - "parser": "string" - }, - "version": { - "parser": "string" - } - } - }, - "Device.identity": { - "edges": { - "gtin": { - "parser": "string" - }, - "lot": { - "parser": "string" - }, - "serialNumber": { - "parser": "string" - } - } - }, - "DeviceCapabilities": { - "edges": { - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "identity": { - "next": "ResourceReference" - }, - "manufacturer": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - }, - "virtualDevice": { - "next": "DeviceCapabilities.virtualDevice" - } - } - }, - "DeviceCapabilities.virtualDevice": { - "edges": { - "channel": { - "next": "DeviceCapabilities.virtualDevice.channel" - }, - "code": { - "next": "CodeableConcept" - } - } - }, - "DeviceCapabilities.virtualDevice.channel": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "metric": { - "next": "DeviceCapabilities.virtualDevice.channel.metric" - } - } - }, - "DeviceCapabilities.virtualDevice.channel.metric": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "facet": { - "next": "DeviceCapabilities.virtualDevice.channel.metric.facet" - }, - "info": { - "next": "DeviceCapabilities.virtualDevice.channel.metric.info" - }, - "key": { - "parser": "string" - } - } - }, - "DeviceCapabilities.virtualDevice.channel.metric.facet": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "info": { - "next": "DeviceCapabilities.virtualDevice.channel.metric.info" - }, - "key": { - "parser": "string" - }, - "scale": { - "parser": "float" - } - } - }, - "DeviceCapabilities.virtualDevice.channel.metric.info": { - "edges": { - "system": { - "parser": "string" - }, - "template": { - "next": "SampledData" - }, - "type": { - "parser": "string" - }, - "ucum": { - "parser": "string" - }, - "units": { - "parser": "string" - } - } - }, - "DeviceLog": { - "edges": { - "capabilities": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "instant": { - "parser": "date" - }, - "item": { - "next": "DeviceLog.item" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "DeviceLog.item": { - "edges": { - "flag": { - "parser": "string" - }, - "key": { - "parser": "string" - }, - "value": { - "parser": "string" - } - } - }, - "DeviceObservation": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "device": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "issued": { - "parser": "date" - }, - "measurement": { - "next": "ResourceReference" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "DiagnosticOrder": { - "edges": { - "clinicalNotes": { - "parser": "string" - }, - "contained": { - "next": "Resource" - }, - "encounter": { - "next": "ResourceReference" - }, - "event": { - "next": "DiagnosticOrder.event" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "item": { - "next": "DiagnosticOrder.item" - }, - "orderer": { - "next": "ResourceReference" - }, - "priority": { - "parser": "string" - }, - "specimen": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "DiagnosticOrder.event": { - "edges": { - "actor": { - "next": "ResourceReference" - }, - "date": { - "parser": "date" - }, - "status": { - "parser": "string" - } - } - }, - "DiagnosticOrder.item": { - "edges": { - "bodySite": { - "next": "CodeableConcept" - }, - "code": { - "next": "CodeableConcept" - }, - "event": { - "next": "DiagnosticOrder.event" - }, - "specimen": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - } - } - }, - "DiagnosticReport": { - "edges": { - "codedDiagnosis": { - "next": "CodeableConcept" - }, - "conclusion": { - "parser": "string" - }, - "contained": { - "next": "Resource" - }, - "diagnosticTime": { - "parser": "date" - }, - "extension": { - "next": "Extension" - }, - "image": { - "next": "ResourceReference" - }, - "issued": { - "parser": "date" - }, - "performer": { - "next": "ResourceReference" - }, - "reportId": { - "next": "Identifier" - }, - "representation": { - "next": "Attachment" - }, - "requestDetail": { - "next": "DiagnosticReport.requestDetail" - }, - "results": { - "next": "DiagnosticReport.results" - }, - "serviceCategory": { - "next": "CodeableConcept" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "DiagnosticReport.requestDetail": { - "edges": { - "bodySite": { - "next": "CodeableConcept" - }, - "clinicalInfo": { - "parser": "string" - }, - "encounter": { - "next": "ResourceReference" - }, - "receiverOrderId": { - "next": "Identifier" - }, - "requestOrderId": { - "next": "Identifier" - }, - "requestTest": { - "next": "CodeableConcept" - }, - "requester": { - "next": "ResourceReference" - } - } - }, - "DiagnosticReport.results": { - "edges": { - "group": { - "next": "DiagnosticReport.results" - }, - "name": { - "next": "CodeableConcept" - }, - "result": { - "next": "ResourceReference" - }, - "specimen": { - "next": "ResourceReference" - } - } - }, - "Document": { - "edges": { - "attester": { - "next": "Document.attester" - }, - "author": { - "next": "ResourceReference" - }, - "confidentiality": { - "next": "Coding" - }, - "contained": { - "next": "Resource" - }, - "created": { - "parser": "date" - }, - "custodian": { - "next": "ResourceReference" - }, - "encounter": { - "next": "ResourceReference" - }, - "event": { - "next": "Document.event" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "provenance": { - "next": "ResourceReference" - }, - "replaces": { - "parser": "string" - }, - "representation": { - "next": "Attachment" - }, - "section": { - "next": "Document.section" - }, - "status": { - "parser": "string" - }, - "stylesheet": { - "next": "Attachment" - }, - "subject": { - "next": "ResourceReference" - }, - "subtype": { - "next": "CodeableConcept" - }, - "text": { - "next": "Narrative" - }, - "title": { - "parser": "string" - }, - "type": { - "next": "CodeableConcept" - }, - "versionIdentifier": { - "next": "Identifier" - } - } - }, - "Document.attester": { - "edges": { - "mode": { - "parser": "string" - }, - "party": { - "next": "ResourceReference" - }, - "time": { - "parser": "date" - } - } - }, - "Document.event": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "detail": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - } - } - }, - "Document.section": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "content": { - "next": "ResourceReference" - }, - "section": { - "next": "Document.section" - }, - "subject": { - "next": "ResourceReference" - } - } - }, - "DocumentReference": { - "edges": { - "authenticator": { - "next": "ResourceReference" - }, - "author": { - "next": "ResourceReference" - }, - "confidentiality": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "context": { - "next": "DocumentReference.context" - }, - "created": { - "parser": "date" - }, - "custodian": { - "next": "ResourceReference" - }, - "description": { - "parser": "string" - }, - "docStatus": { - "next": "CodeableConcept" - }, - "extension": { - "next": "Extension" - }, - "format": { - "next": "CodeableConcept" - }, - "hash": { - "parser": "string" - }, - "identifier": { - "next": "Identifier" - }, - "indexed": { - "parser": "date" - }, - "location": { - "parser": "string" - }, - "masterIdentifier": { - "next": "Identifier" - }, - "mimeType": { - "parser": "string" - }, - "primaryLanguage": { - "parser": "string" - }, - "service": { - "next": "DocumentReference.service" - }, - "size": { - "parser": "integer" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "subtype": { - "next": "CodeableConcept" - }, - "supercedes": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "DocumentReference.context": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "facilityType": { - "next": "CodeableConcept" - }, - "period": { - "next": "Period" - } - } - }, - "DocumentReference.service": { - "edges": { - "address": { - "parser": "string" - }, - "parameter": { - "next": "DocumentReference.service.parameter" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "DocumentReference.service.parameter": { - "edges": { - "name": { - "parser": "string" - }, - "value": { - "parser": "string" - } - } - }, - "Encounter": { - "edges": { - "class": { - "parser": "string" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "fulfills": { - "next": "ResourceReference" - }, - "hospitalization": { - "next": "Encounter.hospitalization" - }, - "identifier": { - "next": "Identifier" - }, - "indication": { - "next": "ResourceReference" - }, - "length": { - "next": "Duration" - }, - "location": { - "next": "Encounter.location" - }, - "partOf": { - "next": "ResourceReference" - }, - "participant": { - "next": "Encounter.participant" - }, - "priority": { - "next": "CodeableConcept" - }, - "reasonCodeableConcept": { - "next": "CodeableConcept" - }, - "reasonString": { - "parser": "string" - }, - "serviceProvider": { - "next": "ResourceReference" - }, - "start": { - "parser": "date" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Encounter.hospitalization": { - "edges": { - "accomodation": { - "next": "Encounter.hospitalization.accomodation" - }, - "admitSource": { - "next": "CodeableConcept" - }, - "destination": { - "next": "ResourceReference" - }, - "diet": { - "next": "CodeableConcept" - }, - "dischargeDisposition": { - "next": "CodeableConcept" - }, - "origin": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - }, - "preAdmissionIdentifier": { - "next": "Identifier" - }, - "reAdmission": { - "parser": "boolean" - }, - "specialArrangement": { - "next": "CodeableConcept" - }, - "specialCourtesy": { - "next": "CodeableConcept" - } - } - }, - "Encounter.hospitalization.accomodation": { - "edges": { - "bed": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - } - } - }, - "Encounter.location": { - "edges": { - "location": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - } - } - }, - "Encounter.participant": { - "edges": { - "practitioner": { - "next": "ResourceReference" - }, - "type": { - "parser": "string" - } - } - }, - "Extension": { - "edges": { - "isModifier": { - "parser": "boolean" - }, - "url": { - "parser": "string" - }, - "value": { - "next": "Extension.value" - } - } - }, - "FamilyHistory": { - "edges": { - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "note": { - "parser": "string" - }, - "relation": { - "next": "FamilyHistory.relation" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "FamilyHistory.relation": { - "edges": { - "condition": { - "next": "FamilyHistory.relation.condition" - }, - "deceasedAge": { - "next": "Age" - }, - "deceasedBoolean": { - "parser": "boolean" - }, - "deceasedRange": { - "next": "Range" - }, - "deceasedString": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "note": { - "parser": "string" - }, - "relationship": { - "next": "CodeableConcept" - } - } - }, - "FamilyHistory.relation.condition": { - "edges": { - "note": { - "parser": "string" - }, - "onsetAge": { - "next": "Age" - }, - "onsetRange": { - "next": "Range" - }, - "onsetString": { - "parser": "string" - }, - "outcome": { - "next": "CodeableConcept" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Group": { - "edges": { - "actual": { - "parser": "boolean" - }, - "characteristic": { - "next": "Group.characteristic" - }, - "code": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "member": { - "next": "ResourceReference" - }, - "name": { - "parser": "string" - }, - "quantity": { - "parser": "integer" - }, - "text": { - "next": "Narrative" - }, - "type": { - "parser": "string" - } - } - }, - "Group.characteristic": { - "edges": { - "exclude": { - "parser": "boolean" - }, - "type": { - "next": "CodeableConcept" - }, - "valueBoolean": { - "parser": "boolean" - }, - "valueCodeableConcept": { - "next": "CodeableConcept" - }, - "valueQuantity": { - "next": "Quantity" - }, - "valueRange": { - "next": "Range" - }, - "valueString": { - "parser": "string" - } - } - }, - "HumanName": { - "edges": { - "family": { - "parser": "string" - }, - "given": { - "parser": "string" - }, - "period": { - "next": "Period" - }, - "prefix": { - "parser": "string" - }, - "suffix": { - "parser": "string" - }, - "text": { - "parser": "string" - }, - "use": { - "parser": "string" - } - } - }, - "Identifier": { - "edges": { - "assigner": { - "next": "ResourceReference" - }, - "key": { - "parser": "string" - }, - "label": { - "parser": "string" - }, - "period": { - "next": "Period" - }, - "system": { - "parser": "string" - }, - "use": { - "parser": "string" - } - } - }, - "ImagingStudy": { - "edges": { - "accessionNo": { - "next": "Identifier" - }, - "availability": { - "parser": "string" - }, - "clinicalInformation": { - "parser": "string" - }, - "contained": { - "next": "Resource" - }, - "dateTime": { - "parser": "date" - }, - "description": { - "parser": "string" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "interpreter": { - "next": "ResourceReference" - }, - "modality": { - "parser": "string" - }, - "numberOfInstances": { - "parser": "integer" - }, - "numberOfSeries": { - "parser": "integer" - }, - "procedure": { - "next": "Coding" - }, - "referrer": { - "next": "ResourceReference" - }, - "series": { - "next": "ImagingStudy.series" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "uid": { - "parser": "string" - }, - "url": { - "parser": "string" - } - } - }, - "ImagingStudy.series": { - "edges": { - "availability": { - "parser": "string" - }, - "bodySite": { - "next": "Coding" - }, - "dateTime": { - "parser": "date" - }, - "description": { - "parser": "string" - }, - "instance": { - "next": "ImagingStudy.series.instance" - }, - "modality": { - "parser": "string" - }, - "number": { - "parser": "integer" - }, - "numberOfInstances": { - "parser": "integer" - }, - "uid": { - "parser": "string" - }, - "url": { - "parser": "string" - } - } - }, - "ImagingStudy.series.instance": { - "edges": { - "attachment": { - "next": "ResourceReference" - }, - "number": { - "parser": "integer" - }, - "sopclass": { - "parser": "string" - }, - "title": { - "parser": "string" - }, - "type": { - "parser": "string" - }, - "uid": { - "parser": "string" - }, - "url": { - "parser": "string" - } - } - }, - "Immunization": { - "edges": { - "contained": { - "next": "Resource" - }, - "date": { - "parser": "date" - }, - "doseQuantity": { - "next": "Quantity" - }, - "expirationDate": { - "next": "date" - }, - "explanation": { - "next": "Immunization.explanation" - }, - "extension": { - "next": "Extension" - }, - "location": { - "next": "ResourceReference" - }, - "lotNumber": { - "parser": "string" - }, - "manufacturer": { - "next": "ResourceReference" - }, - "performer": { - "next": "ResourceReference" - }, - "reaction": { - "next": "Immunization.reaction" - }, - "refusedIndicator": { - "parser": "boolean" - }, - "reported": { - "parser": "boolean" - }, - "requester": { - "next": "ResourceReference" - }, - "route": { - "next": "CodeableConcept" - }, - "site": { - "next": "CodeableConcept" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "vaccinationProtocol": { - "next": "Immunization.vaccinationProtocol" - }, - "vaccineType": { - "next": "CodeableConcept" - } - } - }, - "Immunization.explanation": { - "edges": { - "reason": { - "next": "CodeableConcept" - }, - "refusalReason": { - "next": "CodeableConcept" - } - } - }, - "Immunization.reaction": { - "edges": { - "date": { - "parser": "date" - }, - "detail": { - "next": "ResourceReference" - }, - "reported": { - "parser": "boolean" - } - } - }, - "Immunization.vaccinationProtocol": { - "edges": { - "authority": { - "next": "ResourceReference" - }, - "description": { - "parser": "string" - }, - "doseSequence": { - "parser": "integer" - }, - "doseStatus": { - "next": "CodeableConcept" - }, - "doseStatusReason": { - "next": "CodeableConcept" - }, - "doseTarget": { - "next": "CodeableConcept" - }, - "series": { - "parser": "string" - }, - "seriesDoses": { - "parser": "integer" - } - } - }, - "ImmunizationProfile": { - "edges": { - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "recommendation": { - "next": "ImmunizationProfile.recommendation" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "ImmunizationProfile.recommendation": { - "edges": { - "dateCriterion": { - "next": "ImmunizationProfile.recommendation.dateCriterion" - }, - "doseNumber": { - "parser": "integer" - }, - "forecastStatus": { - "parser": "string" - }, - "protocol": { - "next": "ImmunizationProfile.recommendation.protocol" - }, - "recommendationDate": { - "parser": "date" - }, - "supportingAdverseEventReport": { - "next": "ImmunizationProfile.recommendation.supportingAdverseEventReport" - }, - "supportingImmunization": { - "next": "ResourceReference" - }, - "supportingPatientObservation": { - "next": "ResourceReference" - }, - "vaccineType": { - "next": "CodeableConcept" - } - } - }, - "ImmunizationProfile.recommendation.dateCriterion": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "value": { - "parser": "date" - } - } - }, - "ImmunizationProfile.recommendation.protocol": { - "edges": { - "authority": { - "next": "ResourceReference" - }, - "description": { - "parser": "string" - }, - "doseSequence": { - "parser": "integer" - }, - "series": { - "parser": "string" - } - } - }, - "ImmunizationProfile.recommendation.supportingAdverseEventReport": { - "edges": { - "identifier": { - "parser": "string" - }, - "reaction": { - "next": "ResourceReference" - }, - "reportDate": { - "parser": "date" - }, - "reportType": { - "next": "CodeableConcept" - }, - "text": { - "parser": "string" - } - } - }, - "List": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "date": { - "parser": "date" - }, - "emptyReason": { - "next": "CodeableConcept" - }, - "entry": { - "next": "List.entry" - }, - "extension": { - "next": "Extension" - }, - "mode": { - "parser": "string" - }, - "ordered": { - "parser": "boolean" - }, - "source": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "List.entry": { - "edges": { - "date": { - "parser": "date" - }, - "deleted": { - "parser": "boolean" - }, - "flag": { - "next": "CodeableConcept" - }, - "item": { - "next": "ResourceReference" - } - } - }, - "Location": { - "edges": { - "active": { - "parser": "boolean" - }, - "address": { - "next": "Address" - }, - "contained": { - "next": "Resource" - }, - "description": { - "parser": "string" - }, - "extension": { - "next": "Extension" - }, - "name": { - "parser": "string" - }, - "partOf": { - "next": "ResourceReference" - }, - "position": { - "next": "Location.position" - }, - "provider": { - "next": "ResourceReference" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Location.position": { - "edges": { - "altitude": { - "parser": "float" - }, - "latitude": { - "parser": "float" - }, - "longitude": { - "parser": "float" - } - } - }, - "Media": { - "edges": { - "contained": { - "next": "Resource" - }, - "content": { - "next": "Attachment" - }, - "dateTime": { - "parser": "date" - }, - "deviceName": { - "parser": "string" - }, - "extension": { - "next": "Extension" - }, - "frames": { - "parser": "integer" - }, - "height": { - "parser": "integer" - }, - "identifier": { - "next": "Identifier" - }, - "length": { - "parser": "integer" - }, - "operator": { - "next": "ResourceReference" - }, - "requester": { - "next": "ResourceReference" - }, - "subject": { - "next": "ResourceReference" - }, - "subtype": { - "next": "CodeableConcept" - }, - "text": { - "next": "Narrative" - }, - "type": { - "parser": "string" - }, - "view": { - "next": "CodeableConcept" - }, - "width": { - "parser": "integer" - } - } - }, - "Medication": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "isBrand": { - "parser": "boolean" - }, - "kind": { - "parser": "string" - }, - "manufacturer": { - "next": "ResourceReference" - }, - "name": { - "parser": "string" - }, - "package": { - "next": "Medication.package" - }, - "product": { - "next": "Medication.product" - }, - "text": { - "next": "Narrative" - } - } - }, - "Medication.package": { - "edges": { - "container": { - "next": "CodeableConcept" - }, - "content": { - "next": "Medication.package.content" - } - } - }, - "Medication.package.content": { - "edges": { - "amount": { - "next": "Quantity" - }, - "item": { - "next": "ResourceReference" - } - } - }, - "Medication.product": { - "edges": { - "form": { - "next": "CodeableConcept" - }, - "ingredient": { - "next": "Medication.product.ingredient" - } - } - }, - "Medication.product.ingredient": { - "edges": { - "amount": { - "next": "Ratio" - }, - "item": { - "next": "ResourceReference" - } - } - }, - "MedicationAdministration": { - "edges": { - "administrationDevice": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "dosage": { - "next": "MedicationAdministration.dosage" - }, - "encounter": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "medication": { - "next": "ResourceReference" - }, - "patient": { - "next": "ResourceReference" - }, - "practitioner": { - "next": "ResourceReference" - }, - "prescription": { - "next": "ResourceReference" - }, - "reasonNotGiven": { - "next": "CodeableConcept" - }, - "status": { - "parser": "string" - }, - "text": { - "next": "Narrative" - }, - "wasNotGiven": { - "parser": "boolean" - }, - "whenGiven": { - "next": "Period" - } - } - }, - "MedicationAdministration.dosage": { - "edges": { - "maxDosePerPeriod": { - "next": "Ratio" - }, - "method": { - "next": "CodeableConcept" - }, - "quantity": { - "next": "Quantity" - }, - "rate": { - "next": "Ratio" - }, - "route": { - "next": "CodeableConcept" - }, - "site": { - "next": "CodeableConcept" - }, - "timing": { - "next": "Schedule" - } - } - }, - "MedicationDispense": { - "edges": { - "authorizingPrescription": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "dispense": { - "next": "MedicationDispense.dispense" - }, - "dispenser": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "patient": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - }, - "substitution": { - "next": "MedicationDispense.substitution" - }, - "text": { - "next": "Narrative" - } - } - }, - "MedicationDispense.dispense": { - "edges": { - "destination": { - "next": "ResourceReference" - }, - "dosage": { - "next": "MedicationDispense.dispense.dosage" - }, - "identifier": { - "next": "Identifier" - }, - "medication": { - "next": "ResourceReference" - }, - "quantity": { - "next": "Quantity" - }, - "receiver": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - }, - "type": { - "next": "CodeableConcept" - }, - "whenHandedOver": { - "next": "Period" - }, - "whenPrepared": { - "next": "Period" - } - } - }, - "MedicationDispense.dispense.dosage": { - "edges": { - "additionalInstructionsCodeableConcept": { - "next": "CodeableConcept" - }, - "additionalInstructionsString": { - "parser": "string" - }, - "maxDosePerPeriod": { - "next": "Ratio" - }, - "method": { - "next": "CodeableConcept" - }, - "quantity": { - "next": "Quantity" - }, - "rate": { - "next": "Ratio" - }, - "route": { - "next": "CodeableConcept" - }, - "site": { - "next": "CodeableConcept" - }, - "timingDateTime": { - "parser": "date" - }, - "timingPeriod": { - "next": "Period" - }, - "timingSchedule": { - "next": "Schedule" - } - } - }, - "MedicationDispense.substitution": { - "edges": { - "reason": { - "next": "CodeableConcept" - }, - "responsibleParty": { - "next": "ResourceReference" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "MedicationPrescription": { - "edges": { - "contained": { - "next": "Resource" - }, - "dateWritten": { - "parser": "date" - }, - "dispense": { - "next": "MedicationPrescription.dispense" - }, - "dosageInstruction": { - "next": "MedicationPrescription.dosageInstruction" - }, - "encounter": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "medication": { - "next": "ResourceReference" - }, - "patient": { - "next": "ResourceReference" - }, - "prescriber": { - "next": "ResourceReference" - }, - "reasonForPrescribingCodeableConcept": { - "next": "CodeableConcept" - }, - "reasonForPrescribingString": { - "parser": "string" - }, - "status": { - "parser": "string" - }, - "substitution": { - "next": "MedicationPrescription.substitution" - }, - "text": { - "next": "Narrative" - } - } - }, - "MedicationPrescription.dispense": { - "edges": { - "expectedSupplyDuration": { - "next": "Duration" - }, - "medication": { - "next": "ResourceReference" - }, - "numberOfRepeatsAllowed": { - "parser": "integer" - }, - "quantity": { - "next": "Quantity" - }, - "validityPeriod": { - "next": "Period" - } - } - }, - "MedicationPrescription.dosageInstruction": { - "edges": { - "additionalInstructionsCodeableConcept": { - "next": "CodeableConcept" - }, - "additionalInstructionsString": { - "parser": "string" - }, - "dosageInstructionsText": { - "parser": "string" - }, - "doseQuantity": { - "next": "Quantity" - }, - "maxDosePerPeriod": { - "next": "Ratio" - }, - "method": { - "next": "CodeableConcept" - }, - "rate": { - "next": "Ratio" - }, - "route": { - "next": "CodeableConcept" - }, - "site": { - "next": "CodeableConcept" - }, - "timingDateTime": { - "parser": "date" - }, - "timingPeriod": { - "next": "Period" - }, - "timingSchedule": { - "next": "Schedule" - } - } - }, - "MedicationPrescription.substitution": { - "edges": { - "reason": { - "next": "CodeableConcept" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "MedicationStatement": { - "edges": { - "administrationDevice": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "dosage": { - "next": "MedicationStatement.dosage" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "medication": { - "next": "ResourceReference" - }, - "patient": { - "next": "ResourceReference" - }, - "reasonNotGiven": { - "next": "CodeableConcept" - }, - "text": { - "next": "Narrative" - }, - "wasNotGiven": { - "parser": "boolean" - }, - "whenGiven": { - "next": "Period" - } - } - }, - "MedicationStatement.dosage": { - "edges": { - "maxDosePerPeriod": { - "next": "Ratio" - }, - "method": { - "next": "CodeableConcept" - }, - "quantity": { - "next": "Quantity" - }, - "rate": { - "next": "Ratio" - }, - "route": { - "next": "CodeableConcept" - }, - "site": { - "next": "CodeableConcept" - }, - "timing": { - "next": "Schedule" - } - } - }, - "Message": { - "edges": { - "author": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "data": { - "next": "ResourceReference" - }, - "destination": { - "next": "Message.destination" - }, - "effective": { - "next": "Period" - }, - "enterer": { - "next": "ResourceReference" - }, - "event": { - "parser": "string" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "parser": "string" - }, - "reason": { - "next": "CodeableConcept" - }, - "receiver": { - "next": "ResourceReference" - }, - "response": { - "next": "Message.response" - }, - "responsible": { - "next": "ResourceReference" - }, - "source": { - "next": "Message.source" - }, - "text": { - "next": "Narrative" - }, - "timestamp": { - "parser": "date" - } - } - }, - "Message.destination": { - "edges": { - "endpoint": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "target": { - "next": "ResourceReference" - } - } - }, - "Message.response": { - "edges": { - "code": { - "parser": "string" - }, - "details": { - "next": "ResourceReference" - }, - "identifier": { - "parser": "string" - } - } - }, - "Message.source": { - "edges": { - "contact": { - "next": "Contact" - }, - "endpoint": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "software": { - "parser": "string" - }, - "version": { - "parser": "string" - } - } - }, - "Narrative": { - "edges": { - "div": { - "parser": "string" - }, - "status": { - "parser": "string" - } - } - }, - "Observation": { - "edges": { - "appliesDateTime": { - "parser": "date" - }, - "appliesPeriod": { - "next": "Period" - }, - "bodySite": { - "next": "CodeableConcept" - }, - "comments": { - "parser": "string" - }, - "component": { - "next": "Observation.component" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "interpretation": { - "next": "CodeableConcept" - }, - "issued": { - "parser": "date" - }, - "method": { - "next": "CodeableConcept" - }, - "name": { - "next": "CodeableConcept" - }, - "performer": { - "next": "ResourceReference" - }, - "referenceRange": { - "next": "Observation.referenceRange" - }, - "reliability": { - "parser": "string" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "valueAttachment": { - "next": "Attachment" - }, - "valueChoice": { - "next": "Choice" - }, - "valueCodeableConcept": { - "next": "CodeableConcept" - }, - "valuePeriod": { - "next": "Period" - }, - "valueQuantity": { - "next": "Quantity" - }, - "valueRatio": { - "next": "Ratio" - }, - "valueSampledData": { - "next": "SampledData" - }, - "valueString": { - "parser": "string" - } - } - }, - "Observation.component": { - "edges": { - "name": { - "next": "CodeableConcept" - }, - "valueAttachment": { - "next": "Attachment" - }, - "valueChoice": { - "next": "Choice" - }, - "valueCodeableConcept": { - "next": "CodeableConcept" - }, - "valuePeriod": { - "next": "Period" - }, - "valueQuantity": { - "next": "Quantity" - }, - "valueRatio": { - "next": "Ratio" - }, - "valueSampledData": { - "next": "SampledData" - }, - "valueString": { - "parser": "string" - } - } - }, - "Observation.referenceRange": { - "edges": { - "meaning": { - "next": "CodeableConcept" - }, - "rangeQuantity": { - "next": "Quantity" - }, - "rangeRange": { - "next": "Range" - }, - "rangeString": { - "parser": "string" - } - } - }, - "OperationOutcome": { - "edges": { - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "issue": { - "next": "OperationOutcome.issue" - }, - "text": { - "next": "Narrative" - } - } - }, - "OperationOutcome.issue": { - "edges": { - "details": { - "parser": "string" - }, - "location": { - "parser": "string" - }, - "severity": { - "parser": "string" - }, - "type": { - "next": "Coding" - } - } - }, - "Order": { - "edges": { - "authority": { - "next": "ResourceReference" - }, - "contained": { - "next": "Resource" - }, - "date": { - "parser": "date" - }, - "detail": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "reason": { - "parser": "string" - }, - "source": { - "next": "ResourceReference" - }, - "subject": { - "next": "ResourceReference" - }, - "target": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "when": { - "next": "Order.when" - } - } - }, - "Order.when": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "schedule": { - "next": "Schedule" - } - } - }, - "OrderResponse": { - "edges": { - "authority": { - "next": "ResourceReference" - }, - "code": { - "parser": "string" - }, - "contained": { - "next": "Resource" - }, - "cost": { - "next": "Money" - }, - "date": { - "parser": "date" - }, - "description": { - "parser": "string" - }, - "extension": { - "next": "Extension" - }, - "fulfillment": { - "next": "ResourceReference" - }, - "request": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "who": { - "next": "ResourceReference" - } - } - }, - "Organization": { - "edges": { - "active": { - "parser": "boolean" - }, - "address": { - "next": "Address" - }, - "contact": { - "next": "Organization.contact" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "name": { - "parser": "string" - }, - "partOf": { - "next": "ResourceReference" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Organization.contact": { - "edges": { - "address": { - "next": "Address" - }, - "gender": { - "next": "CodeableConcept" - }, - "name": { - "next": "HumanName" - }, - "purpose": { - "next": "CodeableConcept" - }, - "telecom": { - "next": "Contact" - } - } - }, - "Other": { - "edges": { - "author": { - "next": "ResourceReference" - }, - "code": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "created": { - "next": "date" - }, - "extension": { - "next": "Extension" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "Patient": { - "edges": { - "active": { - "parser": "boolean" - }, - "address": { - "next": "Address" - }, - "animal": { - "next": "Patient.animal" - }, - "birthDate": { - "parser": "date" - }, - "communication": { - "next": "CodeableConcept" - }, - "contact": { - "next": "Patient.contact" - }, - "contained": { - "next": "Resource" - }, - "deceasedBoolean": { - "parser": "boolean" - }, - "deceasedDateTime": { - "parser": "date" - }, - "extension": { - "next": "Extension" - }, - "gender": { - "next": "CodeableConcept" - }, - "identifier": { - "next": "Identifier" - }, - "link": { - "next": "ResourceReference" - }, - "maritalStatus": { - "next": "CodeableConcept" - }, - "multipleBirthBoolean": { - "parser": "boolean" - }, - "multipleBirthInteger": { - "parser": "integer" - }, - "name": { - "next": "HumanName" - }, - "photo": { - "next": "Attachment" - }, - "provider": { - "next": "ResourceReference" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - } - } - }, - "Patient.animal": { - "edges": { - "breed": { - "next": "CodeableConcept" - }, - "genderStatus": { - "next": "CodeableConcept" - }, - "species": { - "next": "CodeableConcept" - } - } - }, - "Patient.contact": { - "edges": { - "address": { - "next": "Address" - }, - "gender": { - "next": "CodeableConcept" - }, - "name": { - "next": "HumanName" - }, - "organization": { - "next": "ResourceReference" - }, - "relationship": { - "next": "CodeableConcept" - }, - "telecom": { - "next": "Contact" - } - } - }, - "Period": { - "edges": { - "end": { - "parser": "date" - }, - "start": { - "parser": "date" - } - } - }, - "Practitioner": { - "edges": { - "address": { - "next": "Address" - }, - "birthDate": { - "parser": "date" - }, - "communication": { - "next": "CodeableConcept" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "gender": { - "next": "CodeableConcept" - }, - "identifier": { - "next": "Identifier" - }, - "name": { - "next": "HumanName" - }, - "organization": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - }, - "photo": { - "next": "Attachment" - }, - "qualification": { - "next": "Practitioner.qualification" - }, - "role": { - "next": "CodeableConcept" - }, - "specialty": { - "next": "CodeableConcept" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - } - } - }, - "Practitioner.qualification": { - "edges": { - "code": { - "next": "CodeableConcept" - }, - "issuer": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - } - } - }, - "Procedure": { - "edges": { - "bodySite": { - "next": "CodeableConcept" - }, - "complication": { - "parser": "string" - }, - "contained": { - "next": "Resource" - }, - "date": { - "next": "Period" - }, - "encounter": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "followUp": { - "parser": "string" - }, - "indication": { - "parser": "string" - }, - "notes": { - "parser": "string" - }, - "outcome": { - "parser": "string" - }, - "performer": { - "next": "Procedure.performer" - }, - "relatedItem": { - "next": "Procedure.relatedItem" - }, - "report": { - "next": "ResourceReference" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Procedure.performer": { - "edges": { - "person": { - "next": "ResourceReference" - }, - "role": { - "next": "CodeableConcept" - } - } - }, - "Procedure.relatedItem": { - "edges": { - "target": { - "next": "ResourceReference" - }, - "type": { - "parser": "string" - } - } - }, - "Profile": { - "edges": { - "binding": { - "next": "Profile.binding" - }, - "code": { - "next": "Coding" - }, - "contained": { - "next": "Resource" - }, - "date": { - "parser": "date" - }, - "description": { - "parser": "string" - }, - "experimental": { - "parser": "boolean" - }, - "extension": { - "next": "Extension" - }, - "extensionDefn": { - "next": "Profile.extensionDefn" - }, - "fhirVersion": { - "parser": "string" - }, - "identifier": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "publisher": { - "parser": "string" - }, - "status": { - "parser": "string" - }, - "structure": { - "next": "Profile.structure" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - }, - "version": { - "parser": "string" - } - } - }, - "Profile.binding": { - "edges": { - "conformance": { - "parser": "string" - }, - "description": { - "parser": "string" - }, - "isExtensible": { - "parser": "boolean" - }, - "name": { - "parser": "string" - }, - "referenceResourceReference": { - "next": "ResourceReference" - }, - "referenceUri": { - "parser": "string" - } - } - }, - "Profile.extensionDefn": { - "edges": { - "code": { - "parser": "string" - }, - "context": { - "parser": "string" - }, - "contextType": { - "parser": "string" - }, - "definition": { - "next": "Profile.structure.element.definition" - } - } - }, - "Profile.structure": { - "edges": { - "element": { - "next": "Profile.structure.element" - }, - "name": { - "parser": "string" - }, - "publish": { - "parser": "boolean" - }, - "purpose": { - "parser": "string" - }, - "type": { - "parser": "string" - } - } - }, - "Profile.structure.element": { - "edges": { - "definition": { - "next": "Profile.structure.element.definition" - }, - "name": { - "parser": "string" - }, - "path": { - "parser": "string" - }, - "slicing": { - "next": "Profile.structure.element.slicing" - } - } - }, - "Profile.structure.element.definition": { - "edges": { - "binding": { - "parser": "string" - }, - "comments": { - "parser": "string" - }, - "condition": { - "parser": "string" - }, - "constraint": { - "next": "Profile.structure.element.definition.constraint" - }, - "example": { - "next": "Profile.structure.element.definition.example" - }, - "formal": { - "parser": "string" - }, - "isModifier": { - "parser": "boolean" - }, - "mapping": { - "next": "Profile.structure.element.definition.mapping" - }, - "max": { - "parser": "string" - }, - "maxLength": { - "parser": "integer" - }, - "min": { - "parser": "integer" - }, - "mustSupport": { - "parser": "boolean" - }, - "nameReference": { - "parser": "string" - }, - "requirements": { - "parser": "string" - }, - "short": { - "parser": "string" - }, - "synonym": { - "parser": "string" - }, - "type": { - "next": "Profile.structure.element.definition.type" - }, - "value": { - "next": "Profile.structure.element.definition.value" - } - } - }, - "Profile.structure.element.definition.constraint": { - "edges": { - "human": { - "parser": "string" - }, - "key": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "ocl": { - "parser": "string" - }, - "severity": { - "parser": "string" - }, - "xpath": { - "parser": "string" - } - } - }, - "Profile.structure.element.definition.mapping": { - "edges": { - "map": { - "parser": "string" - }, - "target": { - "parser": "string" - } - } - }, - "Profile.structure.element.definition.type": { - "edges": { - "bundled": { - "parser": "boolean" - }, - "code": { - "parser": "string" - }, - "profile": { - "parser": "string" - } - } - }, - "Profile.structure.element.slicing": { - "edges": { - "discriminator": { - "parser": "string" - }, - "ordered": { - "parser": "boolean" - }, - "rules": { - "parser": "string" - } - } - }, - "Provenance": { - "edges": { - "agent": { - "next": "Provenance.agent" - }, - "contained": { - "next": "Resource" - }, - "entity": { - "next": "Provenance.entity" - }, - "extension": { - "next": "Extension" - }, - "location": { - "next": "ResourceReference" - }, - "period": { - "next": "Period" - }, - "policy": { - "parser": "string" - }, - "reason": { - "next": "CodeableConcept" - }, - "recorded": { - "parser": "date" - }, - "signature": { - "parser": "string" - }, - "target": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "Provenance.agent": { - "edges": { - "display": { - "parser": "string" - }, - "reference": { - "parser": "string" - }, - "role": { - "next": "Coding" - }, - "type": { - "next": "Coding" - } - } - }, - "Provenance.entity": { - "edges": { - "agent": { - "next": "Provenance.agent" - }, - "display": { - "parser": "string" - }, - "reference": { - "parser": "string" - }, - "role": { - "parser": "string" - }, - "type": { - "next": "Coding" - } - } - }, - "Quantity": { - "edges": { - "code": { - "parser": "string" - }, - "comparator": { - "parser": "string" - }, - "system": { - "parser": "string" - }, - "units": { - "parser": "string" - }, - "value": { - "parser": "float" - } - } - }, - "Query": { - "edges": { - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "parser": "string" - }, - "parameter": { - "next": "Extension" - }, - "response": { - "next": "Query.response" - }, - "text": { - "next": "Narrative" - } - } - }, - "Query.response": { - "edges": { - "first": { - "next": "Extension" - }, - "identifier": { - "parser": "string" - }, - "last": { - "next": "Extension" - }, - "next": { - "next": "Extension" - }, - "outcome": { - "parser": "string" - }, - "parameter": { - "next": "Extension" - }, - "previous": { - "next": "Extension" - }, - "reference": { - "next": "ResourceReference" - }, - "total": { - "parser": "integer" - } - } - }, - "Questionnaire": { - "edges": { - "author": { - "next": "ResourceReference" - }, - "authored": { - "parser": "date" - }, - "contained": { - "next": "Resource" - }, - "encounter": { - "next": "ResourceReference" - }, - "extension": { - "next": "Extension" - }, - "group": { - "next": "Questionnaire.group" - }, - "identifier": { - "next": "Identifier" - }, - "name": { - "next": "CodeableConcept" - }, - "question": { - "next": "Questionnaire.question" - }, - "source": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - } - } - }, - "Questionnaire.group": { - "edges": { - "group": { - "next": "Questionnaire.group" - }, - "header": { - "parser": "string" - }, - "name": { - "next": "CodeableConcept" - }, - "question": { - "next": "Questionnaire.question" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "parser": "string" - } - } - }, - "Questionnaire.question": { - "edges": { - "answerBoolean": { - "parser": "boolean" - }, - "answerDate": { - "next": "date" - }, - "answerDateTime": { - "parser": "date" - }, - "answerDecimal": { - "parser": "float" - }, - "answerInstant": { - "parser": "date" - }, - "answerInteger": { - "parser": "integer" - }, - "answerString": { - "parser": "string" - }, - "choice": { - "next": "Coding" - }, - "data": { - "next": "Questionnaire.question.data" - }, - "name": { - "next": "CodeableConcept" - }, - "optionsResourceReference": { - "next": "ResourceReference" - }, - "optionsUri": { - "parser": "string" - }, - "remarks": { - "parser": "string" - }, - "text": { - "parser": "string" - } - } - }, - "Range": { - "edges": { - "high": { - "next": "Quantity" - }, - "low": { - "next": "Quantity" - } - } - }, - "Ratio": { - "edges": { - "denominator": { - "next": "Quantity" - }, - "numerator": { - "next": "Quantity" - } - } - }, - "RelatedPerson": { - "edges": { - "address": { - "next": "Address" - }, - "contained": { - "next": "Resource" - }, - "extension": { - "next": "Extension" - }, - "gender": { - "next": "CodeableConcept" - }, - "identifier": { - "next": "Identifier" - }, - "name": { - "next": "HumanName" - }, - "patient": { - "next": "ResourceReference" - }, - "photo": { - "next": "Attachment" - }, - "relationship": { - "next": "CodeableConcept" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - } - } - }, - "ResourceReference": { - "edges": { - "display": { - "parser": "string" - }, - "reference": { - "parser": "string" - }, - "type": { - "parser": "string" - } - } - }, - "SampledData": { - "edges": { - "data": { - "parser": "string" - }, - "dimensions": { - "parser": "integer" - }, - "factor": { - "parser": "float" - }, - "lowerLimit": { - "parser": "float" - }, - "origin": { - "next": "Quantity" - }, - "period": { - "parser": "float" - }, - "upperLimit": { - "parser": "float" - } - } - }, - "Schedule": { - "edges": { - "event": { - "next": "Period" - }, - "repeat": { - "next": "Schedule.repeat" - } - } - }, - "Schedule.repeat": { - "edges": { - "count": { - "parser": "integer" - }, - "duration": { - "parser": "float" - }, - "end": { - "parser": "date" - }, - "frequency": { - "parser": "integer" - }, - "units": { - "parser": "string" - }, - "when": { - "parser": "string" - } - } - }, - "SecurityEvent": { - "edges": { - "contained": { - "next": "Resource" - }, - "event": { - "next": "SecurityEvent.event" - }, - "extension": { - "next": "Extension" - }, - "object": { - "next": "SecurityEvent.object" - }, - "participant": { - "next": "SecurityEvent.participant" - }, - "source": { - "next": "SecurityEvent.source" - }, - "text": { - "next": "Narrative" - } - } - }, - "SecurityEvent.event": { - "edges": { - "action": { - "parser": "string" - }, - "dateTime": { - "parser": "date" - }, - "outcome": { - "parser": "string" - }, - "outcomeDesc": { - "parser": "string" - }, - "subtype": { - "next": "CodeableConcept" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "SecurityEvent.object": { - "edges": { - "detail": { - "next": "SecurityEvent.object.detail" - }, - "identifier": { - "next": "Identifier" - }, - "lifecycle": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "query": { - "parser": "string" - }, - "reference": { - "next": "ResourceReference" - }, - "role": { - "parser": "string" - }, - "sensitivity": { - "next": "CodeableConcept" - }, - "type": { - "parser": "string" - } - } - }, - "SecurityEvent.object.detail": { - "edges": { - "type": { - "parser": "string" - }, - "value": { - "parser": "string" - } - } - }, - "SecurityEvent.participant": { - "edges": { - "authId": { - "parser": "string" - }, - "media": { - "next": "Coding" - }, - "name": { - "parser": "string" - }, - "network": { - "next": "SecurityEvent.participant.network" - }, - "reference": { - "next": "ResourceReference" - }, - "requestor": { - "parser": "boolean" - }, - "role": { - "next": "CodeableConcept" - }, - "userId": { - "parser": "string" - } - } - }, - "SecurityEvent.participant.network": { - "edges": { - "identifier": { - "parser": "string" - }, - "type": { - "parser": "string" - } - } - }, - "SecurityEvent.source": { - "edges": { - "identifier": { - "parser": "string" - }, - "site": { - "parser": "string" - }, - "type": { - "next": "Coding" - } - } - }, - "Specimen": { - "edges": { - "accessionIdentifier": { - "next": "Identifier" - }, - "collection": { - "next": "Specimen.collection" - }, - "contained": { - "next": "Resource" - }, - "container": { - "next": "Specimen.container" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "receivedTime": { - "parser": "date" - }, - "source": { - "next": "Specimen.source" - }, - "subject": { - "next": "ResourceReference" - }, - "text": { - "next": "Narrative" - }, - "treatment": { - "next": "Specimen.treatment" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Specimen.collection": { - "edges": { - "collectedTime": { - "parser": "date" - }, - "collector": { - "next": "ResourceReference" - }, - "comment": { - "parser": "string" - }, - "method": { - "next": "CodeableConcept" - }, - "quantity": { - "next": "Quantity" - }, - "sourceSite": { - "next": "CodeableConcept" - } - } - }, - "Specimen.container": { - "edges": { - "additive": { - "next": "ResourceReference" - }, - "capacity": { - "next": "Quantity" - }, - "description": { - "parser": "string" - }, - "identifier": { - "next": "Identifier" - }, - "specimenQuantity": { - "next": "Quantity" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Specimen.source": { - "edges": { - "relationship": { - "parser": "string" - }, - "target": { - "next": "ResourceReference" - } - } - }, - "Specimen.treatment": { - "edges": { - "additive": { - "next": "ResourceReference" - }, - "description": { - "parser": "string" - }, - "procedure": { - "next": "CodeableConcept" - } - } - }, - "Substance": { - "edges": { - "contained": { - "next": "Resource" - }, - "description": { - "parser": "string" - }, - "effectiveTime": { - "next": "Period" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "ingredient": { - "next": "ResourceReference" - }, - "name": { - "parser": "string" - }, - "quantity": { - "next": "Quantity" - }, - "quantityMode": { - "next": "CodeableConcept" - }, - "status": { - "next": "CodeableConcept" - }, - "text": { - "next": "Narrative" - }, - "type": { - "next": "CodeableConcept" - } - } - }, - "Supply": { - "edges": { - "contained": { - "next": "Resource" - }, - "dispense": { - "next": "Supply.dispense" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "next": "Identifier" - }, - "name": { - "next": "CodeableConcept" - }, - "orderedItem": { - "next": "ResourceReference" - }, - "patient": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - }, - "text": { - "next": "Narrative" - } - } - }, - "Supply.dispense": { - "edges": { - "destination": { - "next": "ResourceReference" - }, - "identifier": { - "next": "Identifier" - }, - "quantity": { - "next": "Quantity" - }, - "receiver": { - "next": "ResourceReference" - }, - "status": { - "parser": "string" - }, - "suppliedItem": { - "next": "ResourceReference" - }, - "supplier": { - "next": "ResourceReference" - }, - "type": { - "next": "CodeableConcept" - }, - "whenHandedOver": { - "next": "Period" - }, - "whenPrepared": { - "next": "Period" - } - } - }, - "ValueSet": { - "edges": { - "compose": { - "next": "ValueSet.compose" - }, - "contained": { - "next": "Resource" - }, - "copyright": { - "parser": "string" - }, - "date": { - "parser": "date" - }, - "define": { - "next": "ValueSet.define" - }, - "description": { - "parser": "string" - }, - "expansion": { - "next": "ValueSet.expansion" - }, - "experimental": { - "parser": "boolean" - }, - "extension": { - "next": "Extension" - }, - "identifier": { - "parser": "string" - }, - "name": { - "parser": "string" - }, - "publisher": { - "parser": "string" - }, - "status": { - "parser": "string" - }, - "telecom": { - "next": "Contact" - }, - "text": { - "next": "Narrative" - }, - "version": { - "parser": "string" - } - } - }, - "ValueSet.compose": { - "edges": { - "exclude": { - "next": "ValueSet.compose.include" - }, - "import": { - "parser": "string" - }, - "include": { - "next": "ValueSet.compose.include" - } - } - }, - "ValueSet.compose.include": { - "edges": { - "code": { - "parser": "string" - }, - "filter": { - "next": "ValueSet.compose.include.filter" - }, - "system": { - "parser": "string" - }, - "version": { - "parser": "string" - } - } - }, - "ValueSet.compose.include.filter": { - "edges": { - "op": { - "parser": "string" - }, - "property": { - "parser": "string" - }, - "value": { - "parser": "string" - } - } - }, - "ValueSet.define": { - "edges": { - "caseSensitive": { - "parser": "boolean" - }, - "concept": { - "next": "ValueSet.define.concept" - }, - "system": { - "parser": "string" - } - } - }, - "ValueSet.define.concept": { - "edges": { - "abstract": { - "parser": "boolean" - }, - "code": { - "parser": "string" - }, - "concept": { - "next": "ValueSet.define.concept" - }, - "definition": { - "parser": "string" - }, - "display": { - "parser": "string" - } - } - }, - "ValueSet.expansion": { - "edges": { - "contains": { - "next": "ValueSet.expansion.contains" - }, - "timestamp": { - "parser": "date" - } - } - }, - "ValueSet.expansion.contains": { - "edges": { - "code": { - "parser": "string" - }, - "contains": { - "next": "ValueSet.expansion.contains" - }, - "display": { - "parser": "string" - }, - "system": { - "parser": "string" - } - } - } -} diff --git a/client/entry.js b/client/entry.js deleted file mode 100644 index fda3a626..00000000 --- a/client/entry.js +++ /dev/null @@ -1,6 +0,0 @@ -window.FHIR = { - client: require('./client'), - query: require('./search-specification.js')(), - jQuery: require('./jquery'), - oauth2: require('./bb-client') -}; diff --git a/client/guid.js b/client/guid.js deleted file mode 100644 index f79049d6..00000000 --- a/client/guid.js +++ /dev/null @@ -1,36 +0,0 @@ -var EMPTY = '00000000-0000-0000-0000-000000000000'; - -var _padLeft = function (paddingString, width, replacementChar) { - return paddingString.length >= width ? paddingString : _padLeft(replacementChar + paddingString, width, replacementChar || ' '); -}; - -var _s4 = function (number) { - var hexadecimalResult = number.toString(16); - return _padLeft(hexadecimalResult, 4, '0'); -}; - -var _cryptoGuid = function () { - var buffer = new window.Uint16Array(8); - window.crypto.getRandomValues(buffer); - return [_s4(buffer[0]) + _s4(buffer[1]), _s4(buffer[2]), _s4(buffer[3]), _s4(buffer[4]), _s4(buffer[5]) + _s4(buffer[6]) + _s4(buffer[7])].join('-'); -}; - -var _guid = function () { - var currentDateMilliseconds = new Date().getTime(); - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (currentChar) { - var randomChar = (currentDateMilliseconds + Math.random() * 16) % 16 | 0; - currentDateMilliseconds = Math.floor(currentDateMilliseconds / 16); - return (currentChar === 'x' ? randomChar : (randomChar & 0x7 | 0x8)).toString(16); - }); -}; - -var create = function () { - var hasCrypto = typeof (window.crypto) != 'undefined', - hasRandomValues = hasCrypto && typeof (window.crypto.getRandomValues) != 'undefined'; - return (hasCrypto && hasRandomValues) ? _cryptoGuid() : _guid(); -}; - -module.exports = { - newGuid: create, - empty: EMPTY -}; diff --git a/client/jquery.js b/client/jquery.js deleted file mode 100644 index 314f0f27..00000000 --- a/client/jquery.js +++ /dev/null @@ -1,8 +0,0 @@ -var $ = require('jquery'); - -if (process.browser) { - module.exports = $; -} else { - var window = require('jsdom').jsdom().createWindow(); - module.exports = $(window); -} diff --git a/client/namespace.js b/client/namespace.js deleted file mode 100644 index 27b5c58b..00000000 --- a/client/namespace.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - any: 'special::any_namsace', - none: 'special::no_namespace', - loinc: 'http://loinc.org', - ucum: 'http://unitsofmeasure.org', - snomed: 'http://snomed.info/sct', - rxnorm: 'http://rxnav.nlm.nih.gov/REST/rxcui' -} diff --git a/client/search-specification.js b/client/search-specification.js deleted file mode 100644 index 64dd382c..00000000 --- a/client/search-specification.js +++ /dev/null @@ -1,304 +0,0 @@ -module.exports = function(mixins) { - mixins = mixins || {}; - - var specs = {}; - var util = require('util'); - var namespace = require('./namespace'); - var definitions = require('./build-definitions'); - - function defineSearchParam(resourceSpec, searchParam) { - Object.keys(searchParam.handlers).forEach(function(handlerName){ - - resourceSpec.prototype[handlerName] = function(){ - - var clause = searchParam.handlers[handlerName].apply( - searchParam, arguments - ); - return this.__addClause(clause); - - } - }); - } - - - function SearchSpecification(clauses){ - - if (clauses === undefined) { - clauses = []; - } - - this.resourceName = this.constructor.resourceName; - - this.__addClause = function(c){ - var newClauses = JSON.parse(JSON.stringify(clauses)); - if (!util.isArray(c)){ - c = [c]; - } - - [].push.apply(newClauses, c); - return new (this.constructor)(newClauses); - } - - this.__getClauses = function(){ - return clauses; - } - - this.__printClauses = function(){ - console.log(clauses); - } - - this.queryUrl = function(){ - return '/'+this.resourceName+'/_search'; - }; - - this.queryParams = function(){ - var clauses = this.__getClauses(); - var params = {}; - clauses.forEach(function(c){ - params[c.name] = params[c.name] || []; - if (c.oneOf !== undefined) { - var joined = c.oneOf.join(','); - params[c.name].push(joined); - } else { - params[c.name].push(c.value); - } - }); - return params; - } - - } - - defineSearchParam(SearchSpecification, new ReferenceSearchParam('_id')); - defineSearchParam(SearchSpecification, new SearchParam('_count', '_count', true)); - defineSearchParam(SearchSpecification, new SearchParam('_sortAsc', '_sort:asc', true)); - defineSearchParam(SearchSpecification, new SearchParam('_sortDesc', '_sort:desc', true)); - defineSearchParam(SearchSpecification, new SearchParam('_include', '_include', true)); - - - function SearchParam(name, wireName, onlyOneHandler){ - this.name = name; - this.wireName = wireName || name; - this.handlers = { }; - var that = this; - - this.handlers[name] = function(value){ - - if (util.isArray(value) || arguments.length > 1){ - throw "only expected one argument to " + name; - } - - return { - name: this.wireName, - value: value - }; - }; - - if (onlyOneHandler) { - return; - } - - var singleArgHandler = this.handlers[name]; - - this.handlers[name+'All'] = function(){ - var values = flatten(arguments); - return values.map(function(v){ - return { - name: this.wireName, - value: v - } - }, this); - }; - - this.handlers[name+'In'] = function(){ - var values = flatten(arguments); - return { - name: this.wireName, - oneOf: values - }; - }; - - this.handlers[name+'Missing'] = function(value){ - return { - name: this.wireName+':missing', - value: value === 'false' ? false : Boolean(value) - }; - }; - - function flatten(args){ - var values = []; - Array.prototype.slice.call(args, 0).forEach(function(arg){ - if (!util.isArray(arg)){ - arg = [arg]; - } - arg.forEach(function(arg){ - values.push(singleArgHandler.call(that, arg).value); - }); - }); - return values; - } - - } - - function ReferenceSearchParam(name){ - SearchParam.apply(this, arguments); - - this.handlers[name] = function(subSpec){ - var clauseName = this.wireName + ':' + subSpec.constructor.resourceName; - - if (typeof subSpec === 'string'){ - return { - name: this.wireName, - value: subSpec - }; - } - var clauses = subSpec.__getClauses(); - - var ret = clauses.map(function(clause){ - - var oneClause = { - name: clauseName + '.' + clause.name - }; - - if (clause.value) oneClause.value = clause.value; - if (clause.oneOf) oneClause.oneOf = clause.oneOf; - - if (clause.name == '_id') { - oneClause = { - name: clauseName, - value: clause.value - } - } - return oneClause - }); - - return ret; - }; - - }; - - ReferenceSearchParam.prototype = new SearchParam(); - ReferenceSearchParam.prototype.constructor = ReferenceSearchParam; - - function StringSearchParam(name){ - SearchParam.apply(this, arguments); - - this.handlers[name+'Exact'] = function(value){ - return { - name: this.wireName+':exact', - value: value - }; - }; - - }; - StringSearchParam.prototype = new SearchParam(); - StringSearchParam.prototype.constructor = StringSearchParam; - - function TokenSearchParam(name){ - SearchParam.apply(this, arguments); - - this.handlers[name] = function(ns, value){ - - var ret = { - name: this.wireName, - value: ns + '|'+ value - } - - if (value === undefined) { - ret.value = ns; - } - - if (ns === namespace.any) { - ret.value = value; - } - - if (ns === namespace.none) { - ret.value = '|'+value; - } - - return ret; - - }; - - this.handlers[name+'Text'] = function(value){ - return { - name: this.wireName, - value: value - }; - }; - - - - } - TokenSearchParam.prototype = new SearchParam(); - TokenSearchParam.prototype.constructor = TokenSearchParam; - - function DateSearchParam(name){ - SearchParam.apply(this, arguments); - } - DateSearchParam.prototype = new SearchParam(); - DateSearchParam.prototype.constructor = DateSearchParam; - - function NumberSearchParam(name){ - SearchParam.apply(this, arguments); - } - NumberSearchParam(); - NumberSearchParam.prototype.constructor = NumberSearchParam; - - function QuantitySearchParam(name){ - SearchParam.apply(this, arguments); - } - QuantitySearchParam.prototype = new SearchParam(); - QuantitySearchParam.prototype.constructor = QuantitySearchParam; - - function CompositeSearchParam(name){ - SearchParam.apply(this, arguments); - } - CompositeSearchParam.prototype = new SearchParam(); - CompositeSearchParam.prototype.constructor = CompositeSearchParam; - - - var paramTypes = { - string: StringSearchParam, - reference: ReferenceSearchParam, - token: TokenSearchParam, - number: NumberSearchParam, - quantity: QuantitySearchParam, - date: DateSearchParam, - composite: CompositeSearchParam - } - - Object.keys(definitions).forEach(function(tname){ - var params = definitions[tname].params; - - // Create a subclass of 'SearchSpecification' - // to track search parameters for each resource - // e.g. Patient knows about given name, family name, etc. - var resourceSpec = function(){ - SearchSpecification.apply(this, arguments); - }; - - resourceSpec.prototype = new SearchSpecification(); - resourceSpec.prototype.constructor = resourceSpec; - resourceSpec.resourceName = tname; - - params.forEach(function(p){ - defineSearchParam(resourceSpec, new paramTypes[p.type](p.name, p.wireName)); - }); - - specs[tname] = new resourceSpec(); - - }); - - - Object.keys(mixins).forEach(function(m){ - SearchSpecification.prototype[m] = function(){ - var args = Array.prototype.slice.call(arguments, 0); - args.unshift(this); - return mixins[m][m].apply(mixins[m], args); - }; - }); - - - return specs; - -}; diff --git a/client/search.js b/client/search.js deleted file mode 100644 index d37ab5f9..00000000 --- a/client/search.js +++ /dev/null @@ -1,88 +0,0 @@ -module.exports = Search; -var $ = jQuery = require('./jquery'); - -function Search(p) { - - var search = {}; - - search.client = p.client; - search.spec = p.spec; - search.count = p.count || 50; - - var nextPageUrl = null; - - function gotFeed(d){ - return function(data, status) { - - nextPageUrl = null; - var feed = data.feed || data; - - if(feed.link) { - var next = feed.link.filter(function(l){ - return l.rel === "next"; - }); - if (next.length === 1) { - nextPageUrl = next[0].href - } - } - - var results = search.client.indexFeed(data); - d.resolve(results, search); - } - }; - - function failedFeed(d){ - return function(failure){ - d.reject("Search failed.", arguments); - } - }; - - search.hasNext = function(){ - return nextPageUrl !== null; - }; - - search.next = function() { - - if (nextPageUrl === null) { - throw "Next page of search not available!"; - } - - var searchParams = { - type: 'GET', - url: nextPageUrl, - dataType: 'json', - traditional: true - }; - - var ret = new $.Deferred(); - console.log("Nexting", searchParams); - $.ajax(search.client.authenticated(searchParams)) - .done(gotFeed(ret)) - .fail(failedFeed(ret)); - - return ret; - }; - - search.execute = function() { - - - var searchParams = { - type: 'GET', - url: search.client.urlFor(search.spec), - data: search.spec.queryParams(), - dataType: "json", - traditional: true - }; - - var ret = new $.Deferred(); - - $.ajax(search.client.authenticated(searchParams)) - .done(gotFeed(ret)) - .fail(failedFeed(ret)); - - return ret; - }; - - return search; -} - diff --git a/client/utils.js b/client/utils.js deleted file mode 100644 index bf14beab..00000000 --- a/client/utils.js +++ /dev/null @@ -1,60 +0,0 @@ -var utils = module.exports = {}; - -utils.byCodes = function(observations, property){ - - var bank = utils.byCode(observations, property); - function byCodes(){ - var ret = []; - for (var i=0; i
+ + +## Installation + +### From NPM +```sh +npm i fhirclient +``` +### From CDN +Include it with a `script` tag from one of the following locations: + +From NPM Release: +- https://cdn.jsdelivr.net/npm/fhirclient/build/fhir-client.js +- https://cdn.jsdelivr.net/npm/fhirclient/build/fhir-client.min.js + +Latest development builds from GitHub: +- https://combinatronics.com/smart-on-fhir/client-js/master/dist/build/fhir-client.js +- https://combinatronics.com/smart-on-fhir/client-js/master/dist/build/fhir-client.min.js + + +## Browser Usage + +In the browser you typically have to create two separate pages that correspond to your +`launch_uri` (Launch Page) and `redirect_uri` (Index Page). + +### As Library + +```html + + + + + + + +``` + +### As Module +```js +import FHIR from "fhirclient" + +// Launch Page +FHIR.oauth2.authorize({ + "client_id": "my_web_app", + "scope": "patient/*.read" +}); + +// Index Page +FHIR.oauth2.ready() + .then(client => client.request("Patient")) + .then(console.log) + .catch(console.error); +``` + +## Server Usage +The server is fundamentally different environment than the browser but the +API is very similar. Here is a simple Express example: +```js +const fhirClient = require("fhirclient"); + +// This is what the EHR will call +app.get("/launch", (req, res) => { + fhirClient(req, res).authorize({ + "client_id": "my_web_app", + "scope": "patient/*.read" + }); +}); + +// This is what the Auth server will redirect to +app.get("/", (req, res) => { + fhirClient(req, res).ready() + .then(client => client.request("Patient")) + .then(res.json) + .catch(res.json); +}); +``` + + +### [Read the full documentation](http://docs.smarthealthit.org/client-js/). + +
+ +## License +Apache 2.0 + + diff --git a/dist/build/bundle.dev.html b/dist/build/bundle.dev.html new file mode 100644 index 00000000..ee5ad7da --- /dev/null +++ b/dist/build/bundle.dev.html @@ -0,0 +1,39 @@ + + + + + + fhirclient [27 Aug 2024 at 12:51] + + + + + + + + +
+ + + \ No newline at end of file diff --git a/dist/build/bundle.prod.html b/dist/build/bundle.prod.html new file mode 100644 index 00000000..60380cc1 --- /dev/null +++ b/dist/build/bundle.prod.html @@ -0,0 +1,39 @@ + + + + + + fhirclient [27 Aug 2024 at 12:52] + + + + + + + + +
+ + + \ No newline at end of file diff --git a/dist/build/bundle.pure.dev.html b/dist/build/bundle.pure.dev.html new file mode 100644 index 00000000..58b22330 --- /dev/null +++ b/dist/build/bundle.pure.dev.html @@ -0,0 +1,39 @@ + + + + + + fhirclient [27 Aug 2024 at 12:51] + + + + + + + + +
+ + + \ No newline at end of file diff --git a/dist/build/bundle.pure.prod.html b/dist/build/bundle.pure.prod.html new file mode 100644 index 00000000..64087d8f --- /dev/null +++ b/dist/build/bundle.pure.prod.html @@ -0,0 +1,39 @@ + + + + + + fhirclient [27 Aug 2024 at 12:51] + + + + + + + + +
+ + + \ No newline at end of file diff --git a/dist/build/fhir-client.js b/dist/build/fhir-client.js new file mode 100644 index 00000000..900a3fcb --- /dev/null +++ b/dist/build/fhir-client.js @@ -0,0 +1,19169 @@ +/******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js ***! + \*************************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (factory) { + true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : + __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : + 0; +})((function () { 'use strict'; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; + } + + function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get.bind(); + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + + return desc.value; + }; + } + + return _get.apply(this, arguments); + } + + var Emitter = /*#__PURE__*/function () { + function Emitter() { + _classCallCheck(this, Emitter); + + Object.defineProperty(this, 'listeners', { + value: {}, + writable: true, + configurable: true + }); + } + + _createClass(Emitter, [{ + key: "addEventListener", + value: function addEventListener(type, callback, options) { + if (!(type in this.listeners)) { + this.listeners[type] = []; + } + + this.listeners[type].push({ + callback: callback, + options: options + }); + } + }, { + key: "removeEventListener", + value: function removeEventListener(type, callback) { + if (!(type in this.listeners)) { + return; + } + + var stack = this.listeners[type]; + + for (var i = 0, l = stack.length; i < l; i++) { + if (stack[i].callback === callback) { + stack.splice(i, 1); + return; + } + } + } + }, { + key: "dispatchEvent", + value: function dispatchEvent(event) { + if (!(event.type in this.listeners)) { + return; + } + + var stack = this.listeners[event.type]; + var stackToCall = stack.slice(); + + for (var i = 0, l = stackToCall.length; i < l; i++) { + var listener = stackToCall[i]; + + try { + listener.callback.call(this, event); + } catch (e) { + Promise.resolve().then(function () { + throw e; + }); + } + + if (listener.options && listener.options.once) { + this.removeEventListener(event.type, listener.callback); + } + } + + return !event.defaultPrevented; + } + }]); + + return Emitter; + }(); + + var AbortSignal = /*#__PURE__*/function (_Emitter) { + _inherits(AbortSignal, _Emitter); + + var _super = _createSuper(AbortSignal); + + function AbortSignal() { + var _this; + + _classCallCheck(this, AbortSignal); + + _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent + // constructor has failed to run, then "this.listeners" will still be undefined and then we call + // the parent constructor directly instead as a workaround. For general details, see babel bug: + // https://github.com/babel/babel/issues/3041 + // This hack was added as a fix for the issue described here: + // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042 + + if (!_this.listeners) { + Emitter.call(_assertThisInitialized(_this)); + } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and + // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl + + + Object.defineProperty(_assertThisInitialized(_this), 'aborted', { + value: false, + writable: true, + configurable: true + }); + Object.defineProperty(_assertThisInitialized(_this), 'onabort', { + value: null, + writable: true, + configurable: true + }); + Object.defineProperty(_assertThisInitialized(_this), 'reason', { + value: undefined, + writable: true, + configurable: true + }); + return _this; + } + + _createClass(AbortSignal, [{ + key: "toString", + value: function toString() { + return '[object AbortSignal]'; + } + }, { + key: "dispatchEvent", + value: function dispatchEvent(event) { + if (event.type === 'abort') { + this.aborted = true; + + if (typeof this.onabort === 'function') { + this.onabort.call(this, event); + } + } + + _get(_getPrototypeOf(AbortSignal.prototype), "dispatchEvent", this).call(this, event); + } + }]); + + return AbortSignal; + }(Emitter); + var AbortController = /*#__PURE__*/function () { + function AbortController() { + _classCallCheck(this, AbortController); + + // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and + // we want Object.keys(new AbortController()) to be [] for compat with the native impl + Object.defineProperty(this, 'signal', { + value: new AbortSignal(), + writable: true, + configurable: true + }); + } + + _createClass(AbortController, [{ + key: "abort", + value: function abort(reason) { + var event; + + try { + event = new Event('abort'); + } catch (e) { + if (typeof document !== 'undefined') { + if (!document.createEvent) { + // For Internet Explorer 8: + event = document.createEventObject(); + event.type = 'abort'; + } else { + // For Internet Explorer 11: + event = document.createEvent('Event'); + event.initEvent('abort', false, false); + } + } else { + // Fallback where document isn't available: + event = { + type: 'abort', + bubbles: false, + cancelable: false + }; + } + } + + var signalReason = reason; + + if (signalReason === undefined) { + if (typeof document === 'undefined') { + signalReason = new Error('This operation was aborted'); + signalReason.name = 'AbortError'; + } else { + try { + signalReason = new DOMException('signal is aborted without reason'); + } catch (err) { + // IE 11 does not support calling the DOMException constructor, use a + // regular error object on it instead. + signalReason = new Error('This operation was aborted'); + signalReason.name = 'AbortError'; + } + } + } + + this.signal.reason = signalReason; + this.signal.dispatchEvent(event); + } + }, { + key: "toString", + value: function toString() { + return '[object AbortController]'; + } + }]); + + return AbortController; + }(); + + if (typeof Symbol !== 'undefined' && Symbol.toStringTag) { + // These are necessary to make sure that we get correct output for: + // Object.prototype.toString.call(new AbortController()) + AbortController.prototype[Symbol.toStringTag] = 'AbortController'; + AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal'; + } + + function polyfillNeeded(self) { + if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) { + console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill'); + return true; + } // Note that the "unfetch" minimal fetch polyfill defines fetch() without + // defining window.Request, and this polyfill need to work on top of unfetch + // so the below feature detection needs the !self.AbortController part. + // The Request.prototype check is also needed because Safari versions 11.1.2 + // up to and including 12.1.x has a window.AbortController present but still + // does NOT correctly implement abortable fetch: + // https://bugs.webkit.org/show_bug.cgi?id=174980#c2 + + + return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController; + } + + (function (self) { + + if (!polyfillNeeded(self)) { + return; + } + + self.AbortController = AbortController; + self.AbortSignal = AbortSignal; + })(typeof self !== 'undefined' ? self : __webpack_require__.g); + +})); + + +/***/ }), + +/***/ "./node_modules/debug/src/browser.js": +/*!*******************************************!*\ + !*** ./node_modules/debug/src/browser.js ***! + \*******************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.array.splice.js */ "./node_modules/core-js/modules/es.array.splice.js"); +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); +__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js"); +__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = function () { + var warned = false; + return function () { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +}(); + +/** + * Colors. + */ + +exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + var m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || + // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || + // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function (match) { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || function () {}; + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + var r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} +module.exports = __webpack_require__(/*! ./common */ "./node_modules/debug/src/common.js")(exports); +var formatters = module.exports.formatters; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + +/***/ }), + +/***/ "./node_modules/debug/src/common.js": +/*!******************************************!*\ + !*** ./node_modules/debug/src/common.js ***! + \******************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js")); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js"); +__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); +__webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); +__webpack_require__(/*! core-js/modules/es.array.splice.js */ "./node_modules/core-js/modules/es.array.splice.js"); +__webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js"); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ "./node_modules/core-js/modules/es.regexp.constructor.js"); +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); +__webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js"); +__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); +__webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(/*! ms */ "./node_modules/ms/index.js"); + createDebug.destroy = destroy; + Object.keys(env).forEach(function (key) { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + var hash = 0; + for (var i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + var prevTime; + var enableOverride = null; + var namespacesCache; + var enabledCache; + function debug() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + // Disabled? + if (!debug.enabled) { + return; + } + var self = debug; + + // Set `diff` timestamp + var curr = Number(new Date()); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + var formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + var val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + var logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: function get() { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: function set(v) { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + return debug; + } + function extend(namespace, delimiter) { + var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + var i; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + var namespaces = [].concat((0, _toConsumableArray2.default)(createDebug.names.map(toNamespace)), (0, _toConsumableArray2.default)(createDebug.skips.map(toNamespace).map(function (namespace) { + return '-' + namespace; + }))).join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + var i; + var len; + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + createDebug.enable(createDebug.load()); + return createDebug; +} +module.exports = setup; + +/***/ }), + +/***/ "./src/Client.ts": +/*!***********************!*\ + !*** ./src/Client.ts ***! + \***********************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js"); +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js")); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); +__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); +__webpack_require__(/*! core-js/modules/es.array.flat.js */ "./node_modules/core-js/modules/es.array.flat.js"); +__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); +__webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js"); +__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); +__webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); +__webpack_require__(/*! core-js/modules/es.array.sort.js */ "./node_modules/core-js/modules/es.array.sort.js"); +__webpack_require__(/*! core-js/modules/es.array.unscopables.flat.js */ "./node_modules/core-js/modules/es.array.unscopables.flat.js"); +__webpack_require__(/*! core-js/modules/es.object.assign.js */ "./node_modules/core-js/modules/es.object.assign.js"); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.promise.js */ "./node_modules/core-js/modules/es.promise.js"); +__webpack_require__(/*! core-js/modules/es.promise.finally.js */ "./node_modules/core-js/modules/es.promise.finally.js"); +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); +__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); +__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js"); +__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); +__webpack_require__(/*! core-js/modules/es.string.search.js */ "./node_modules/core-js/modules/es.string.search.js"); +__webpack_require__(/*! core-js/modules/es.string.trim.js */ "./node_modules/core-js/modules/es.string.trim.js"); +__webpack_require__(/*! core-js/modules/es.string.link.js */ "./node_modules/core-js/modules/es.string.link.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); +__webpack_require__(/*! core-js/modules/web.url.js */ "./node_modules/core-js/modules/web.url.js"); +__webpack_require__(/*! core-js/modules/web.url.to-json.js */ "./node_modules/core-js/modules/web.url.to-json.js"); +__webpack_require__(/*! core-js/modules/web.url-search-params.js */ "./node_modules/core-js/modules/web.url-search-params.js"); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); +var strings_1 = __webpack_require__(/*! ./strings */ "./src/strings.ts"); +var settings_1 = __webpack_require__(/*! ./settings */ "./src/settings.ts"); +// $lab:coverage:off$ +// @ts-ignore +var _ref = typeof FHIRCLIENT_PURE !== "undefined" ? window : __webpack_require__(/*! cross-fetch */ "./node_modules/cross-fetch/dist/browser-ponyfill.js"), + Response = _ref.Response; +// $lab:coverage:on$ +var debug = lib_1.debug.extend("client"); +/** + * Adds patient context to requestOptions object to be used with [[Client.request]] + * @param requestOptions Can be a string URL (relative to the serviceUrl), or an + * object which will be passed to fetch() + * @param client Current FHIR client object containing patient context + * @return requestOptions object contextualized to current patient + */ +function contextualize(_x, _x2) { + return _contextualize.apply(this, arguments); +} +/** + * Gets single reference by id. Caches the result. + * @param refId + * @param cache A map to store the resolved refs + * @param client The client instance + * @param requestOptions Only signal and headers are currently used if provided + * @returns The resolved reference + * @private + */ +function _contextualize() { + _contextualize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(requestOptions, client) { + var base, contextualURL, _contextualURL; + return _regenerator.default.wrap(function _callee9$(_context9) { + while (1) switch (_context9.prev = _context9.next) { + case 0: + _contextualURL = function _contextualURL3() { + _contextualURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(_url) { + var resourceType, conformance, searchParam; + return _regenerator.default.wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + resourceType = _url.pathname.split("/").pop(); + (0, lib_1.assert)(resourceType, "Invalid url \"".concat(_url, "\"")); + (0, lib_1.assert)(settings_1.patientCompartment.indexOf(resourceType) > -1, "Cannot filter \"".concat(resourceType, "\" resources by patient")); + _context8.next = 5; + return (0, lib_1.fetchConformanceStatement)(client.state.serverUrl); + case 5: + conformance = _context8.sent; + searchParam = (0, lib_1.getPatientParam)(conformance, resourceType); + _url.searchParams.set(searchParam, client.patient.id); + return _context8.abrupt("return", _url.href); + case 9: + case "end": + return _context8.stop(); + } + }, _callee8); + })); + return _contextualURL.apply(this, arguments); + }; + contextualURL = function _contextualURL2(_x9) { + return _contextualURL.apply(this, arguments); + }; + base = (0, lib_1.absolute)("/", client.state.serverUrl); + if (!(typeof requestOptions == "string" || requestOptions instanceof URL)) { + _context9.next = 8; + break; + } + _context9.next = 6; + return contextualURL(new URL(requestOptions + "", base)); + case 6: + _context9.t0 = _context9.sent; + return _context9.abrupt("return", { + url: _context9.t0 + }); + case 8: + _context9.next = 10; + return contextualURL(new URL(requestOptions.url + "", base)); + case 10: + requestOptions.url = _context9.sent; + return _context9.abrupt("return", requestOptions); + case 12: + case "end": + return _context9.stop(); + } + }, _callee9); + })); + return _contextualize.apply(this, arguments); +} +function getRef(refId, cache, client, requestOptions) { + if (!cache[refId]) { + var signal = requestOptions.signal, + headers = requestOptions.headers; + // Note that we set cache[refId] immediately! When the promise is + // settled it will be updated. This is to avoid a ref being fetched + // twice because some of these requests are executed in parallel. + cache[refId] = client.request({ + url: refId, + headers: headers, + signal: signal + }).then(function (res) { + cache[refId] = res; + return res; + }, function (error) { + delete cache[refId]; + throw error; + }); + } + return Promise.resolve(cache[refId]); +} +/** + * Resolves a reference in the given resource. + * @param obj FHIR Resource + */ +function resolveRef(obj, path, graph, cache, client, requestOptions) { + var node = (0, lib_1.getPath)(obj, path); + if (node) { + var isArray = Array.isArray(node); + return Promise.all((0, lib_1.makeArray)(node).filter(Boolean).map(function (item, i) { + var ref = item.reference; + if (ref) { + return getRef(ref, cache, client, requestOptions).then(function (sub) { + if (graph) { + if (isArray) { + if (path.indexOf("..") > -1) { + (0, lib_1.setPath)(obj, "".concat(path.replace("..", ".".concat(i, "."))), sub); + } else { + (0, lib_1.setPath)(obj, "".concat(path, ".").concat(i), sub); + } + } else { + (0, lib_1.setPath)(obj, path, sub); + } + } + }).catch(function (ex) { + /* ignore missing references */ + if (ex.status !== 404) { + throw ex; + } + }); + } + })); + } +} +/** + * Given a resource and a list of ref paths - resolves them all + * @param obj FHIR Resource + * @param fhirOptions The fhir options of the initiating request call + * @param cache A map to store fetched refs + * @param client The client instance + * @private + */ +function resolveRefs(obj, fhirOptions, cache, client, requestOptions) { + // 1. Sanitize paths, remove any invalid ones + var paths = (0, lib_1.makeArray)(fhirOptions.resolveReferences).filter(Boolean) // No false, 0, null, undefined or "" + .map(function (path) { + return String(path).trim(); + }).filter(Boolean); // No space-only strings + // 2. Remove duplicates + paths = paths.filter(function (p, i) { + var index = paths.indexOf(p, i + 1); + if (index > -1) { + debug("Duplicated reference path \"%s\"", p); + return false; + } + return true; + }); + // 3. Early exit if no valid paths are found + if (!paths.length) { + return Promise.resolve(); + } + // 4. Group the paths by depth so that child refs are looked up + // after their parents! + var groups = {}; + paths.forEach(function (path) { + var len = path.split(".").length; + if (!groups[len]) { + groups[len] = []; + } + groups[len].push(path); + }); + // 5. Execute groups sequentially! Paths within same group are + // fetched in parallel! + var task = Promise.resolve(); + Object.keys(groups).sort().forEach(function (len) { + var group = groups[len]; + task = task.then(function () { + return Promise.all(group.map(function (path) { + return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions); + })); + }); + }); + return task; +} +/** + * This is a FHIR client that is returned to you from the `ready()` call of the + * **SMART API**. You can also create it yourself if needed: + * + * ```js + * // BROWSER + * const client = FHIR.client("https://r4.smarthealthit.org"); + * + * // SERVER + * const client = smart(req, res).client("https://r4.smarthealthit.org"); + * ``` + */ +var Client = /*#__PURE__*/function () { + /** + * Validates the parameters, creates an instance and tries to connect it to + * FhirJS, if one is available globally. + */ + function Client(environment, state) { + var _this = this; + (0, _classCallCheck2.default)(this, Client); + /** + * @category Utility + */ + this.units = lib_1.units; + var _state = typeof state == "string" ? { + serverUrl: state + } : state; + // Valid serverUrl is required! + (0, lib_1.assert)(_state.serverUrl && _state.serverUrl.match(/https?:\/\/.+/), "A \"serverUrl\" option is required and must begin with \"http(s)\""); + this.state = _state; + this.environment = environment; + this._refreshTask = null; + var client = this; + // patient api --------------------------------------------------------- + this.patient = { + get id() { + return client.getPatientId(); + }, + read: function read(requestOptions) { + var id = _this.patient.id; + return id ? _this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: "Patient/".concat(id) + })) : Promise.reject(new Error("Patient is not available")); + }, + request: function request(requestOptions) { + var fhirOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (_this.patient.id) { + return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var options; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return contextualize(requestOptions, _this); + case 2: + options = _context.sent; + return _context.abrupt("return", _this.request(options, fhirOptions)); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + }))(); + } else { + return Promise.reject(new Error("Patient is not available")); + } + } + }; + // encounter api ------------------------------------------------------- + this.encounter = { + get id() { + return client.getEncounterId(); + }, + read: function read(requestOptions) { + var id = _this.encounter.id; + return id ? _this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: "Encounter/".concat(id) + })) : Promise.reject(new Error("Encounter is not available")); + } + }; + // user api ------------------------------------------------------------ + this.user = { + get fhirUser() { + return client.getFhirUser(); + }, + get id() { + return client.getUserId(); + }, + get resourceType() { + return client.getUserType(); + }, + read: function read(requestOptions) { + var fhirUser = _this.user.fhirUser; + return fhirUser ? _this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: fhirUser + })) : Promise.reject(new Error("User is not available")); + } + }; + // fhir.js api (attached automatically in browser) + // --------------------------------------------------------------------- + this.connect(environment.fhir); + } + /** + * This method is used to make the "link" between the `fhirclient` and the + * `fhir.js`, if one is available. + * **Note:** This is called by the constructor. If fhir.js is available in + * the global scope as `fhir`, it will automatically be linked to any [[Client]] + * instance. You should only use this method to connect to `fhir.js` which + * is not global. + */ + return (0, _createClass2.default)(Client, [{ + key: "connect", + value: function connect(fhirJs) { + if (typeof fhirJs == "function") { + var options = { + baseUrl: this.state.serverUrl.replace(/\/$/, "") + }; + var accessToken = this.getState("tokenResponse.access_token"); + if (accessToken) { + options.auth = { + token: accessToken + }; + } else { + var _this$state = this.state, + username = _this$state.username, + password = _this$state.password; + if (username && password) { + options.auth = { + user: username, + pass: password + }; + } + } + this.api = fhirJs(options); + var patientId = this.getState("tokenResponse.patient"); + if (patientId) { + this.patient.api = fhirJs(_objectSpread(_objectSpread({}, options), {}, { + patient: patientId + })); + } + } + return this; + } + /** + * Returns the ID of the selected patient or null. You should have requested + * "launch/patient" scope. Otherwise this will return null. + */ + }, { + key: "getPatientId", + value: function getPatientId() { + var tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + // We have been authorized against this server but we don't know + // the patient. This should be a scope issue. + if (!tokenResponse.patient) { + if (!(this.state.scope || "").match(/\blaunch(\/patient)?\b/)) { + debug(strings_1.default.noScopeForId, "patient", "patient"); + } else { + // The server should have returned the patient! + debug("The ID of the selected patient is not available. Please check if your server supports that."); + } + return null; + } + return tokenResponse.patient; + } + if (this.state.authorizeUri) { + debug(strings_1.default.noIfNoAuth, "the ID of the selected patient"); + } else { + debug(strings_1.default.noFreeContext, "selected patient"); + } + return null; + } + /** + * Returns the ID of the selected encounter or null. You should have + * requested "launch/encounter" scope. Otherwise this will return null. + * Note that not all servers support the "launch/encounter" scope so this + * will be null if they don't. + */ + }, { + key: "getEncounterId", + value: function getEncounterId() { + var tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + // We have been authorized against this server but we don't know + // the encounter. This should be a scope issue. + if (!tokenResponse.encounter) { + if (!(this.state.scope || "").match(/\blaunch(\/encounter)?\b/)) { + debug(strings_1.default.noScopeForId, "encounter", "encounter"); + } else { + // The server should have returned the encounter! + debug("The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters."); + } + return null; + } + return tokenResponse.encounter; + } + if (this.state.authorizeUri) { + debug(strings_1.default.noIfNoAuth, "the ID of the selected encounter"); + } else { + debug(strings_1.default.noFreeContext, "selected encounter"); + } + return null; + } + /** + * Returns the (decoded) id_token if any. You need to request "openid" and + * "profile" scopes if you need to receive an id_token (if you need to know + * who the logged-in user is). + */ + }, { + key: "getIdToken", + value: function getIdToken() { + var tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + var idToken = tokenResponse.id_token; + var scope = this.state.scope || ""; + // We have been authorized against this server but we don't have + // the id_token. This should be a scope issue. + if (!idToken) { + var hasOpenid = scope.match(/\bopenid\b/); + var hasProfile = scope.match(/\bprofile\b/); + var hasFhirUser = scope.match(/\bfhirUser\b/); + if (!hasOpenid || !(hasFhirUser || hasProfile)) { + debug("You are trying to get the id_token but you are not " + "using the right scopes. Please add 'openid' and " + "'fhirUser' or 'profile' to the scopes you are " + "requesting."); + } else { + // The server should have returned the id_token! + debug("The id_token is not available. Please check if your server supports that."); + } + return null; + } + return (0, lib_1.jwtDecode)(idToken, this.environment); + } + if (this.state.authorizeUri) { + debug(strings_1.default.noIfNoAuth, "the id_token"); + } else { + debug(strings_1.default.noFreeContext, "id_token"); + } + return null; + } + /** + * Returns the profile of the logged_in user (if any). This is a string + * having the following shape `"{user type}/{user id}"`. For example: + * `"Practitioner/abc"` or `"Patient/xyz"`. + */ + }, { + key: "getFhirUser", + value: function getFhirUser() { + var idToken = this.getIdToken(); + if (idToken) { + // Epic may return a full url + // @see https://github.com/smart-on-fhir/client-js/issues/105 + if (idToken.fhirUser) { + return idToken.fhirUser.split("/").slice(-2).join("/"); + } + return idToken.profile; + } + return null; + } + /** + * Returns the user ID or null. + */ + }, { + key: "getUserId", + value: function getUserId() { + var profile = this.getFhirUser(); + if (profile) { + return profile.split("/")[1]; + } + return null; + } + /** + * Returns the type of the logged-in user or null. The result can be + * "Practitioner", "Patient" or "RelatedPerson". + */ + }, { + key: "getUserType", + value: function getUserType() { + var profile = this.getFhirUser(); + if (profile) { + return profile.split("/")[0]; + } + return null; + } + /** + * Builds and returns the value of the `Authorization` header that can be + * sent to the FHIR server + */ + }, { + key: "getAuthorizationHeader", + value: function getAuthorizationHeader() { + var accessToken = this.getState("tokenResponse.access_token"); + if (accessToken) { + return "Bearer " + accessToken; + } + var _this$state2 = this.state, + username = _this$state2.username, + password = _this$state2.password; + if (username && password) { + return "Basic " + this.environment.btoa(username + ":" + password); + } + return null; + } + /** + * Used internally to clear the state of the instance and the state in the + * associated storage. + */ + }, { + key: "_clearState", + value: (function () { + var _clearState2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { + var storage, key; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + storage = this.environment.getStorage(); + _context2.next = 3; + return storage.get(settings_1.SMART_KEY); + case 3: + key = _context2.sent; + if (!key) { + _context2.next = 7; + break; + } + _context2.next = 7; + return storage.unset(key); + case 7: + _context2.next = 9; + return storage.unset(settings_1.SMART_KEY); + case 9: + this.state.tokenResponse = {}; + case 10: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function _clearState() { + return _clearState2.apply(this, arguments); + } + return _clearState; + }() + /** + * Creates a new resource in a server-assigned location + * @see http://hl7.org/fhir/http.html#create + * @param resource A FHIR resource to be created + * @param [requestOptions] Any options to be passed to the fetch call. + * Note that `method` and `body` will be ignored. + * @category Request + */ + ) + }, { + key: "create", + value: function create(resource, requestOptions) { + return this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: "".concat(resource.resourceType), + method: "POST", + body: JSON.stringify(resource), + headers: _objectSpread({ + // TODO: Do we need to alternate with "application/json+fhir"? + "content-type": "application/json" + }, (requestOptions || {}).headers) + })); + } + /** + * Creates a new current version for an existing resource or creates an + * initial version if no resource already exists for the given id. + * @see http://hl7.org/fhir/http.html#update + * @param resource A FHIR resource to be updated + * @param requestOptions Any options to be passed to the fetch call. + * Note that `method` and `body` will be ignored. + * @category Request + */ + }, { + key: "update", + value: function update(resource, requestOptions) { + return this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: "".concat(resource.resourceType, "/").concat(resource.id), + method: "PUT", + body: JSON.stringify(resource), + headers: _objectSpread({ + // TODO: Do we need to alternate with "application/json+fhir"? + "content-type": "application/json" + }, (requestOptions || {}).headers) + })); + } + /** + * Removes an existing resource. + * @see http://hl7.org/fhir/http.html#delete + * @param url Relative URI of the FHIR resource to be deleted + * (format: `resourceType/id`) + * @param requestOptions Any options (except `method` which will be fixed + * to `DELETE`) to be passed to the fetch call. + * @category Request + */ + }, { + key: "delete", + value: function _delete(url) { + var requestOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: url, + method: "DELETE" + })); + } + /** + * Makes a JSON Patch to the given resource + * @see http://hl7.org/fhir/http.html#patch + * @param url Relative URI of the FHIR resource to be patched + * (format: `resourceType/id`) + * @param patch A JSON Patch array to send to the server, For details + * see https://datatracker.ietf.org/doc/html/rfc6902 + * @param requestOptions Any options to be passed to the fetch call, + * except for `method`, `url` and `body` which cannot be overridden. + * @since 2.4.0 + * @category Request + * @typeParam ResolveType This method would typically resolve with the + * patched resource or reject with an OperationOutcome. However, this may + * depend on the server implementation or even on the request headers. + * For that reason, if the default resolve type (which is + * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass + * in your own resolve type parameter. + */ + }, { + key: "patch", + value: (function () { + var _patch2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(url, _patch) { + var requestOptions, + _args3 = arguments; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + requestOptions = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : {}; + (0, lib_1.assertJsonPatch)(_patch); + return _context3.abrupt("return", this.request(_objectSpread(_objectSpread({}, requestOptions), {}, { + url: url, + method: "PATCH", + body: JSON.stringify(_patch), + headers: _objectSpread({ + "prefer": "return=presentation", + "content-type": "application/json-patch+json; charset=UTF-8" + }, requestOptions.headers) + }))); + case 3: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function patch(_x3, _x4) { + return _patch2.apply(this, arguments); + } + return patch; + }() + /** + * @param requestOptions Can be a string URL (relative to the serviceUrl), + * or an object which will be passed to fetch() + * @param fhirOptions Additional options to control the behavior + * @param _resolvedRefs DO NOT USE! Used internally. + * @category Request + */ + ) + }, { + key: "request", + value: (function () { + var _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(requestOptions) { + var _this2 = this; + var fhirOptions, + _resolvedRefs, + _a, + debugRequest, + url, + options, + signal, + job, + response, + _args7 = arguments; + return _regenerator.default.wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + fhirOptions = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {}; + _resolvedRefs = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : {}; + debugRequest = lib_1.debug.extend("client:request"); + (0, lib_1.assert)(requestOptions, "request requires an url or request options as argument"); + // url ----------------------------------------------------------------- + + if (typeof requestOptions == "string" || requestOptions instanceof URL) { + url = String(requestOptions); + requestOptions = {}; + } else { + url = String(requestOptions.url); + } + url = (0, lib_1.absolute)(url, this.state.serverUrl); + options = { + graph: fhirOptions.graph !== false, + flat: !!fhirOptions.flat, + pageLimit: (_a = fhirOptions.pageLimit) !== null && _a !== void 0 ? _a : 1, + resolveReferences: fhirOptions.resolveReferences || [], + useRefreshToken: fhirOptions.useRefreshToken !== false, + onPage: typeof fhirOptions.onPage == "function" ? fhirOptions.onPage : undefined + }; + signal = requestOptions.signal || undefined; // Refresh the access token if needed + job = options.useRefreshToken ? this.refreshIfNeeded({ + signal: signal + }).then(function () { + return requestOptions; + }) : Promise.resolve(requestOptions); + return _context7.abrupt("return", job + // Add the Authorization header now, after the access token might + // have been updated + .then(function (requestOptions) { + var authHeader = _this2.getAuthorizationHeader(); + if (authHeader) { + requestOptions.headers = _objectSpread(_objectSpread({}, requestOptions.headers), {}, { + authorization: authHeader + }); + } + return requestOptions; + }) + // Make the request + .then(function (requestOptions) { + debugRequest("%s, options: %O, fhirOptions: %O", url, requestOptions, options); + return (0, lib_1.request)(url, requestOptions).then(function (result) { + if (requestOptions.includeResponse) { + response = result.response; + return result.body; + } + return result; + }); + }) + // Handle 401 ------------------------------------------------------ + .catch( /*#__PURE__*/function () { + var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(error) { + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + if (!(error.status == 401)) { + _context4.next = 15; + break; + } + if (_this2.getState("tokenResponse.access_token")) { + _context4.next = 4; + break; + } + error.message += "\nThis app cannot be accessed directly. Please launch it as SMART app!"; + throw error; + case 4: + if (options.useRefreshToken) { + _context4.next = 10; + break; + } + debugRequest("Your session has expired and the useRefreshToken option is set to false. Please re-launch the app."); + _context4.next = 8; + return _this2._clearState(); + case 8: + error.message += "\n" + strings_1.default.expired; + throw error; + case 10: + // In rare cases we may have a valid access token and a refresh + // token and the request might still fail with 401 just because + // the access token has just been revoked. + // otherwise -> auto-refresh failed. Session expired. + // Need to re-launch. Clear state to start over! + debugRequest("Auto-refresh failed! Please re-launch the app."); + _context4.next = 13; + return _this2._clearState(); + case 13: + error.message += "\n" + strings_1.default.expired; + throw error; + case 15: + throw error; + case 16: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return function (_x6) { + return _ref3.apply(this, arguments); + }; + }()) + // Handle 403 ------------------------------------------------------ + .catch(function (error) { + if (error.status == 403) { + debugRequest("Permission denied! Please make sure that you have requested the proper scopes."); + } + throw error; + }).then(function (data) { + // At this point we don't know what `data` actually is! + // We might get an empty or falsy result. If so return it as is + // Also handle raw responses + if (!data || typeof data == "string" || data instanceof Response) { + if (requestOptions.includeResponse) { + return { + body: data, + response: response + }; + } + return data; + } + // Resolve References ------------------------------------------ + return function () { + var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(_data) { + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + if (!(_data.resourceType == "Bundle")) { + _context5.next = 5; + break; + } + _context5.next = 3; + return Promise.all((_data.entry || []).map(function (item) { + return resolveRefs(item.resource, options, _resolvedRefs, _this2, requestOptions); + })); + case 3: + _context5.next = 7; + break; + case 5: + _context5.next = 7; + return resolveRefs(_data, options, _resolvedRefs, _this2, requestOptions); + case 7: + return _context5.abrupt("return", _data); + case 8: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + return function (_x7) { + return _ref4.apply(this, arguments); + }; + }()(data) + // Pagination ---------------------------------------------- + .then( /*#__PURE__*/function () { + var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(_data) { + var links, next, nextPage; + return _regenerator.default.wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + if (!(_data && _data.resourceType == "Bundle")) { + _context6.next = 19; + break; + } + links = _data.link || []; + if (options.flat) { + _data = (_data.entry || []).map(function (entry) { + return entry.resource; + }); + } + if (!options.onPage) { + _context6.next = 6; + break; + } + _context6.next = 6; + return options.onPage(_data, _objectSpread({}, _resolvedRefs)); + case 6: + if (! --options.pageLimit) { + _context6.next = 19; + break; + } + next = links.find(function (l) { + return l.relation == "next"; + }); + _data = (0, lib_1.makeArray)(_data); + if (!(next && next.url)) { + _context6.next = 19; + break; + } + _context6.next = 12; + return _this2.request({ + url: next.url, + // Aborting the main request (even after it is complete) + // must propagate to any child requests and abort them! + // To do so, just pass the same AbortSignal if one is + // provided. + signal: signal + }, options, _resolvedRefs); + case 12: + nextPage = _context6.sent; + if (!options.onPage) { + _context6.next = 15; + break; + } + return _context6.abrupt("return", null); + case 15: + if (!options.resolveReferences.length) { + _context6.next = 18; + break; + } + Object.assign(_resolvedRefs, nextPage.references); + return _context6.abrupt("return", _data.concat((0, lib_1.makeArray)(nextPage.data || nextPage))); + case 18: + return _context6.abrupt("return", _data.concat((0, lib_1.makeArray)(nextPage))); + case 19: + return _context6.abrupt("return", _data); + case 20: + case "end": + return _context6.stop(); + } + }, _callee6); + })); + return function (_x8) { + return _ref5.apply(this, arguments); + }; + }()) + // Finalize ------------------------------------------------ + .then(function (_data) { + if (options.graph) { + _resolvedRefs = {}; + } else if (!options.onPage && options.resolveReferences.length) { + return { + data: _data, + references: _resolvedRefs + }; + } + return _data; + }).then(function (_data) { + if (requestOptions.includeResponse) { + return { + body: _data, + response: response + }; + } + return _data; + }); + })); + case 10: + case "end": + return _context7.stop(); + } + }, _callee7, this); + })); + function request(_x5) { + return _request.apply(this, arguments); + } + return request; + }() + /** + * Checks if access token and refresh token are present. If they are, and if + * the access token is expired or is about to expire in the next 10 seconds, + * calls `this.refresh()` to obtain new access token. + * @param requestOptions Any options to pass to the fetch call. Most of them + * will be overridden, bit it might still be useful for passing additional + * request options or an abort signal. + * @category Request + */ + ) + }, { + key: "refreshIfNeeded", + value: function refreshIfNeeded() { + var requestOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var accessToken = this.getState("tokenResponse.access_token"); + var refreshToken = this.getState("tokenResponse.refresh_token"); + var expiresAt = this.state.expiresAt || 0; + if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) { + return this.refresh(requestOptions); + } + return Promise.resolve(this.state); + } + /** + * Use the refresh token to obtain new access token. If the refresh token is + * expired (or this fails for any other reason) it will be deleted from the + * state, so that we don't enter into loops trying to re-authorize. + * + * This method is typically called internally from [[request]] if + * certain request fails with 401. + * + * @param requestOptions Any options to pass to the fetch call. Most of them + * will be overridden, bit it might still be useful for passing additional + * request options or an abort signal. + * @category Request + */ + }, { + key: "refresh", + value: function refresh() { + var _this3 = this; + var requestOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _a, _b; + var debugRefresh = lib_1.debug.extend("client:refresh"); + debugRefresh("Attempting to refresh with refresh_token..."); + var refreshToken = (_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.tokenResponse) === null || _b === void 0 ? void 0 : _b.refresh_token; + (0, lib_1.assert)(refreshToken, "Unable to refresh. No refresh_token found."); + var tokenUri = this.state.tokenUri; + (0, lib_1.assert)(tokenUri, "Unable to refresh. No tokenUri found."); + var scopes = this.getState("tokenResponse.scope") || ""; + var hasOfflineAccess = scopes.search(/\boffline_access\b/) > -1; + var hasOnlineAccess = scopes.search(/\bonline_access\b/) > -1; + (0, lib_1.assert)(hasOfflineAccess || hasOnlineAccess, "Unable to refresh. No offline_access or online_access scope found."); + // This method is typically called internally from `request` if certain + // request fails with 401. However, clients will often run multiple + // requests in parallel which may result in multiple refresh calls. + // To avoid that, we keep a reference to the current refresh task (if any). + if (!this._refreshTask) { + var refreshRequestOptions = _objectSpread(_objectSpread({ + credentials: this.environment.options.refreshTokenWithCredentials || "same-origin" + }, requestOptions), {}, { + method: "POST", + mode: "cors", + headers: _objectSpread(_objectSpread({}, requestOptions.headers || {}), {}, { + "content-type": "application/x-www-form-urlencoded" + }), + body: "grant_type=refresh_token&refresh_token=".concat(encodeURIComponent(refreshToken)) + }); + // custom authorization header can be passed on manual calls + if (!("authorization" in refreshRequestOptions.headers)) { + var _this$state3 = this.state, + clientSecret = _this$state3.clientSecret, + clientId = _this$state3.clientId; + if (clientSecret) { + // @ts-ignore + refreshRequestOptions.headers.authorization = "Basic " + this.environment.btoa(clientId + ":" + clientSecret); + } + } + this._refreshTask = (0, lib_1.request)(tokenUri, refreshRequestOptions).then(function (data) { + (0, lib_1.assert)(data.access_token, "No access token received"); + debugRefresh("Received new access token response %O", data); + _this3.state.tokenResponse = _objectSpread(_objectSpread({}, _this3.state.tokenResponse), data); + _this3.state.expiresAt = (0, lib_1.getAccessTokenExpiration)(data, _this3.environment); + return _this3.state; + }).catch(function (error) { + var _a, _b; + if ((_b = (_a = _this3.state) === null || _a === void 0 ? void 0 : _a.tokenResponse) === null || _b === void 0 ? void 0 : _b.refresh_token) { + debugRefresh("Deleting the expired or invalid refresh token."); + delete _this3.state.tokenResponse.refresh_token; + } + throw error; + }).finally(function () { + _this3._refreshTask = null; + var key = _this3.state.key; + if (key) { + _this3.environment.getStorage().set(key, _this3.state); + } else { + debugRefresh("No 'key' found in Clint.state. Cannot persist the instance."); + } + }); + } + return this._refreshTask; + } + // utils ------------------------------------------------------------------- + /** + * Groups the observations by code. Returns a map that will look like: + * ```js + * const map = client.byCodes(observations, "code"); + * // map = { + * // "55284-4": [ observation1, observation2 ], + * // "6082-2": [ observation3 ] + * // } + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + }, { + key: "byCode", + value: function byCode(observations, property) { + return (0, lib_1.byCode)(observations, property); + } + /** + * First groups the observations by code using `byCode`. Then returns a function + * that accepts codes as arguments and will return a flat array of observations + * having that codes. Example: + * ```js + * const filter = client.byCodes(observations, "category"); + * filter("laboratory") // => [ observation1, observation2 ] + * filter("vital-signs") // => [ observation3 ] + * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + }, { + key: "byCodes", + value: function byCodes(observations, property) { + return (0, lib_1.byCodes)(observations, property); + } + /** + * Walks through an object (or array) and returns the value found at the + * provided path. This function is very simple so it intentionally does not + * support any argument polymorphism, meaning that the path can only be a + * dot-separated string. If the path is invalid returns undefined. + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + }, { + key: "getPath", + value: function getPath(obj) { + var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + return (0, lib_1.getPath)(obj, path); + } + /** + * Returns a copy of the client state. Accepts a dot-separated path argument + * (same as for `getPath`) to allow for selecting specific properties. + * Examples: + * ```js + * client.getState(); // -> the entire state object + * client.getState("serverUrl"); // -> the URL we are connected to + * client.getState("tokenResponse.patient"); // -> The selected patient ID (if any) + * ``` + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + */ + }, { + key: "getState", + value: function getState() { + var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + return (0, lib_1.getPath)(_objectSpread({}, this.state), path); + } + /** + * Returns a promise that will be resolved with the fhir version as defined + * in the CapabilityStatement. + */ + }, { + key: "getFhirVersion", + value: function getFhirVersion() { + return (0, lib_1.fetchConformanceStatement)(this.state.serverUrl).then(function (metadata) { + return metadata.fhirVersion; + }); + } + /** + * Returns a promise that will be resolved with the numeric fhir version + * - 2 for DSTU2 + * - 3 for STU3 + * - 4 for R4 + * - 0 if the version is not known + */ + }, { + key: "getFhirRelease", + value: function getFhirRelease() { + return this.getFhirVersion().then(function (v) { + var _a; + return (_a = settings_1.fhirVersions[v]) !== null && _a !== void 0 ? _a : 0; + }); + } + }]); +}(); +exports["default"] = Client; + +/***/ }), + +/***/ "./src/HttpError.ts": +/*!**************************!*\ + !*** ./src/HttpError.ts ***! + \**************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.reflect.construct.js */ "./node_modules/core-js/modules/es.reflect.construct.js"); +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js")); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); +__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js"); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); +var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js")); +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var HttpError = /*#__PURE__*/function (_Error) { + function HttpError(response) { + var _this; + (0, _classCallCheck2.default)(this, HttpError); + _this = _callSuper(this, HttpError, ["".concat(response.status, " ").concat(response.statusText, "\nURL: ").concat(response.url)]); + _this.name = "HttpError"; + _this.response = response; + _this.statusCode = response.status; + _this.status = response.status; + _this.statusText = response.statusText; + return _this; + } + (0, _inherits2.default)(HttpError, _Error); + return (0, _createClass2.default)(HttpError, [{ + key: "parse", + value: function () { + var _parse = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var type, body, _body; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (this.response.bodyUsed) { + _context.next = 19; + break; + } + _context.prev = 1; + type = this.response.headers.get("content-type") || "text/plain"; + if (!type.match(/\bjson\b/i)) { + _context.next = 10; + break; + } + _context.next = 6; + return this.response.json(); + case 6: + body = _context.sent; + if (body.error) { + this.message += "\n" + body.error; + if (body.error_description) { + this.message += ": " + body.error_description; + } + } else { + this.message += "\n\n" + JSON.stringify(body, null, 4); + } + _context.next = 15; + break; + case 10: + if (!type.match(/^text\//i)) { + _context.next = 15; + break; + } + _context.next = 13; + return this.response.text(); + case 13: + _body = _context.sent; + if (_body) { + this.message += "\n\n" + _body; + } + case 15: + _context.next = 19; + break; + case 17: + _context.prev = 17; + _context.t0 = _context["catch"](1); + case 19: + return _context.abrupt("return", this); + case 20: + case "end": + return _context.stop(); + } + }, _callee, this, [[1, 17]]); + })); + function parse() { + return _parse.apply(this, arguments); + } + return parse; + }() + }, { + key: "toJSON", + value: function toJSON() { + return { + name: this.name, + statusCode: this.statusCode, + status: this.status, + statusText: this.statusText, + message: this.message + }; + } + }]); +}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error)); +exports["default"] = HttpError; + +/***/ }), + +/***/ "./src/adapters/BrowserAdapter.ts": +/*!****************************************!*\ + !*** ./src/adapters/BrowserAdapter.ts ***! + \****************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); +__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js"); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); +__webpack_require__(/*! core-js/modules/web.url.js */ "./node_modules/core-js/modules/web.url.js"); +__webpack_require__(/*! core-js/modules/web.url.to-json.js */ "./node_modules/core-js/modules/web.url.to-json.js"); +__webpack_require__(/*! core-js/modules/web.url-search-params.js */ "./node_modules/core-js/modules/web.url-search-params.js"); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var smart_1 = __webpack_require__(/*! ../smart */ "./src/smart.ts"); +var Client_1 = __webpack_require__(/*! ../Client */ "./src/Client.ts"); +var BrowserStorage_1 = __webpack_require__(/*! ../storage/BrowserStorage */ "./src/storage/BrowserStorage.ts"); +var security = __webpack_require__(/*! ../security/browser */ "./src/security/browser.ts"); +var js_base64_1 = __webpack_require__(/*! js-base64 */ "./node_modules/js-base64/base64.js"); +/** + * Browser Adapter + */ +var BrowserAdapter = /*#__PURE__*/function () { + /** + * @param options Environment-specific options + */ + function BrowserAdapter() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + (0, _classCallCheck2.default)(this, BrowserAdapter); + /** + * Stores the URL instance associated with this adapter + */ + this._url = null; + /** + * Holds the Storage instance associated with this instance + */ + this._storage = null; + this.security = security; + this.options = _objectSpread({ + // Replaces the browser's current URL + // using window.history.replaceState API or by reloading. + replaceBrowserHistory: true, + // When set to true, this variable will fully utilize + // HTML5 sessionStorage API. + // This variable can be overridden to false by setting + // FHIR.oauth2.settings.fullSessionStorageSupport = false. + // When set to false, the sessionStorage will be keyed + // by a state variable. This is to allow the embedded IE browser + // instances instantiated on a single thread to continue to + // function without having sessionStorage data shared + // across the embedded IE instances. + fullSessionStorageSupport: true, + // Do we want to send cookies while making a request to the token + // endpoint in order to obtain new access token using existing + // refresh token. In rare cases the auth server might require the + // client to send cookies along with those requests. In this case + // developers will have to change this before initializing the app + // like so: + // `FHIR.oauth2.settings.refreshTokenWithCredentials = "include";` + // or + // `FHIR.oauth2.settings.refreshTokenWithCredentials = "same-origin";` + // Can be one of: + // "include" - always send cookies + // "same-origin" - only send cookies if we are on the same domain (default) + // "omit" - do not send cookies + refreshTokenWithCredentials: "same-origin" + }, options); + } + /** + * Given a relative path, returns an absolute url using the instance base URL + */ + return (0, _createClass2.default)(BrowserAdapter, [{ + key: "relative", + value: function relative(path) { + return new URL(path, this.getUrl().href).href; + } + /** + * In browsers we need to be able to (dynamically) check if fhir.js is + * included in the page. If it is, it should have created a "fhir" variable + * in the global scope. + */ + }, { + key: "fhir", + get: function get() { + // @ts-ignore + return typeof fhir === "function" ? fhir : null; + } + /** + * Given the current environment, this method must return the current url + * as URL instance + */ + }, { + key: "getUrl", + value: function getUrl() { + if (!this._url) { + this._url = new URL(location + ""); + } + return this._url; + } + /** + * Given the current environment, this method must redirect to the given + * path + */ + }, { + key: "redirect", + value: function redirect(to) { + location.href = to; + } + /** + * Returns a BrowserStorage object which is just a wrapper around + * sessionStorage + */ + }, { + key: "getStorage", + value: function getStorage() { + if (!this._storage) { + this._storage = new BrowserStorage_1.default(); + } + return this._storage; + } + /** + * Returns a reference to the AbortController constructor. In browsers, + * AbortController will always be available as global (native or polyfilled) + */ + }, { + key: "getAbortController", + value: function getAbortController() { + return AbortController; + } + /** + * ASCII string to Base64 + */ + }, { + key: "atob", + value: function atob(str) { + return window.atob(str); + } + /** + * Base64 to ASCII string + */ + }, { + key: "btoa", + value: function btoa(str) { + return window.btoa(str); + } + }, { + key: "base64urlencode", + value: function base64urlencode(input) { + if (typeof input == "string") { + return (0, js_base64_1.encodeURL)(input); + } + return (0, js_base64_1.fromUint8Array)(input, true); + } + }, { + key: "base64urldecode", + value: function base64urldecode(input) { + return (0, js_base64_1.decode)(input); + } + /** + * Creates and returns adapter-aware SMART api. Not that while the shape of + * the returned object is well known, the arguments to this function are not. + * Those who override this method are free to require any environment-specific + * arguments. For example in node we will need a request, a response and + * optionally a storage or storage factory function. + */ + }, { + key: "getSmartApi", + value: function getSmartApi() { + var _this = this; + return { + ready: function ready() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return (0, smart_1.ready).apply(void 0, [_this].concat(args)); + }, + authorize: function authorize(options) { + return (0, smart_1.authorize)(_this, options); + }, + init: function init(options) { + return (0, smart_1.init)(_this, options); + }, + client: function client(state) { + return new Client_1.default(_this, state); + }, + options: this.options, + utils: { + security: security + } + }; + } + }]); +}(); +exports["default"] = BrowserAdapter; + +/***/ }), + +/***/ "./src/entry/browser.ts": +/*!******************************!*\ + !*** ./src/entry/browser.ts ***! + \******************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +// In Browsers we create an adapter, get the SMART api from it and build the +// global FHIR object +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.promise.js */ "./node_modules/core-js/modules/es.promise.js"); +var BrowserAdapter_1 = __webpack_require__(/*! ../adapters/BrowserAdapter */ "./src/adapters/BrowserAdapter.ts"); +var adapter = new BrowserAdapter_1.default(); +var _adapter$getSmartApi = adapter.getSmartApi(), + ready = _adapter$getSmartApi.ready, + authorize = _adapter$getSmartApi.authorize, + init = _adapter$getSmartApi.init, + client = _adapter$getSmartApi.client, + options = _adapter$getSmartApi.options, + utils = _adapter$getSmartApi.utils; +// We have two kinds of browser builds - "pure" for new browsers and "legacy" +// for old ones. In pure builds we assume that the browser supports everything +// we need. In legacy mode, the library also acts as a polyfill. Babel will +// automatically polyfill everything except "fetch", which we have to handle +// manually. +// @ts-ignore +if (typeof FHIRCLIENT_PURE == "undefined") { + var fetch = __webpack_require__(/*! cross-fetch */ "./node_modules/cross-fetch/dist/browser-ponyfill.js"); + __webpack_require__(/*! abortcontroller-polyfill/dist/abortcontroller-polyfill-only */ "./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js"); + if (!window.fetch) { + window.fetch = fetch.default; + window.Headers = fetch.Headers; + window.Request = fetch.Request; + window.Response = fetch.Response; + } +} +// $lab:coverage:off$ +var FHIR = { + AbortController: window.AbortController, + client: client, + utils: utils, + oauth2: { + settings: options, + ready: ready, + authorize: authorize, + init: init + } +}; +module.exports = FHIR; +// $lab:coverage:on$ + +/***/ }), + +/***/ "./src/lib.ts": +/*!********************!*\ + !*** ./src/lib.ts ***! + \********************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +/* + * This file contains some shared functions. They are used by other modules, but + * are defined here so that tests can import this library and test them. + */ +__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js"); +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js")); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); +var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); +__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); +__webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js"); +__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); +__webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.promise.js */ "./node_modules/core-js/modules/es.promise.js"); +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); +__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js"); +__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); +__webpack_require__(/*! core-js/modules/es.string.trim.js */ "./node_modules/core-js/modules/es.string.trim.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); +var _excluded = ["includeResponse"]; +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.assertJsonPatch = exports.assert = exports.getTargetWindow = exports.getPatientParam = exports.byCodes = exports.byCode = exports.getAccessTokenExpiration = exports.getTimeInFuture = exports.jwtDecode = exports.randomString = exports.absolute = exports.makeArray = exports.setPath = exports.getPath = exports.fetchConformanceStatement = exports.getAndCache = exports.request = exports.loweCaseKeys = exports.responseToJSON = exports.checkResponse = exports.units = exports.debug = void 0; +var HttpError_1 = __webpack_require__(/*! ./HttpError */ "./src/HttpError.ts"); +var settings_1 = __webpack_require__(/*! ./settings */ "./src/settings.ts"); +var debug = __webpack_require__(/*! debug */ "./node_modules/debug/src/browser.js"); +// $lab:coverage:off$ +// @ts-ignore +var _ref = typeof FHIRCLIENT_PURE !== "undefined" ? window : __webpack_require__(/*! cross-fetch */ "./node_modules/cross-fetch/dist/browser-ponyfill.js"), + fetch = _ref.fetch; +// $lab:coverage:on$ +var _debug = debug("FHIR"); +exports.debug = _debug; +/** + * The cache for the `getAndCache` function + */ +var cache = {}; +/** + * A namespace with functions for converting between different measurement units + */ +exports.units = { + cm: function cm(_ref2) { + var code = _ref2.code, + value = _ref2.value; + ensureNumerical({ + code: code, + value: value + }); + if (code == "cm") return value; + if (code == "m") return value * 100; + if (code == "in") return value * 2.54; + if (code == "[in_us]") return value * 2.54; + if (code == "[in_i]") return value * 2.54; + if (code == "ft") return value * 30.48; + if (code == "[ft_us]") return value * 30.48; + throw new Error("Unrecognized length unit: " + code); + }, + kg: function kg(_ref3) { + var code = _ref3.code, + value = _ref3.value; + ensureNumerical({ + code: code, + value: value + }); + if (code == "kg") return value; + if (code == "g") return value / 1000; + if (code.match(/lb/)) return value / 2.20462; + if (code.match(/oz/)) return value / 35.274; + throw new Error("Unrecognized weight unit: " + code); + }, + any: function any(pq) { + ensureNumerical(pq); + return pq.value; + } +}; +/** + * Assertion function to guard arguments for `units` functions + */ +function ensureNumerical(_ref4) { + var value = _ref4.value, + code = _ref4.code; + if (typeof value !== "number") { + throw new Error("Found a non-numerical unit: " + value + " " + code); + } +} +/** + * Used in fetch Promise chains to reject if the "ok" property is not true + */ +function checkResponse(_x) { + return _checkResponse.apply(this, arguments); +} +function _checkResponse() { + _checkResponse = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(resp) { + var error; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (resp.ok) { + _context.next = 5; + break; + } + error = new HttpError_1.default(resp); + _context.next = 4; + return error.parse(); + case 4: + throw error; + case 5: + return _context.abrupt("return", resp); + case 6: + case "end": + return _context.stop(); + } + }, _callee); + })); + return _checkResponse.apply(this, arguments); +} +exports.checkResponse = checkResponse; +/** + * Used in fetch Promise chains to return the JSON version of the response. + * Note that `resp.json()` will throw on empty body so we use resp.text() + * instead. + */ +function responseToJSON(resp) { + return resp.text().then(function (text) { + return text.length ? JSON.parse(text) : ""; + }); +} +exports.responseToJSON = responseToJSON; +function loweCaseKeys(obj) { + // Can be undefined to signal that this key should be removed + if (!obj) { + return obj; + } + // Arrays are valid values in case of recursive calls + if (Array.isArray(obj)) { + return obj.map(function (v) { + return v && (0, _typeof2.default)(v) === "object" ? loweCaseKeys(v) : v; + }); + } + // Plain object + var out = {}; + Object.keys(obj).forEach(function (key) { + var lowerKey = key.toLowerCase(); + var v = obj[key]; + out[lowerKey] = v && (0, _typeof2.default)(v) == "object" ? loweCaseKeys(v) : v; + }); + return out; +} +exports.loweCaseKeys = loweCaseKeys; +/** + * This is our built-in request function. It does a few things by default + * (unless told otherwise): + * - Makes CORS requests + * - Sets accept header to "application/json" + * - Handles errors + * - If the response is json return the json object + * - If the response is text return the result text + * - Otherwise return the response object on which we call stuff like `.blob()` + */ +function request(url) { + var requestOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var includeResponse = requestOptions.includeResponse, + options = (0, _objectWithoutProperties2.default)(requestOptions, _excluded); + return fetch(url, _objectSpread(_objectSpread({ + mode: "cors" + }, options), {}, { + headers: _objectSpread({ + accept: "application/json" + }, loweCaseKeys(options.headers)) + })).then(checkResponse).then(function (res) { + var type = res.headers.get("content-type") + ""; + if (type.match(/\bjson\b/i)) { + return responseToJSON(res).then(function (body) { + return { + res: res, + body: body + }; + }); + } + if (type.match(/^text\//i)) { + return res.text().then(function (body) { + return { + res: res, + body: body + }; + }); + } + return { + res: res + }; + }).then(function (_ref5) { + var res = _ref5.res, + body = _ref5.body; + // Some servers will reply after CREATE with json content type but with + // empty body. In this case check if a location header is received and + // fetch that to use it as the final result. + if (!body && res.status == 201) { + var location = res.headers.get("location"); + if (location) { + return request(location, _objectSpread(_objectSpread({}, options), {}, { + method: "GET", + body: null, + includeResponse: includeResponse + })); + } + } + if (includeResponse) { + return { + body: body, + response: res + }; + } + // For any non-text and non-json response return the Response object. + // This to let users decide if they want to call text(), blob() or + // something else on it + if (body === undefined) { + return res; + } + // Otherwise just return the parsed body (can also be "" or null) + return body; + }); +} +exports.request = request; +/** + * Makes a request using `fetch` and stores the result in internal memory cache. + * The cache is cleared when the page is unloaded. + * @param url The URL to request + * @param requestOptions Request options + * @param force If true, reload from source and update the cache, even if it has + * already been cached. + */ +function getAndCache(url, requestOptions) { + var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "development" === "test"; + if (force || !cache[url]) { + cache[url] = request(url, requestOptions); + return cache[url]; + } + return Promise.resolve(cache[url]); +} +exports.getAndCache = getAndCache; +/** + * Fetches the conformance statement from the given base URL. + * Note that the result is cached in memory (until the page is reloaded in the + * browser) because it might have to be re-used by the client + * @param baseUrl The base URL of the FHIR server + * @param [requestOptions] Any options passed to the fetch call + */ +function fetchConformanceStatement() { + var baseUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/"; + var requestOptions = arguments.length > 1 ? arguments[1] : undefined; + var url = String(baseUrl).replace(/\/*$/, "/") + "metadata"; + return getAndCache(url, requestOptions).catch(function (ex) { + throw new Error("Failed to fetch the conformance statement from \"".concat(url, "\". ").concat(ex)); + }); +} +exports.fetchConformanceStatement = fetchConformanceStatement; +/** + * Walks through an object (or array) and returns the value found at the + * provided path. This function is very simple so it intentionally does not + * support any argument polymorphism, meaning that the path can only be a + * dot-separated string. If the path is invalid returns undefined. + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + */ +function getPath(obj) { + var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + path = path.trim(); + if (!path) { + return obj; + } + var segments = path.split("."); + var result = obj; + while (result && segments.length) { + var key = segments.shift(); + if (!key && Array.isArray(result)) { + return result.map(function (o) { + return getPath(o, segments.join(".")); + }); + } else { + result = result[key]; + } + } + return result; +} +exports.getPath = getPath; +/** + * Like getPath, but if the node is found, its value is set to @value + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @param value The value to set + * @param createEmpty If true, create missing intermediate objects or arrays + * @returns The modified object + */ +function setPath(obj, path, value) { + var createEmpty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + path.trim().split(".").reduce(function (out, key, idx, arr) { + if (out && idx === arr.length - 1) { + out[key] = value; + } else { + if (out && out[key] === undefined && createEmpty) { + out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {}; + } + return out ? out[key] : undefined; + } + }, obj); + return obj; +} +exports.setPath = setPath; +/** + * If the argument is an array returns it as is. Otherwise puts it in an array + * (`[arg]`) and returns the result + * @param arg The element to test and possibly convert to array + * @category Utility + */ +function makeArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return [arg]; +} +exports.makeArray = makeArray; +/** + * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl + * is not provided, the result would be a rooted path (one that starts with `/`). + * @param path The path to convert + * @param baseUrl The base URL + */ +function absolute(path, baseUrl) { + if (path.match(/^http/)) return path; + if (path.match(/^urn/)) return path; + return String(baseUrl || "").replace(/\/+$/, "") + "/" + path.replace(/^\/+/, ""); +} +exports.absolute = absolute; +/** + * Generates random strings. By default this returns random 8 characters long + * alphanumeric strings. + * @param strLength The length of the output string. Defaults to 8. + * @param charSet A string containing all the possible characters. + * Defaults to all the upper and lower-case letters plus digits. + * @category Utility + */ +function randomString() { + var strLength = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8; + var charSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + var result = []; + var len = charSet.length; + while (strLength--) { + result.push(charSet.charAt(Math.floor(Math.random() * len))); + } + return result.join(""); +} +exports.randomString = randomString; +/** + * Decodes a JWT token and returns it's body. + * @param token The token to read + * @param env An `Adapter` or any other object that has an `atob` method + * @category Utility + */ +function jwtDecode(token, env) { + var payload = token.split(".")[1]; + return payload ? JSON.parse(env.atob(payload)) : null; +} +exports.jwtDecode = jwtDecode; +/** + * Add a supplied number of seconds to the supplied Date, returning + * an integer number of seconds since the epoch + * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds) + * @param from Initial time (defaults to current time) + */ +function getTimeInFuture() { + var secondsAhead = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 120; + var from = arguments.length > 1 ? arguments[1] : undefined; + return Math.floor(+(from || new Date()) / 1000 + secondsAhead); +} +exports.getTimeInFuture = getTimeInFuture; +/** + * Given a token response, computes and returns the expiresAt timestamp. + * Note that this should only be used immediately after an access token is + * received, otherwise the computed timestamp will be incorrect. + * @param tokenResponse + * @param env + */ +function getAccessTokenExpiration(tokenResponse, env) { + var now = Math.floor(Date.now() / 1000); + // Option 1 - using the expires_in property of the token response + if (tokenResponse.expires_in) { + return now + tokenResponse.expires_in; + } + // Option 2 - using the exp property of JWT tokens (must not assume JWT!) + if (tokenResponse.access_token) { + var tokenBody = jwtDecode(tokenResponse.access_token, env); + if (tokenBody && tokenBody.exp) { + return tokenBody.exp; + } + } + // Option 3 - if none of the above worked set this to 5 minutes after now + return now + 300; +} +exports.getAccessTokenExpiration = getAccessTokenExpiration; +/** + * Groups the observations by code. Returns a map that will look like: + * ```js + * const map = client.byCodes(observations, "code"); + * // map = { + * // "55284-4": [ observation1, observation2 ], + * // "6082-2": [ observation3 ] + * // } + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + */ +function byCode(observations, property) { + var ret = {}; + function handleCodeableConcept(concept, observation) { + if (concept && Array.isArray(concept.coding)) { + concept.coding.forEach(function (_ref6) { + var code = _ref6.code; + if (code) { + ret[code] = ret[code] || []; + ret[code].push(observation); + } + }); + } + } + makeArray(observations).forEach(function (o) { + if (o.resourceType === "Observation" && o[property]) { + if (Array.isArray(o[property])) { + o[property].forEach(function (concept) { + return handleCodeableConcept(concept, o); + }); + } else { + handleCodeableConcept(o[property], o); + } + } + }); + return ret; +} +exports.byCode = byCode; +/** + * First groups the observations by code using `byCode`. Then returns a function + * that accepts codes as arguments and will return a flat array of observations + * having that codes. Example: + * ```js + * const filter = client.byCodes(observations, "category"); + * filter("laboratory") // => [ observation1, observation2 ] + * filter("vital-signs") // => [ observation3 ] + * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + */ +function byCodes(observations, property) { + var bank = byCode(observations, property); + return function () { + for (var _len = arguments.length, codes = new Array(_len), _key = 0; _key < _len; _key++) { + codes[_key] = arguments[_key]; + } + return codes.filter(function (code) { + return code + "" in bank; + }).reduce(function (prev, code) { + return prev.concat(bank[code + ""]); + }, []); + }; +} +exports.byCodes = byCodes; +/** + * Given a conformance statement and a resource type, returns the name of the + * URL parameter that can be used to scope the resource type by patient ID. + */ +function getPatientParam(conformance, resourceType) { + // Find what resources are supported by this server + var resources = getPath(conformance, "rest.0.resource") || []; + // Check if this resource is supported + var meta = resources.find(function (r) { + return r.type === resourceType; + }); + if (!meta) { + throw new Error("Resource \"".concat(resourceType, "\" is not supported by this FHIR server")); + } + // Check if any search parameters are available for this resource + if (!Array.isArray(meta.searchParam)) { + throw new Error("No search parameters supported for \"".concat(resourceType, "\" on this FHIR server")); + } + // This is a rare case but could happen in generic workflows + if (resourceType == "Patient" && meta.searchParam.find(function (x) { + return x.name == "_id"; + })) { + return "_id"; + } + // Now find the first possible parameter name + var out = settings_1.patientParams.find(function (p) { + return meta.searchParam.find(function (x) { + return x.name == p; + }); + }); + // If there is no match + if (!out) { + throw new Error("I don't know what param to use for " + resourceType); + } + return out; +} +exports.getPatientParam = getPatientParam; +/** + * Resolves a reference to target window. It may also open new window or tab if + * the `target = "popup"` or `target = "_blank"`. + * @param target + * @param width Only used when `target = "popup"` + * @param height Only used when `target = "popup"` + */ +function getTargetWindow(_x2) { + return _getTargetWindow.apply(this, arguments); +} +function _getTargetWindow() { + _getTargetWindow = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(target) { + var width, + height, + error, + targetWindow, + _error, + _targetWindow, + winOrFrame, + _args2 = arguments; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + width = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 800; + height = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : 720; + if (!(typeof target == "function")) { + _context2.next = 6; + break; + } + _context2.next = 5; + return target(); + case 5: + target = _context2.sent; + case 6: + if (!(target && (0, _typeof2.default)(target) == "object")) { + _context2.next = 8; + break; + } + return _context2.abrupt("return", target); + case 8: + if (!(typeof target != "string")) { + _context2.next = 11; + break; + } + _debug("Invalid target type '%s'. Failing back to '_self'.", (0, _typeof2.default)(target)); + return _context2.abrupt("return", self); + case 11: + if (!(target == "_self")) { + _context2.next = 13; + break; + } + return _context2.abrupt("return", self); + case 13: + if (!(target == "_parent")) { + _context2.next = 15; + break; + } + return _context2.abrupt("return", parent); + case 15: + if (!(target == "_top")) { + _context2.next = 17; + break; + } + return _context2.abrupt("return", top || self); + case 17: + if (!(target == "_blank")) { + _context2.next = 34; + break; + } + targetWindow = null; + _context2.prev = 19; + targetWindow = window.open("", "SMARTAuthPopup"); + if (targetWindow) { + _context2.next = 23; + break; + } + throw new Error("Perhaps window.open was blocked"); + case 23: + _context2.next = 28; + break; + case 25: + _context2.prev = 25; + _context2.t0 = _context2["catch"](19); + error = _context2.t0; + case 28: + if (targetWindow) { + _context2.next = 33; + break; + } + _debug("Cannot open window. Failing back to '_self'. %s", error); + return _context2.abrupt("return", self); + case 33: + return _context2.abrupt("return", targetWindow); + case 34: + if (!(target == "popup")) { + _context2.next = 51; + break; + } + _targetWindow = null; // if (!targetWindow || targetWindow.closed) { + _context2.prev = 36; + _targetWindow = window.open("", "SMARTAuthPopup", ["height=" + height, "width=" + width, "menubar=0", "resizable=1", "status=0", "top=" + (screen.height - height) / 2, "left=" + (screen.width - width) / 2].join(",")); + if (_targetWindow) { + _context2.next = 40; + break; + } + throw new Error("Perhaps the popup window was blocked"); + case 40: + _context2.next = 45; + break; + case 42: + _context2.prev = 42; + _context2.t1 = _context2["catch"](36); + _error = _context2.t1; + case 45: + if (_targetWindow) { + _context2.next = 50; + break; + } + _debug("Cannot open window. Failing back to '_self'. %s", _error); + return _context2.abrupt("return", self); + case 50: + return _context2.abrupt("return", _targetWindow); + case 51: + // Frame or window by name + winOrFrame = frames[target]; + if (!winOrFrame) { + _context2.next = 54; + break; + } + return _context2.abrupt("return", winOrFrame); + case 54: + _debug("Unknown target '%s'. Failing back to '_self'.", target); + return _context2.abrupt("return", self); + case 56: + case "end": + return _context2.stop(); + } + }, _callee2, null, [[19, 25], [36, 42]]); + })); + return _getTargetWindow.apply(this, arguments); +} +exports.getTargetWindow = getTargetWindow; +function assert(condition, message) { + if (!condition) { + throw new Error(message); + } +} +exports.assert = assert; +function assertJsonPatch(patch) { + assert(Array.isArray(patch), "The JSON patch must be an array"); + assert(patch.length > 0, "The JSON patch array should not be empty"); + patch.forEach(function (operation) { + assert(["add", "replace", "test", "move", "copy", "remove"].indexOf(operation.op) > -1, 'Each patch operation must have an "op" property which must be one of: "add", "replace", "test", "move", "copy", "remove"'); + assert(operation.path && (0, _typeof2.default)(operation.path), "Invalid \"".concat(operation.op, "\" operation. Missing \"path\" property")); + if (operation.op == "add" || operation.op == "replace" || operation.op == "test") { + assert("value" in operation, "Invalid \"".concat(operation.op, "\" operation. Missing \"value\" property")); + assert(Object.keys(operation).length == 3, "Invalid \"".concat(operation.op, "\" operation. Contains unknown properties")); + } else if (operation.op == "move" || operation.op == "copy") { + assert(typeof operation.from == "string", "Invalid \"".concat(operation.op, "\" operation. Requires a string \"from\" property")); + assert(Object.keys(operation).length == 3, "Invalid \"".concat(operation.op, "\" operation. Contains unknown properties")); + } else { + assert(Object.keys(operation).length == 2, "Invalid \"".concat(operation.op, "\" operation. Contains unknown properties")); + } + }); +} +exports.assertJsonPatch = assertJsonPatch; + +/***/ }), + +/***/ "./src/security/browser.ts": +/*!*********************************!*\ + !*** ./src/security/browser.ts ***! + \*********************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); +__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js"); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js")); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js"); +__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); +__webpack_require__(/*! core-js/modules/es.array-buffer.constructor.js */ "./node_modules/core-js/modules/es.array-buffer.constructor.js"); +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.uint8-array.js */ "./node_modules/core-js/modules/es.typed-array.uint8-array.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.copy-within.js */ "./node_modules/core-js/modules/es.typed-array.copy-within.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.every.js */ "./node_modules/core-js/modules/es.typed-array.every.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.fill.js */ "./node_modules/core-js/modules/es.typed-array.fill.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.filter.js */ "./node_modules/core-js/modules/es.typed-array.filter.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.find.js */ "./node_modules/core-js/modules/es.typed-array.find.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.find-index.js */ "./node_modules/core-js/modules/es.typed-array.find-index.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.for-each.js */ "./node_modules/core-js/modules/es.typed-array.for-each.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.includes.js */ "./node_modules/core-js/modules/es.typed-array.includes.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.index-of.js */ "./node_modules/core-js/modules/es.typed-array.index-of.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.iterator.js */ "./node_modules/core-js/modules/es.typed-array.iterator.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.join.js */ "./node_modules/core-js/modules/es.typed-array.join.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.last-index-of.js */ "./node_modules/core-js/modules/es.typed-array.last-index-of.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.map.js */ "./node_modules/core-js/modules/es.typed-array.map.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.reduce.js */ "./node_modules/core-js/modules/es.typed-array.reduce.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.reduce-right.js */ "./node_modules/core-js/modules/es.typed-array.reduce-right.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.reverse.js */ "./node_modules/core-js/modules/es.typed-array.reverse.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.set.js */ "./node_modules/core-js/modules/es.typed-array.set.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.slice.js */ "./node_modules/core-js/modules/es.typed-array.slice.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.some.js */ "./node_modules/core-js/modules/es.typed-array.some.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.sort.js */ "./node_modules/core-js/modules/es.typed-array.sort.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.subarray.js */ "./node_modules/core-js/modules/es.typed-array.subarray.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.to-locale-string.js */ "./node_modules/core-js/modules/es.typed-array.to-locale-string.js"); +__webpack_require__(/*! core-js/modules/es.typed-array.to-string.js */ "./node_modules/core-js/modules/es.typed-array.to-string.js"); +__webpack_require__(/*! core-js/modules/esnext.global-this.js */ "./node_modules/core-js/modules/esnext.global-this.js"); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js")); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.signCompactJws = exports.importJWK = exports.generatePKCEChallenge = exports.digestSha256 = exports.randomBytes = void 0; +var js_base64_1 = __webpack_require__(/*! js-base64 */ "./node_modules/js-base64/base64.js"); +var crypto = (typeof globalThis === "undefined" ? "undefined" : (0, _typeof2.default)(globalThis)) === "object" && globalThis.crypto ? globalThis.crypto : (__webpack_require__(/*! isomorphic-webcrypto */ "./node_modules/isomorphic-webcrypto/src/browser.mjs")["default"]); +var subtle = function subtle() { + if (!crypto.subtle) { + if (!globalThis.isSecureContext) { + throw new Error("Some of the required subtle crypto functionality is not " + "available unless you run this app in secure context (using " + "HTTPS or running locally). See " + "https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"); + } + throw new Error("Some of the required subtle crypto functionality is not " + "available in the current environment (no crypto.subtle)"); + } + return crypto.subtle; +}; +var ALGS = { + ES384: { + name: "ECDSA", + namedCurve: "P-384" + }, + RS384: { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: { + name: 'SHA-384' + } + } +}; +function randomBytes(count) { + return crypto.getRandomValues(new Uint8Array(count)); +} +exports.randomBytes = randomBytes; +function digestSha256(_x) { + return _digestSha.apply(this, arguments); +} +function _digestSha() { + _digestSha = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(payload) { + var prepared, hash; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + prepared = new TextEncoder().encode(payload); + _context2.next = 3; + return subtle().digest('SHA-256', prepared); + case 3: + hash = _context2.sent; + return _context2.abrupt("return", new Uint8Array(hash)); + case 5: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return _digestSha.apply(this, arguments); +} +exports.digestSha256 = digestSha256; +var generatePKCEChallenge = /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var entropy, + inputBytes, + codeVerifier, + codeChallenge, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + entropy = _args.length > 0 && _args[0] !== undefined ? _args[0] : 96; + inputBytes = randomBytes(entropy); + codeVerifier = (0, js_base64_1.fromUint8Array)(inputBytes, true); + _context.t0 = (0, js_base64_1.fromUint8Array); + _context.next = 6; + return digestSha256(codeVerifier); + case 6: + _context.t1 = _context.sent; + codeChallenge = (0, _context.t0)(_context.t1, true); + return _context.abrupt("return", { + codeChallenge: codeChallenge, + codeVerifier: codeVerifier + }); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function generatePKCEChallenge() { + return _ref.apply(this, arguments); + }; +}(); +exports.generatePKCEChallenge = generatePKCEChallenge; +function importJWK(_x2) { + return _importJWK.apply(this, arguments); +} +function _importJWK() { + _importJWK = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(jwk) { + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + if (jwk.alg) { + _context3.next = 2; + break; + } + throw new Error('The "alg" property of the JWK must be set to "ES384" or "RS384"'); + case 2: + // Use of the "key_ops" member is OPTIONAL, unless the application requires its presence. + // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3 + // + // In our case the app will only import private keys so we can assume "sign" + if (!Array.isArray(jwk.key_ops)) { + jwk.key_ops = ["sign"]; + } + // In this case the JWK has a "key_ops" array and "sign" is not listed + if (jwk.key_ops.includes("sign")) { + _context3.next = 5; + break; + } + throw new Error('The "key_ops" property of the JWK does not contain "sign"'); + case 5: + _context3.prev = 5; + _context3.next = 8; + return subtle().importKey("jwk", jwk, ALGS[jwk.alg], jwk.ext === true, jwk.key_ops // || ['sign'] + ); + case 8: + return _context3.abrupt("return", _context3.sent); + case 11: + _context3.prev = 11; + _context3.t0 = _context3["catch"](5); + throw new Error("The ".concat(jwk.alg, " is not supported by this browser: ").concat(_context3.t0)); + case 14: + case "end": + return _context3.stop(); + } + }, _callee3, null, [[5, 11]]); + })); + return _importJWK.apply(this, arguments); +} +exports.importJWK = importJWK; +function signCompactJws(_x3, _x4, _x5, _x6) { + return _signCompactJws.apply(this, arguments); +} +function _signCompactJws() { + _signCompactJws = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(alg, privateKey, header, payload) { + var jwtHeader, jwtPayload, jwtAuthenticatedContent, signature; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + jwtHeader = JSON.stringify(_objectSpread(_objectSpread({}, header), {}, { + alg: alg + })); + jwtPayload = JSON.stringify(payload); + jwtAuthenticatedContent = "".concat((0, js_base64_1.encodeURL)(jwtHeader), ".").concat((0, js_base64_1.encodeURL)(jwtPayload)); + _context4.next = 5; + return subtle().sign(_objectSpread(_objectSpread({}, privateKey.algorithm), {}, { + hash: 'SHA-384' + }), privateKey, new TextEncoder().encode(jwtAuthenticatedContent)); + case 5: + signature = _context4.sent; + return _context4.abrupt("return", "".concat(jwtAuthenticatedContent, ".").concat((0, js_base64_1.fromUint8Array)(new Uint8Array(signature), true))); + case 7: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return _signCompactJws.apply(this, arguments); +} +exports.signCompactJws = signCompactJws; + +/***/ }), + +/***/ "./src/settings.ts": +/*!*************************!*\ + !*** ./src/settings.ts ***! + \*************************/ +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SMART_KEY = exports.patientParams = exports.fhirVersions = exports.patientCompartment = void 0; +/** + * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4 + */ +exports.patientCompartment = ["Account", "AdverseEvent", "AllergyIntolerance", "Appointment", "AppointmentResponse", "AuditEvent", "Basic", "BodySite", "BodyStructure", "CarePlan", "CareTeam", "ChargeItem", "Claim", "ClaimResponse", "ClinicalImpression", "Communication", "CommunicationRequest", "Composition", "Condition", "Consent", "Coverage", "CoverageEligibilityRequest", "CoverageEligibilityResponse", "DetectedIssue", "DeviceRequest", "DeviceUseRequest", "DeviceUseStatement", "DiagnosticOrder", "DiagnosticReport", "DocumentManifest", "DocumentReference", "EligibilityRequest", "Encounter", "EnrollmentRequest", "EpisodeOfCare", "ExplanationOfBenefit", "FamilyMemberHistory", "Flag", "Goal", "Group", "ImagingManifest", "ImagingObjectSelection", "ImagingStudy", "Immunization", "ImmunizationEvaluation", "ImmunizationRecommendation", "Invoice", "List", "MeasureReport", "Media", "MedicationAdministration", "MedicationDispense", "MedicationOrder", "MedicationRequest", "MedicationStatement", "MolecularSequence", "NutritionOrder", "Observation", "Order", "Patient", "Person", "Procedure", "ProcedureRequest", "Provenance", "QuestionnaireResponse", "ReferralRequest", "RelatedPerson", "RequestGroup", "ResearchSubject", "RiskAssessment", "Schedule", "ServiceRequest", "Specimen", "SupplyDelivery", "SupplyRequest", "VisionPrescription"]; +/** + * Map of FHIR releases and their abstract version as number + */ +exports.fhirVersions = { + "0.4.0": 2, + "0.5.0": 2, + "1.0.0": 2, + "1.0.1": 2, + "1.0.2": 2, + "1.1.0": 3, + "1.4.0": 3, + "1.6.0": 3, + "1.8.0": 3, + "3.0.0": 3, + "3.0.1": 3, + "3.3.0": 4, + "3.5.0": 4, + "4.0.0": 4, + "4.0.1": 4 +}; +/** + * Combined (FHIR R2-R4) list of search parameters that can be used to scope + * a request by patient ID. + */ +exports.patientParams = ["patient", "subject", "requester", "member", "actor", "beneficiary"]; +/** + * The name of the sessionStorage entry that contains the current key + */ +exports.SMART_KEY = "SMART_KEY"; + +/***/ }), + +/***/ "./src/smart.ts": +/*!**********************!*\ + !*** ./src/smart.ts ***! + \**********************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); +__webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js"); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js")); +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); +__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); +__webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); +__webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js"); +__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); +__webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js"); +__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); +__webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); +__webpack_require__(/*! core-js/modules/es.object.assign.js */ "./node_modules/core-js/modules/es.object.assign.js"); +__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); +__webpack_require__(/*! core-js/modules/es.promise.js */ "./node_modules/core-js/modules/es.promise.js"); +__webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ "./node_modules/core-js/modules/es.regexp.constructor.js"); +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); +__webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js"); +__webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js"); +__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); +__webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js"); +__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); +__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); +__webpack_require__(/*! core-js/modules/web.url.js */ "./node_modules/core-js/modules/web.url.js"); +__webpack_require__(/*! core-js/modules/web.url.to-json.js */ "./node_modules/core-js/modules/web.url.to-json.js"); +__webpack_require__(/*! core-js/modules/web.url-search-params.js */ "./node_modules/core-js/modules/web.url-search-params.js"); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js")); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.init = exports.buildTokenRequest = exports.ready = exports.onMessage = exports.isInPopUp = exports.isInFrame = exports.authorize = exports.getSecurityExtensions = exports.fetchWellKnownJson = exports.KEY = void 0; +/* global window */ +var lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); +var Client_1 = __webpack_require__(/*! ./Client */ "./src/Client.ts"); +var settings_1 = __webpack_require__(/*! ./settings */ "./src/settings.ts"); +Object.defineProperty(exports, "KEY", ({ + enumerable: true, + get: function get() { + return settings_1.SMART_KEY; + } +})); +var debug = lib_1.debug.extend("oauth2"); +function isBrowser() { + return (typeof window === "undefined" ? "undefined" : (0, _typeof2.default)(window)) === "object"; +} +/** + * Fetches the well-known json file from the given base URL. + * Note that the result is cached in memory (until the page is reloaded in the + * browser) because it might have to be re-used by the client + * @param baseUrl The base URL of the FHIR server + */ +function fetchWellKnownJson() { + var baseUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/"; + var requestOptions = arguments.length > 1 ? arguments[1] : undefined; + var url = String(baseUrl).replace(/\/*$/, "/") + ".well-known/smart-configuration"; + return (0, lib_1.getAndCache)(url, requestOptions).catch(function (ex) { + throw new Error("Failed to fetch the well-known json \"".concat(url, "\". ").concat(ex.message)); + }); +} +exports.fetchWellKnownJson = fetchWellKnownJson; +/** + * Fetch a "WellKnownJson" and extract the SMART endpoints from it + */ +function getSecurityExtensionsFromWellKnownJson() { + var baseUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/"; + var requestOptions = arguments.length > 1 ? arguments[1] : undefined; + return fetchWellKnownJson(baseUrl, requestOptions).then(function (meta) { + if (!meta.authorization_endpoint || !meta.token_endpoint) { + throw new Error("Invalid wellKnownJson"); + } + return { + registrationUri: meta.registration_endpoint || "", + authorizeUri: meta.authorization_endpoint, + tokenUri: meta.token_endpoint, + codeChallengeMethods: meta.code_challenge_methods_supported || [] + }; + }); +} +/** + * Fetch a `CapabilityStatement` and extract the SMART endpoints from it + */ +function getSecurityExtensionsFromConformanceStatement() { + var baseUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/"; + var requestOptions = arguments.length > 1 ? arguments[1] : undefined; + return (0, lib_1.fetchConformanceStatement)(baseUrl, requestOptions).then(function (meta) { + var nsUri = "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"; + var extensions = ((0, lib_1.getPath)(meta || {}, "rest.0.security.extension") || []).filter(function (e) { + return e.url === nsUri; + }).map(function (o) { + return o.extension; + })[0]; + var out = { + registrationUri: "", + authorizeUri: "", + tokenUri: "", + codeChallengeMethods: [] + }; + if (extensions) { + extensions.forEach(function (ext) { + if (ext.url === "register") { + out.registrationUri = ext.valueUri; + } + if (ext.url === "authorize") { + out.authorizeUri = ext.valueUri; + } + if (ext.url === "token") { + out.tokenUri = ext.valueUri; + } + }); + } + return out; + }); +} +/** + * Given a FHIR server, returns an object with it's Oauth security endpoints + * that we are interested in. This will try to find the info in both the + * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever + * Arrives first will be used and the other request will be aborted. + * @param [baseUrl = "/"] Fhir server base URL + */ +function getSecurityExtensions() { + var baseUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/"; + return getSecurityExtensionsFromWellKnownJson(baseUrl).catch(function () { + return getSecurityExtensionsFromConformanceStatement(baseUrl); + }); +} +exports.getSecurityExtensions = getSecurityExtensions; +/** + * Starts the SMART Launch Sequence. + * > **IMPORTANT**: + * `authorize()` will end up redirecting you to the authorization server. + * This means that you should not add anything to the returned promise chain. + * Any code written directly after the authorize() call might not be executed + * due to that redirect! + * @param env + * @param [params] + */ +function authorize(_x) { + return _authorize.apply(this, arguments); +} +function _authorize() { + _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(env) { + var params, + url, + urlISS, + cfg, + clientSecret, + fakeTokenResponse, + encounterId, + target, + width, + height, + pkceMode, + clientPublicKeySetUrl, + redirect_uri, + client_id, + iss, + launch, + patientId, + fhirServiceUrl, + redirectUri, + noRedirect, + _params$scope, + scope, + clientId, + completeInTarget, + clientPrivateJwk, + storage, + serverUrl, + inFrame, + inPopUp, + oldKey, + stateKey, + state, + fullSessionStorageSupport, + redirectUrl, + extensions, + redirectParams, + codes, + win, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + params = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + url = env.getUrl(); // Multiple config for EHR launches --------------------------------------- + if (!Array.isArray(params)) { + _context.next = 11; + break; + } + urlISS = url.searchParams.get("iss") || url.searchParams.get("fhirServiceUrl"); + if (urlISS) { + _context.next = 6; + break; + } + throw new Error('Passing in an "iss" url parameter is required if authorize ' + 'uses multiple configurations'); + case 6: + // pick the right config + cfg = params.find(function (x) { + if (x.issMatch) { + if (typeof x.issMatch === "function") { + return !!x.issMatch(urlISS); + } + if (typeof x.issMatch === "string") { + return x.issMatch === urlISS; + } + if (x.issMatch instanceof RegExp) { + return x.issMatch.test(urlISS); + } + } + return false; + }); + (0, lib_1.assert)(cfg, "No configuration found matching the current \"iss\" parameter \"".concat(urlISS, "\"")); + _context.next = 10; + return authorize(env, cfg); + case 10: + return _context.abrupt("return", _context.sent); + case 11: + // ------------------------------------------------------------------------ + // Obtain input + clientSecret = params.clientSecret, fakeTokenResponse = params.fakeTokenResponse, encounterId = params.encounterId, target = params.target, width = params.width, height = params.height, pkceMode = params.pkceMode, clientPublicKeySetUrl = params.clientPublicKeySetUrl, redirect_uri = params.redirect_uri, client_id = params.client_id; + iss = params.iss, launch = params.launch, patientId = params.patientId, fhirServiceUrl = params.fhirServiceUrl, redirectUri = params.redirectUri, noRedirect = params.noRedirect, _params$scope = params.scope, scope = _params$scope === void 0 ? "" : _params$scope, clientId = params.clientId, completeInTarget = params.completeInTarget, clientPrivateJwk = params.clientPrivateJwk; + storage = env.getStorage(); // For these, a url param takes precedence over inline option + iss = url.searchParams.get("iss") || iss; + fhirServiceUrl = url.searchParams.get("fhirServiceUrl") || fhirServiceUrl; + launch = url.searchParams.get("launch") || launch; + patientId = url.searchParams.get("patientId") || patientId; + clientId = url.searchParams.get("clientId") || clientId; + // If there's still no clientId or redirectUri, check deprecated params + if (!clientId) { + clientId = client_id; + } + if (!redirectUri) { + redirectUri = redirect_uri; + } + if (!redirectUri) { + redirectUri = env.relative("."); + } else if (!redirectUri.match(/^https?\:\/\//)) { + redirectUri = env.relative(redirectUri); + } + serverUrl = String(iss || fhirServiceUrl || ""); // Validate input + if (serverUrl) { + _context.next = 25; + break; + } + throw new Error("No server url found. It must be specified as `iss` or as " + "`fhirServiceUrl` parameter"); + case 25: + if (iss) { + debug("Making %s launch...", launch ? "EHR" : "standalone"); + } + // append launch scope if needed + if (launch && !scope.match(/launch/)) { + scope += " launch"; + } + if (isBrowser()) { + inFrame = isInFrame(); + inPopUp = isInPopUp(); + if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) { + // completeInTarget will default to true if authorize is called from + // within an iframe. This is to avoid issues when the entire app + // happens to be rendered in an iframe (including in some EHRs), + // even though that was not how the app developer's intention. + completeInTarget = inFrame; + // In this case we can't always make the best decision so ask devs + // to be explicit in their configuration. + console.warn('Your app is being authorized from within an iframe or popup ' + 'window. Please be explicit and provide a "completeInTarget" ' + 'option. Use "true" to complete the authorization in the ' + 'same window, or "false" to try to complete it in the parent ' + 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html'); + } + } + // If `authorize` is called, make sure we clear any previous state (in case + // this is a re-authorize) + _context.next = 30; + return storage.get(settings_1.SMART_KEY); + case 30: + oldKey = _context.sent; + _context.next = 33; + return storage.unset(oldKey); + case 33: + // create initial state + stateKey = (0, lib_1.randomString)(16); + state = { + clientId: clientId, + scope: scope, + redirectUri: redirectUri, + serverUrl: serverUrl, + clientSecret: clientSecret, + clientPrivateJwk: clientPrivateJwk, + tokenResponse: {}, + key: stateKey, + completeInTarget: completeInTarget, + clientPublicKeySetUrl: clientPublicKeySetUrl + }; + fullSessionStorageSupport = isBrowser() ? (0, lib_1.getPath)(env, "options.fullSessionStorageSupport") : true; + if (!fullSessionStorageSupport) { + _context.next = 39; + break; + } + _context.next = 39; + return storage.set(settings_1.SMART_KEY, stateKey); + case 39: + // fakeTokenResponse to override stuff (useful in development) + if (fakeTokenResponse) { + Object.assign(state.tokenResponse, fakeTokenResponse); + } + // Fixed patientId (useful in development) + if (patientId) { + Object.assign(state.tokenResponse, { + patient: patientId + }); + } + // Fixed encounterId (useful in development) + if (encounterId) { + Object.assign(state.tokenResponse, { + encounter: encounterId + }); + } + redirectUrl = redirectUri + "?state=" + encodeURIComponent(stateKey); // bypass oauth if fhirServiceUrl is used (but iss takes precedence) + if (!(fhirServiceUrl && !iss)) { + _context.next = 52; + break; + } + debug("Making fake launch..."); + _context.next = 47; + return storage.set(stateKey, state); + case 47: + if (!noRedirect) { + _context.next = 49; + break; + } + return _context.abrupt("return", redirectUrl); + case 49: + _context.next = 51; + return env.redirect(redirectUrl); + case 51: + return _context.abrupt("return", _context.sent); + case 52: + _context.next = 54; + return getSecurityExtensions(serverUrl); + case 54: + extensions = _context.sent; + Object.assign(state, extensions); + _context.next = 58; + return storage.set(stateKey, state); + case 58: + if (state.authorizeUri) { + _context.next = 64; + break; + } + if (!noRedirect) { + _context.next = 61; + break; + } + return _context.abrupt("return", redirectUrl); + case 61: + _context.next = 63; + return env.redirect(redirectUrl); + case 63: + return _context.abrupt("return", _context.sent); + case 64: + // build the redirect uri + redirectParams = ["response_type=code", "client_id=" + encodeURIComponent(clientId || ""), "scope=" + encodeURIComponent(scope), "redirect_uri=" + encodeURIComponent(redirectUri), "aud=" + encodeURIComponent(serverUrl), "state=" + encodeURIComponent(stateKey)]; // also pass this in case of EHR launch + if (launch) { + redirectParams.push("launch=" + encodeURIComponent(launch)); + } + if (!shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) { + _context.next = 75; + break; + } + _context.next = 69; + return env.security.generatePKCEChallenge(); + case 69: + codes = _context.sent; + Object.assign(state, codes); + _context.next = 73; + return storage.set(stateKey, state); + case 73: + redirectParams.push("code_challenge=" + state.codeChallenge); // note that the challenge is ALREADY encoded properly + redirectParams.push("code_challenge_method=S256"); + case 75: + redirectUrl = state.authorizeUri + "?" + redirectParams.join("&"); + if (!noRedirect) { + _context.next = 78; + break; + } + return _context.abrupt("return", redirectUrl); + case 78: + if (!(target && isBrowser())) { + _context.next = 87; + break; + } + _context.next = 81; + return (0, lib_1.getTargetWindow)(target, width, height); + case 81: + win = _context.sent; + if (win !== self) { + try { + // Also remove any old state from the target window and then + // transfer the current state there + win.sessionStorage.removeItem(oldKey); + win.sessionStorage.setItem(stateKey, JSON.stringify(state)); + } catch (ex) { + (0, lib_1.debug)("Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to \"_self\". %s", ex); + win = self; + } + } + if (win !== self) { + try { + win.location.href = redirectUrl; + self.addEventListener("message", onMessage); + } catch (ex) { + (0, lib_1.debug)("Failed to modify window.location. Perhaps it is from different origin?. Failing back to \"_self\". %s", ex); + self.location.href = redirectUrl; + } + } else { + self.location.href = redirectUrl; + } + return _context.abrupt("return"); + case 87: + _context.next = 89; + return env.redirect(redirectUrl); + case 89: + return _context.abrupt("return", _context.sent); + case 90: + case "end": + return _context.stop(); + } + }, _callee); + })); + return _authorize.apply(this, arguments); +} +exports.authorize = authorize; +function shouldIncludeChallenge(S256supported, pkceMode) { + if (pkceMode === "disabled") { + return false; + } + if (pkceMode === "unsafeV1") { + return true; + } + if (pkceMode === "required") { + if (!S256supported) { + throw new Error("Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration."); + } + return true; + } + return S256supported; +} +/** + * Checks if called within a frame. Only works in browsers! + * If the current window has a `parent` or `top` properties that refer to + * another window, returns true. If trying to access `top` or `parent` throws an + * error, returns true. Otherwise returns `false`. + */ +function isInFrame() { + try { + return self !== top && parent !== self; + } catch (e) { + return true; + } +} +exports.isInFrame = isInFrame; +/** + * Checks if called within another window (popup or tab). Only works in browsers! + * To consider itself called in a new window, this function verifies that: + * 1. `self === top` (not in frame) + * 2. `!!opener && opener !== self` The window has an opener + * 3. `!!window.name` The window has a `name` set + */ +function isInPopUp() { + try { + return self === top && !!opener && opener !== self && !!window.name; + } catch (e) { + return false; + } +} +exports.isInPopUp = isInPopUp; +/** + * Another window can send a "completeAuth" message to this one, making it to + * navigate to e.data.url + * @param e The message event + */ +function onMessage(e) { + if (e.data.type == "completeAuth" && e.origin === new URL(self.location.href).origin) { + window.removeEventListener("message", onMessage); + window.location.href = e.data.url; + } +} +exports.onMessage = onMessage; +/** + * The ready function should only be called on the page that represents + * the redirectUri. We typically land there after a redirect from the + * authorization server, but this code will also be executed upon subsequent + * navigation or page refresh. + */ +function ready(_x2) { + return _ready.apply(this, arguments); +} +function _ready() { + _ready = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(env) { + var options, + _a, + _b, + url, + Storage, + params, + key, + code, + authError, + authErrorDescription, + state, + fullSessionStorageSupport, + inFrame, + inPopUp, + href, + origin, + hasState, + authorized, + requestOptions, + tokenResponse, + client, + _args2 = arguments; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {}; + url = env.getUrl(); + Storage = env.getStorage(); + params = url.searchParams; + key = params.get("state"); + code = params.get("code"); + authError = params.get("error"); + authErrorDescription = params.get("error_description"); + if (key) { + _context2.next = 12; + break; + } + _context2.next = 11; + return Storage.get(settings_1.SMART_KEY); + case 11: + key = _context2.sent; + case 12: + if (!(authError || authErrorDescription)) { + _context2.next = 14; + break; + } + throw new Error([authError, authErrorDescription].filter(Boolean).join(": ")); + case 14: + debug("key: %s, code: %s", key, code); + // key might be coming from the page url so it might be empty or missing + (0, lib_1.assert)(key, "No 'state' parameter found. Please (re)launch the app."); + // Check if we have a previous state + _context2.next = 18; + return Storage.get(key); + case 18: + state = _context2.sent; + fullSessionStorageSupport = isBrowser() ? (0, lib_1.getPath)(env, "options.fullSessionStorageSupport") : true; // If we are in a popup window or an iframe and the authorization is + // complete, send the location back to our opener and exit. + if (!(isBrowser() && state && !state.completeInTarget)) { + _context2.next = 29; + break; + } + inFrame = isInFrame(); + inPopUp = isInPopUp(); // we are about to return to the opener/parent where completeAuth will + // be called again. In rare cases the opener or parent might also be + // a frame or popup. Then inFrame or inPopUp will be true but we still + // have to stop going up the chain. To guard against that weird form of + // recursion we pass one additional parameter to the url which we later + // remove. + if (!((inFrame || inPopUp) && !url.searchParams.get("complete"))) { + _context2.next = 29; + break; + } + url.searchParams.set("complete", "1"); + href = url.href, origin = url.origin; + if (inFrame) { + parent.postMessage({ + type: "completeAuth", + url: href + }, origin); + } + if (inPopUp) { + opener.postMessage({ + type: "completeAuth", + url: href + }, origin); + window.close(); + } + return _context2.abrupt("return", new Promise(function () {})); + case 29: + url.searchParams.delete("complete"); + // Do we have to remove the `code` and `state` params from the URL? + hasState = params.has("state"); + if (isBrowser() && (0, lib_1.getPath)(env, "options.replaceBrowserHistory") && (code || hasState)) { + // `code` is the flag that tell us to request an access token. + // We have to remove it, otherwise the page will authorize on + // every load! + if (code) { + params.delete("code"); + debug("Removed code parameter from the url."); + } + // If we have `fullSessionStorageSupport` it means we no longer + // need the `state` key. It will be stored to a well know + // location - sessionStorage[SMART_KEY]. However, no + // fullSessionStorageSupport means that this "well know location" + // might be shared between windows and tabs. In this case we + // MUST keep the `state` url parameter. + if (hasState && fullSessionStorageSupport) { + params.delete("state"); + debug("Removed state parameter from the url."); + } + // If the browser does not support the replaceState method for the + // History Web API, the "code" parameter cannot be removed. As a + // consequence, the page will (re)authorize on every load. The + // workaround is to reload the page to new location without those + // parameters. If that is not acceptable replaceBrowserHistory + // should be set to false. + if (window.history.replaceState) { + window.history.replaceState({}, "", url.href); + } + } + // If the state does not exist, it means the page has been loaded directly. + (0, lib_1.assert)(state, "No state found! Please (re)launch the app."); + // Assume the client has already completed a token exchange when + // there is no code (but we have a state) or access token is found in state + authorized = !code || ((_a = state.tokenResponse) === null || _a === void 0 ? void 0 : _a.access_token); // If we are authorized already, then this is just a reload. + // Otherwise, we have to complete the code flow + if (!(!authorized && state.tokenUri)) { + _context2.next = 53; + break; + } + (0, lib_1.assert)(code, "'code' url parameter is required"); + debug("Preparing to exchange the code for access token..."); + _context2.next = 39; + return buildTokenRequest(env, { + code: code, + state: state, + clientPublicKeySetUrl: options.clientPublicKeySetUrl, + privateKey: options.privateKey || state.clientPrivateJwk + }); + case 39: + requestOptions = _context2.sent; + debug("Token request options: %O", requestOptions); + // The EHR authorization server SHALL return a JSON structure that + // includes an access token or a message indicating that the + // authorization request has been denied. + _context2.next = 43; + return (0, lib_1.request)(state.tokenUri, requestOptions); + case 43: + tokenResponse = _context2.sent; + debug("Token response: %O", tokenResponse); + (0, lib_1.assert)(tokenResponse.access_token, "Failed to obtain access token."); + // Now we need to determine when is this authorization going to expire + state.expiresAt = (0, lib_1.getAccessTokenExpiration)(tokenResponse, env); + // save the tokenResponse so that we don't have to re-authorize on + // every page reload + state = _objectSpread(_objectSpread({}, state), {}, { + tokenResponse: tokenResponse + }); + _context2.next = 50; + return Storage.set(key, state); + case 50: + debug("Authorization successful!"); + _context2.next = 54; + break; + case 53: + debug(((_b = state.tokenResponse) === null || _b === void 0 ? void 0 : _b.access_token) ? "Already authorized" : "No authorization needed"); + case 54: + if (!fullSessionStorageSupport) { + _context2.next = 57; + break; + } + _context2.next = 57; + return Storage.set(settings_1.SMART_KEY, key); + case 57: + client = new Client_1.default(env, state); + debug("Created client instance: %O", client); + return _context2.abrupt("return", client); + case 60: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + return _ready.apply(this, arguments); +} +exports.ready = ready; +/** + * Builds the token request options. Does not make the request, just + * creates it's configuration and returns it in a Promise. + */ +function buildTokenRequest(_x3, _x4) { + return _buildTokenRequest.apply(this, arguments); +} +function _buildTokenRequest() { + _buildTokenRequest = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(env, _ref) { + var code, state, clientPublicKeySetUrl, privateKey, redirectUri, clientSecret, tokenUri, clientId, codeVerifier, requestOptions, pk, jwtHeaders, jwtClaims, clientAssertion; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + code = _ref.code, state = _ref.state, clientPublicKeySetUrl = _ref.clientPublicKeySetUrl, privateKey = _ref.privateKey; + redirectUri = state.redirectUri, clientSecret = state.clientSecret, tokenUri = state.tokenUri, clientId = state.clientId, codeVerifier = state.codeVerifier; + (0, lib_1.assert)(redirectUri, "Missing state.redirectUri"); + (0, lib_1.assert)(tokenUri, "Missing state.tokenUri"); + (0, lib_1.assert)(clientId, "Missing state.clientId"); + requestOptions = { + method: "POST", + headers: { + "content-type": "application/x-www-form-urlencoded" + }, + body: "code=".concat(code, "&grant_type=authorization_code&redirect_uri=").concat(encodeURIComponent(redirectUri)) + }; // For public apps, authentication is not possible (and thus not required), + // since a client with no secret cannot prove its identity when it issues a + // call. (The end-to-end system can still be secure because the client comes + // from a known, https protected endpoint specified and enforced by the + // redirect uri.) For confidential apps, an Authorization header using HTTP + // Basic authentication is required, where the username is the app’s + // client_id and the password is the app’s client_secret (see example). + if (!clientSecret) { + _context3.next = 11; + break; + } + requestOptions.headers.authorization = "Basic " + env.btoa(clientId + ":" + clientSecret); + debug("Using state.clientSecret to construct the authorization header: %s", requestOptions.headers.authorization); + _context3.next = 32; + break; + case 11: + if (!privateKey) { + _context3.next = 30; + break; + } + if (!("key" in privateKey)) { + _context3.next = 16; + break; + } + _context3.t0 = privateKey.key; + _context3.next = 19; + break; + case 16: + _context3.next = 18; + return env.security.importJWK(privateKey); + case 18: + _context3.t0 = _context3.sent; + case 19: + pk = _context3.t0; + jwtHeaders = { + typ: "JWT", + kid: privateKey.kid, + jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl + }; + jwtClaims = { + iss: clientId, + sub: clientId, + aud: tokenUri, + jti: env.base64urlencode(env.security.randomBytes(32)), + exp: (0, lib_1.getTimeInFuture)(120) // two minutes in the future + }; + _context3.next = 24; + return env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims); + case 24: + clientAssertion = _context3.sent; + requestOptions.body += "&client_assertion_type=".concat(encodeURIComponent("urn:ietf:params:oauth:client-assertion-type:jwt-bearer")); + requestOptions.body += "&client_assertion=".concat(encodeURIComponent(clientAssertion)); + debug("Using state.clientPrivateJwk to add a client_assertion to the POST body"); + _context3.next = 32; + break; + case 30: + debug("Public client detected; adding state.clientId to the POST body"); + requestOptions.body += "&client_id=".concat(encodeURIComponent(clientId)); + case 32: + if (codeVerifier) { + debug("Found state.codeVerifier, adding to the POST body"); + // Note that the codeVerifier is ALREADY encoded properly + requestOptions.body += "&code_verifier=" + codeVerifier; + } + return _context3.abrupt("return", requestOptions); + case 34: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + return _buildTokenRequest.apply(this, arguments); +} +exports.buildTokenRequest = buildTokenRequest; +/** + * This function can be used when you want to handle everything in one page + * (no launch endpoint needed). You can think of it as if it does: + * ```js + * authorize(options).then(ready) + * ``` + * + * **Be careful with init()!** There are some details you need to be aware of: + * + * 1. It will only work if your launch_uri is the same as your redirect_uri. + * While this should be valid, we can’t promise that every EHR will allow you + * to register client with such settings. + * 2. Internally, `init()` will be called twice. First it will redirect to the + * EHR, then the EHR will redirect back to the page where init() will be + * called again to complete the authorization. This is generally fine, + * because the returned promise will only be resolved once, after the second + * execution, but please also consider the following: + * - You should wrap all your app’s code in a function that is only executed + * after `init()` resolves! + * - Since the page will be loaded twice, you must be careful if your code + * has global side effects that can persist between page reloads + * (for example writing to localStorage). + * 3. For standalone launch, only use init in combination with offline_access + * scope. Once the access_token expires, if you don’t have a refresh_token + * there is no way to re-authorize properly. We detect that and delete the + * expired access token, but it still means that the user will have to + * refresh the page twice to re-authorize. + * @param env The adapter + * @param authorizeOptions The authorize options + */ +function init(_x5, _x6, _x7) { + return _init.apply(this, arguments); +} +function _init() { + _init = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(env, authorizeOptions, readyOptions) { + var url, code, state, storage, key, cached; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + url = env.getUrl(); + code = url.searchParams.get("code"); + state = url.searchParams.get("state"); // if `code` and `state` params are present we need to complete the auth flow + if (!(code && state)) { + _context4.next = 5; + break; + } + return _context4.abrupt("return", ready(env, readyOptions)); + case 5: + // Check for existing client state. If state is found, it means a client + // instance have already been created in this session and we should try to + // "revive" it. + storage = env.getStorage(); + _context4.t0 = state; + if (_context4.t0) { + _context4.next = 11; + break; + } + _context4.next = 10; + return storage.get(settings_1.SMART_KEY); + case 10: + _context4.t0 = _context4.sent; + case 11: + key = _context4.t0; + _context4.next = 14; + return storage.get(key); + case 14: + cached = _context4.sent; + if (!cached) { + _context4.next = 17; + break; + } + return _context4.abrupt("return", new Client_1.default(env, cached)); + case 17: + return _context4.abrupt("return", authorize(env, authorizeOptions).then(function () { + // `init` promises a Client but that cannot happen in this case. The + // browser will be redirected (unload the page and be redirected back + // to it later and the same init function will be called again). On + // success, authorize will resolve with the redirect url but we don't + // want to return that from this promise chain because it is not a + // Client instance. At the same time, if authorize fails, we do want to + // pass the error to those waiting for a client instance. + return new Promise(function () {}); + })); + case 18: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + return _init.apply(this, arguments); +} +exports.init = init; + +/***/ }), + +/***/ "./src/storage/BrowserStorage.ts": +/*!***************************************!*\ + !*** ./src/storage/BrowserStorage.ts ***! + \***************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js")); +__webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js"); +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js")); +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var Storage = /*#__PURE__*/function () { + function Storage() { + (0, _classCallCheck2.default)(this, Storage); + } + return (0, _createClass2.default)(Storage, [{ + key: "get", + value: ( + /** + * Gets the value at `key`. Returns a promise that will be resolved + * with that value (or undefined for missing keys). + */ + function () { + var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(key) { + var value; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + value = sessionStorage[key]; + if (!value) { + _context.next = 3; + break; + } + return _context.abrupt("return", JSON.parse(value)); + case 3: + return _context.abrupt("return", null); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + })); + function get(_x) { + return _get.apply(this, arguments); + } + return get; + }() + /** + * Sets the `value` on `key` and returns a promise that will be resolved + * with the value that was set. + */ + ) + }, { + key: "set", + value: (function () { + var _set = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(key, value) { + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + sessionStorage[key] = JSON.stringify(value); + return _context2.abrupt("return", value); + case 2: + case "end": + return _context2.stop(); + } + }, _callee2); + })); + function set(_x2, _x3) { + return _set.apply(this, arguments); + } + return set; + }() + /** + * Deletes the value at `key`. Returns a promise that will be resolved + * with true if the key was deleted or with false if it was not (eg. if + * did not exist). + */ + ) + }, { + key: "unset", + value: (function () { + var _unset = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(key) { + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + if (!(key in sessionStorage)) { + _context3.next = 3; + break; + } + delete sessionStorage[key]; + return _context3.abrupt("return", true); + case 3: + return _context3.abrupt("return", false); + case 4: + case "end": + return _context3.stop(); + } + }, _callee3); + })); + function unset(_x4) { + return _unset.apply(this, arguments); + } + return unset; + }()) + }]); +}(); +exports["default"] = Storage; + +/***/ }), + +/***/ "./src/strings.ts": +/*!************************!*\ + !*** ./src/strings.ts ***! + \************************/ +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +// This map contains reusable debug messages (only those used in multiple places) +exports["default"] = { + expired: "Session expired! Please re-launch the app", + noScopeForId: "Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.", + noIfNoAuth: "You are trying to get %s but the app is not authorized yet.", + noFreeContext: "Please don't use open fhir servers if you need to access launch context items like the %S." +}; + +/***/ }), + +/***/ "./node_modules/cross-fetch/dist/browser-ponyfill.js": +/*!***********************************************************!*\ + !*** ./node_modules/cross-fetch/dist/browser-ponyfill.js ***! + \***********************************************************/ +/***/ (function(module, exports) { + +var global = typeof self !== 'undefined' ? self : this; +var __self__ = (function () { +function F() { +this.fetch = false; +this.DOMException = global.DOMException +} +F.prototype = global; +return new F(); +})(); +(function(self) { + +var irrelevant = (function (exports) { + + var support = { + searchParams: 'URLSearchParams' in self, + iterable: 'Symbol' in self && 'iterator' in Symbol, + blob: + 'FileReader' in self && + 'Blob' in self && + (function() { + try { + new Blob(); + return true + } catch (e) { + return false + } + })(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + }; + + function isDataView(obj) { + return obj && DataView.prototype.isPrototypeOf(obj) + } + + if (support.arrayBuffer) { + var viewClasses = [ + '[object Int8Array]', + '[object Uint8Array]', + '[object Uint8ClampedArray]', + '[object Int16Array]', + '[object Uint16Array]', + '[object Int32Array]', + '[object Uint32Array]', + '[object Float32Array]', + '[object Float64Array]' + ]; + + var isArrayBufferView = + ArrayBuffer.isView || + function(obj) { + return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1 + }; + } + + function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); + } + if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { + throw new TypeError('Invalid character in header field name') + } + return name.toLowerCase() + } + + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); + } + return value + } + + // Build a destructive iterator for the value list + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift(); + return {done: value === undefined, value: value} + } + }; + + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator + }; + } + + return iterator + } + + function Headers(headers) { + this.map = {}; + + if (headers instanceof Headers) { + headers.forEach(function(value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function(header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]); + }, this); + } + } + + Headers.prototype.append = function(name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; + }; + + Headers.prototype['delete'] = function(name) { + delete this.map[normalizeName(name)]; + }; + + Headers.prototype.get = function(name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null + }; + + Headers.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)) + }; + + Headers.prototype.set = function(name, value) { + this.map[normalizeName(name)] = normalizeValue(value); + }; + + Headers.prototype.forEach = function(callback, thisArg) { + for (var name in this.map) { + if (this.map.hasOwnProperty(name)) { + callback.call(thisArg, this.map[name], name, this); + } + } + }; + + Headers.prototype.keys = function() { + var items = []; + this.forEach(function(value, name) { + items.push(name); + }); + return iteratorFor(items) + }; + + Headers.prototype.values = function() { + var items = []; + this.forEach(function(value) { + items.push(value); + }); + return iteratorFor(items) + }; + + Headers.prototype.entries = function() { + var items = []; + this.forEach(function(value, name) { + items.push([name, value]); + }); + return iteratorFor(items) + }; + + if (support.iterable) { + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + } + + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')) + } + body.bodyUsed = true; + } + + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result); + }; + reader.onerror = function() { + reject(reader.error); + }; + }) + } + + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsArrayBuffer(blob); + return promise + } + + function readBlobAsText(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsText(blob); + return promise + } + + function readArrayBufferAsText(buf) { + var view = new Uint8Array(buf); + var chars = new Array(view.length); + + for (var i = 0; i < view.length; i++) { + chars[i] = String.fromCharCode(view[i]); + } + return chars.join('') + } + + function bufferClone(buf) { + if (buf.slice) { + return buf.slice(0) + } else { + var view = new Uint8Array(buf.byteLength); + view.set(new Uint8Array(buf)); + return view.buffer + } + } + + function Body() { + this.bodyUsed = false; + + this._initBody = function(body) { + this._bodyInit = body; + if (!body) { + this._bodyText = ''; + } else if (typeof body === 'string') { + this._bodyText = body; + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body; + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body; + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString(); + } else if (support.arrayBuffer && support.blob && isDataView(body)) { + this._bodyArrayBuffer = bufferClone(body.buffer); + // IE 10-11 can't handle a DataView body. + this._bodyInit = new Blob([this._bodyArrayBuffer]); + } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { + this._bodyArrayBuffer = bufferClone(body); + } else { + this._bodyText = body = Object.prototype.toString.call(body); + } + + if (!this.headers.get('content-type')) { + if (typeof body === 'string') { + this.headers.set('content-type', 'text/plain;charset=UTF-8'); + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set('content-type', this._bodyBlob.type); + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + } + }; + + if (support.blob) { + this.blob = function() { + var rejected = consumed(this); + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob) + } else if (this._bodyArrayBuffer) { + return Promise.resolve(new Blob([this._bodyArrayBuffer])) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob') + } else { + return Promise.resolve(new Blob([this._bodyText])) + } + }; + + this.arrayBuffer = function() { + if (this._bodyArrayBuffer) { + return consumed(this) || Promise.resolve(this._bodyArrayBuffer) + } else { + return this.blob().then(readBlobAsArrayBuffer) + } + }; + } + + this.text = function() { + var rejected = consumed(this); + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob) + } else if (this._bodyArrayBuffer) { + return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text') + } else { + return Promise.resolve(this._bodyText) + } + }; + + if (support.formData) { + this.formData = function() { + return this.text().then(decode) + }; + } + + this.json = function() { + return this.text().then(JSON.parse) + }; + + return this + } + + // HTTP methods whose capitalization should be normalized + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; + + function normalizeMethod(method) { + var upcased = method.toUpperCase(); + return methods.indexOf(upcased) > -1 ? upcased : method + } + + function Request(input, options) { + options = options || {}; + var body = options.body; + + if (input instanceof Request) { + if (input.bodyUsed) { + throw new TypeError('Already read') + } + this.url = input.url; + this.credentials = input.credentials; + if (!options.headers) { + this.headers = new Headers(input.headers); + } + this.method = input.method; + this.mode = input.mode; + this.signal = input.signal; + if (!body && input._bodyInit != null) { + body = input._bodyInit; + input.bodyUsed = true; + } + } else { + this.url = String(input); + } + + this.credentials = options.credentials || this.credentials || 'same-origin'; + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers); + } + this.method = normalizeMethod(options.method || this.method || 'GET'); + this.mode = options.mode || this.mode || null; + this.signal = options.signal || this.signal; + this.referrer = null; + + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests') + } + this._initBody(body); + } + + Request.prototype.clone = function() { + return new Request(this, {body: this._bodyInit}) + }; + + function decode(body) { + var form = new FormData(); + body + .trim() + .split('&') + .forEach(function(bytes) { + if (bytes) { + var split = bytes.split('='); + var name = split.shift().replace(/\+/g, ' '); + var value = split.join('=').replace(/\+/g, ' '); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } + }); + return form + } + + function parseHeaders(rawHeaders) { + var headers = new Headers(); + // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space + // https://tools.ietf.org/html/rfc7230#section-3.2 + var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); + preProcessedHeaders.split(/\r?\n/).forEach(function(line) { + var parts = line.split(':'); + var key = parts.shift().trim(); + if (key) { + var value = parts.join(':').trim(); + headers.append(key, value); + } + }); + return headers + } + + Body.call(Request.prototype); + + function Response(bodyInit, options) { + if (!options) { + options = {}; + } + + this.type = 'default'; + this.status = options.status === undefined ? 200 : options.status; + this.ok = this.status >= 200 && this.status < 300; + this.statusText = 'statusText' in options ? options.statusText : 'OK'; + this.headers = new Headers(options.headers); + this.url = options.url || ''; + this._initBody(bodyInit); + } + + Body.call(Response.prototype); + + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }) + }; + + Response.error = function() { + var response = new Response(null, {status: 0, statusText: ''}); + response.type = 'error'; + return response + }; + + var redirectStatuses = [301, 302, 303, 307, 308]; + + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code') + } + + return new Response(null, {status: status, headers: {location: url}}) + }; + + exports.DOMException = self.DOMException; + try { + new exports.DOMException(); + } catch (err) { + exports.DOMException = function(message, name) { + this.message = message; + this.name = name; + var error = Error(message); + this.stack = error.stack; + }; + exports.DOMException.prototype = Object.create(Error.prototype); + exports.DOMException.prototype.constructor = exports.DOMException; + } + + function fetch(input, init) { + return new Promise(function(resolve, reject) { + var request = new Request(input, init); + + if (request.signal && request.signal.aborted) { + return reject(new exports.DOMException('Aborted', 'AbortError')) + } + + var xhr = new XMLHttpRequest(); + + function abortXhr() { + xhr.abort(); + } + + xhr.onload = function() { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: parseHeaders(xhr.getAllResponseHeaders() || '') + }; + options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); + var body = 'response' in xhr ? xhr.response : xhr.responseText; + resolve(new Response(body, options)); + }; + + xhr.onerror = function() { + reject(new TypeError('Network request failed')); + }; + + xhr.ontimeout = function() { + reject(new TypeError('Network request failed')); + }; + + xhr.onabort = function() { + reject(new exports.DOMException('Aborted', 'AbortError')); + }; + + xhr.open(request.method, request.url, true); + + if (request.credentials === 'include') { + xhr.withCredentials = true; + } else if (request.credentials === 'omit') { + xhr.withCredentials = false; + } + + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob'; + } + + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value); + }); + + if (request.signal) { + request.signal.addEventListener('abort', abortXhr); + + xhr.onreadystatechange = function() { + // DONE (success or failure) + if (xhr.readyState === 4) { + request.signal.removeEventListener('abort', abortXhr); + } + }; + } + + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); + }) + } + + fetch.polyfill = true; + + if (!self.fetch) { + self.fetch = fetch; + self.Headers = Headers; + self.Request = Request; + self.Response = Response; + } + + exports.Headers = Headers; + exports.Request = Request; + exports.Response = Response; + exports.fetch = fetch; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; + +})({}); +})(__self__); +__self__.fetch.ponyfill = true; +// Remove "polyfill" property added by whatwg-fetch +delete __self__.fetch.polyfill; +// Choose between native implementation (global) or custom implementation (__self__) +// var ctx = global.fetch ? global : __self__; +var ctx = __self__; // this line disable service worker support temporarily +exports = ctx.fetch // To enable: import fetch from 'cross-fetch' +exports["default"] = ctx.fetch // For TypeScript consumers without esModuleInterop. +exports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch' +exports.Headers = ctx.Headers +exports.Request = ctx.Request +exports.Response = ctx.Response +module.exports = exports + + +/***/ }), + +/***/ "./node_modules/js-base64/base64.js": +/*!******************************************!*\ + !*** ./node_modules/js-base64/base64.js ***! + \******************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +// +// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND! +// +; +(function (global, factory) { + true + ? module.exports = factory() + : 0; +}((typeof self !== 'undefined' ? self + : typeof window !== 'undefined' ? window + : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g + : this), function () { + 'use strict'; + /** + * base64.ts + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + * + * @author Dan Kogai (https://github.com/dankogai) + */ + var version = '3.7.7'; + /** + * @deprecated use lowercase `version`. + */ + var VERSION = version; + var _hasBuffer = typeof Buffer === 'function'; + var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; + var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; + var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var b64chs = Array.prototype.slice.call(b64ch); + var b64tab = (function (a) { + var tab = {}; + a.forEach(function (c, i) { return tab[c] = i; }); + return tab; + })(b64chs); + var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; + var _fromCC = String.fromCharCode.bind(String); + var _U8Afrom = typeof Uint8Array.from === 'function' + ? Uint8Array.from.bind(Uint8Array) + : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); }; + var _mkUriSafe = function (src) { return src + .replace(/=/g, '').replace(/[+\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); }; + var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\+\/]/g, ''); }; + /** + * polyfill version of `btoa` + */ + var btoaPolyfill = function (bin) { + // console.log('polyfilled'); + var u32, c0, c1, c2, asc = ''; + var pad = bin.length % 3; + for (var i = 0; i < bin.length;) { + if ((c0 = bin.charCodeAt(i++)) > 255 || + (c1 = bin.charCodeAt(i++)) > 255 || + (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError('invalid character found'); + u32 = (c0 << 16) | (c1 << 8) | c2; + asc += b64chs[u32 >> 18 & 63] + + b64chs[u32 >> 12 & 63] + + b64chs[u32 >> 6 & 63] + + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; + }; + /** + * does what `window.btoa` of web browsers do. + * @param {String} bin binary string + * @returns {string} Base64-encoded string + */ + var _btoa = typeof btoa === 'function' ? function (bin) { return btoa(bin); } + : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); } + : btoaPolyfill; + var _fromUint8Array = _hasBuffer + ? function (u8a) { return Buffer.from(u8a).toString('base64'); } + : function (u8a) { + // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 + var maxargs = 0x1000; + var strs = []; + for (var i = 0, l = u8a.length; i < l; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join('')); + }; + /** + * converts a Uint8Array to a Base64 string. + * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 + * @returns {string} Base64 string + */ + var fromUint8Array = function (u8a, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); + }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const utob = (src: string) => unescape(encodeURIComponent(src)); + // reverting good old fationed regexp + var cb_utob = function (c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) + + _fromCC(0x80 | (cc & 0x3f))) + : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) + + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-8 string + * @returns {string} UTF-16 string + */ + var utob = function (u) { return u.replace(re_utob, cb_utob); }; + // + var _encode = _hasBuffer + ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); } + : _TE + ? function (s) { return _fromUint8Array(_TE.encode(s)); } + : function (s) { return _btoa(utob(s)); }; + /** + * converts a UTF-8-encoded string to a Base64 string. + * @param {boolean} [urlsafe] if `true` make the result URL-safe + * @returns {string} Base64 string + */ + var encode = function (src, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe + ? _mkUriSafe(_encode(src)) + : _encode(src); + }; + /** + * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. + * @returns {string} Base64 string + */ + var encodeURI = function (src) { return encode(src, true); }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const btou = (src: string) => decodeURIComponent(escape(src)); + // reverting good old fationed regexp + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function (cccc) { + switch (cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; + return (_fromCC((offset >>> 10) + 0xD800) + + _fromCC((offset & 0x3FF) + 0xDC00)); + case 3: + return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2))); + default: + return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1))); + } + }; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-16 string + * @returns {string} UTF-8 string + */ + var btou = function (b) { return b.replace(re_btou, cb_btou); }; + /** + * polyfill version of `atob` + */ + var atobPolyfill = function (asc) { + // console.log('polyfilled'); + asc = asc.replace(/\s+/g, ''); + if (!b64re.test(asc)) + throw new TypeError('malformed base64.'); + asc += '=='.slice(2 - (asc.length & 3)); + var u24, bin = '', r1, r2; + for (var i = 0; i < asc.length;) { + u24 = b64tab[asc.charAt(i++)] << 18 + | b64tab[asc.charAt(i++)] << 12 + | (r1 = b64tab[asc.charAt(i++)]) << 6 + | (r2 = b64tab[asc.charAt(i++)]); + bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) + : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) + : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); + } + return bin; + }; + /** + * does what `window.atob` of web browsers do. + * @param {String} asc Base64-encoded string + * @returns {string} binary string + */ + var _atob = typeof atob === 'function' ? function (asc) { return atob(_tidyB64(asc)); } + : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); } + : atobPolyfill; + // + var _toUint8Array = _hasBuffer + ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); } + : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); }; + /** + * converts a Base64 string to a Uint8Array. + */ + var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); }; + // + var _decode = _hasBuffer + ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); } + : _TD + ? function (a) { return _TD.decode(_toUint8Array(a)); } + : function (a) { return btou(_atob(a)); }; + var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); }; + /** + * converts a Base64 string to a UTF-8 string. + * @param {String} src Base64 string. Both normal and URL-safe are supported + * @returns {string} UTF-8 string + */ + var decode = function (src) { return _decode(_unURI(src)); }; + /** + * check if a value is a valid Base64 string + * @param {String} src a value to check + */ + var isValid = function (src) { + if (typeof src !== 'string') + return false; + var s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); + }; + // + var _noEnum = function (v) { + return { + value: v, enumerable: false, writable: true, configurable: true + }; + }; + /** + * extend String.prototype with relevant methods + */ + var extendString = function () { + var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); }; + _add('fromBase64', function () { return decode(this); }); + _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); + _add('toBase64URI', function () { return encode(this, true); }); + _add('toBase64URL', function () { return encode(this, true); }); + _add('toUint8Array', function () { return toUint8Array(this); }); + }; + /** + * extend Uint8Array.prototype with relevant methods + */ + var extendUint8Array = function () { + var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); }; + _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); + _add('toBase64URI', function () { return fromUint8Array(this, true); }); + _add('toBase64URL', function () { return fromUint8Array(this, true); }); + }; + /** + * extend Builtin prototypes with relevant methods + */ + var extendBuiltins = function () { + extendString(); + extendUint8Array(); + }; + var gBase64 = { + version: version, + VERSION: VERSION, + atob: _atob, + atobPolyfill: atobPolyfill, + btoa: _btoa, + btoaPolyfill: btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode: encode, + encodeURI: encodeURI, + encodeURL: encodeURI, + utob: utob, + btou: btou, + decode: decode, + isValid: isValid, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array, + extendString: extendString, + extendUint8Array: extendUint8Array, + extendBuiltins: extendBuiltins + }; + // + // export Base64 to the namespace + // + // ES5 is yet to have Object.assign() that may make transpilers unhappy. + // gBase64.Base64 = Object.assign({}, gBase64); + gBase64.Base64 = {}; + Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; }); + return gBase64; +})); + + +/***/ }), + +/***/ "./node_modules/ms/index.js": +/*!**********************************!*\ + !*** ./node_modules/ms/index.js ***! + \**********************************/ +/***/ (function(module) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! + \*****************************************************************/ +/***/ (function(module) { + +function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return arrayLikeToArray(r); +} +module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! + \**********************************************************************/ +/***/ (function(module) { + +function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; +} +module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! + \*****************************************************************/ +/***/ (function(module) { + +function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), + u = i.value; + } catch (n) { + return void e(n); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); +} +function _asyncToGenerator(n) { + return function () { + var t = this, + e = arguments; + return new Promise(function (r, o) { + var a = n.apply(t, e); + function _next(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); + } + function _throw(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); + } + _next(void 0); + }); + }; +} +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! + \***************************************************************/ +/***/ (function(module) { + +function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); +} +module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/construct.js": +/*!**********************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/construct.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js"); +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +function _construct(t, e, r) { + if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && setPrototypeOf(p, r.prototype), p; +} +module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/createClass.js": +/*!************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "./node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o); + } +} +function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; +} +module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "./node_modules/@babel/runtime/helpers/toPropertyKey.js"); +function _defineProperty(e, r, t) { + return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; +} +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! + \***************************************************************/ +/***/ (function(module) { + +function _getPrototypeOf(t) { + return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _getPrototypeOf(t); +} +module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/inherits.js": +/*!*********************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/inherits.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && setPrototypeOf(t, e); +} +module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \**********************************************************************/ +/***/ (function(module) { + +function _interopRequireDefault(e) { + return e && e.__esModule ? e : { + "default": e + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/isNativeFunction.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***! + \*****************************************************************/ +/***/ (function(module) { + +function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } +} +module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***! + \*************************************************************************/ +/***/ (function(module) { + +function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + } catch (t) {} + return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() { + return !!t; + }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); +} +module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js": +/*!****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! + \****************************************************************/ +/***/ (function(module) { + +function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); +} +module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! + \******************************************************************/ +/***/ (function(module) { + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js": +/*!************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***! + \************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"); +function _objectWithoutProperties(e, t) { + if (null == e) return {}; + var o, + r, + i = objectWithoutPropertiesLoose(e, t); + if (Object.getOwnPropertySymbols) { + var s = Object.getOwnPropertySymbols(e); + for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); + } + return i; +} +module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***! + \*****************************************************************************/ +/***/ (function(module) { + +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (e.includes(n)) continue; + t[n] = r[n]; + } + return t; +} +module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! + \**************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js"); +function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return assertThisInitialized(t); +} +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! + \***************************************************************/ +/***/ (function(module) { + +function _setPrototypeOf(t, e) { + return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _setPrototypeOf(t, e); +} +module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"); +var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "./node_modules/@babel/runtime/helpers/iterableToArray.js"); +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); +var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js"); +function _toConsumableArray(r) { + return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread(); +} +module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/toPrimitive.js": +/*!************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]); +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/toPropertyKey.js": +/*!**************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var _typeof = (__webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]); +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "./node_modules/@babel/runtime/helpers/toPrimitive.js"); +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; +} +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/typeof.js": +/*!*******************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! + \*******************************************************/ +/***/ (function(module) { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! + \***************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); +function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0; + } +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js": +/*!****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js"); +var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ "./node_modules/@babel/runtime/helpers/isNativeFunction.js"); +var construct = __webpack_require__(/*! ./construct.js */ "./node_modules/@babel/runtime/helpers/construct.js"); +function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? new Map() : void 0; + return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) { + if (null === t || !isNativeFunction(t)) return t; + if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t)) return r.get(t); + r.set(t, Wrapper); + } + function Wrapper() { + return construct(t, arguments, getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t.prototype, { + constructor: { + value: Wrapper, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), setPrototypeOf(Wrapper, t); + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _wrapNativeSuper(t); +} +module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/regenerator/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@babel/runtime/regenerator/index.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +// TODO(Babel 8): Remove this file. + +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-callable.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/a-callable.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); + +var $TypeError = TypeError; + +// `Assert: IsCallable(argument) is true` +module.exports = function (argument) { + if (isCallable(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a function'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-constructor.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/a-constructor.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); + +var $TypeError = TypeError; + +// `Assert: IsConstructor(argument) is true` +module.exports = function (argument) { + if (isConstructor(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a constructor'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-possible-prototype.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/a-possible-prototype.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isPossiblePrototype = __webpack_require__(/*! ../internals/is-possible-prototype */ "./node_modules/core-js/internals/is-possible-prototype.js"); + +var $String = String; +var $TypeError = TypeError; + +module.exports = function (argument) { + if (isPossiblePrototype(argument)) return argument; + throw new $TypeError("Can't set " + $String(argument) + ' as a prototype'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/add-to-unscopables.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/add-to-unscopables.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); + +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; + +// Array.prototype[@@unscopables] +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +if (ArrayPrototype[UNSCOPABLES] === undefined) { + defineProperty(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); +} + +// add a key to Array.prototype[@@unscopables] +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/advance-string-index.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/advance-string-index.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt); + +// `AdvanceStringIndex` abstract operation +// https://tc39.es/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/an-instance.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/an-instance.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); + +var $TypeError = TypeError; + +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; + throw new $TypeError('Incorrect invocation'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/an-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/an-object.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var $String = String; +var $TypeError = TypeError; + +// `Assert: Type(argument) is Object` +module.exports = function (argument) { + if (isObject(argument)) return argument; + throw new $TypeError($String(argument) + ' is not an object'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-buffer-basic-detection.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js/internals/array-buffer-basic-detection.js ***! + \************************************************************************/ +/***/ (function(module) { + +"use strict"; + +// eslint-disable-next-line es/no-typed-arrays -- safe +module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-buffer-view-core.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/array-buffer-view-core.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ "./node_modules/core-js/internals/array-buffer-basic-detection.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var Int8Array = globalThis.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var Uint8ClampedArray = globalThis.Uint8ClampedArray; +var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; +var TypedArray = Int8Array && getPrototypeOf(Int8Array); +var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); +var ObjectPrototype = Object.prototype; +var TypeError = globalThis.TypeError; + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); +var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; +// Fixing native typed arrays in Opera Presto crashes the browser, see #595 +var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera'; +var TYPED_ARRAY_TAG_REQUIRED = false; +var NAME, Constructor, Prototype; + +var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 +}; + +var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 +}; + +var isView = function isView(it) { + if (!isObject(it)) return false; + var klass = classof(it); + return klass === 'DataView' + || hasOwn(TypedArrayConstructorsList, klass) + || hasOwn(BigIntArrayConstructorsList, klass); +}; + +var getTypedArrayConstructor = function (it) { + var proto = getPrototypeOf(it); + if (!isObject(proto)) return; + var state = getInternalState(proto); + return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); +}; + +var isTypedArray = function (it) { + if (!isObject(it)) return false; + var klass = classof(it); + return hasOwn(TypedArrayConstructorsList, klass) + || hasOwn(BigIntArrayConstructorsList, klass); +}; + +var aTypedArray = function (it) { + if (isTypedArray(it)) return it; + throw new TypeError('Target is not a typed array'); +}; + +var aTypedArrayConstructor = function (C) { + if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C; + throw new TypeError(tryToString(C) + ' is not a typed array constructor'); +}; + +var exportTypedArrayMethod = function (KEY, property, forced, options) { + if (!DESCRIPTORS) return; + if (forced) for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = globalThis[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try { + delete TypedArrayConstructor.prototype[KEY]; + } catch (error) { + // old WebKit bug - some methods are non-configurable + try { + TypedArrayConstructor.prototype[KEY] = property; + } catch (error2) { /* empty */ } + } + } + if (!TypedArrayPrototype[KEY] || forced) { + defineBuiltIn(TypedArrayPrototype, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); + } +}; + +var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS) return; + if (setPrototypeOf) { + if (forced) for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = globalThis[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try { + delete TypedArrayConstructor[KEY]; + } catch (error) { /* empty */ } + } + if (!TypedArray[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); + } catch (error) { /* empty */ } + } else return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = globalThis[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + defineBuiltIn(TypedArrayConstructor, KEY, property); + } + } +}; + +for (NAME in TypedArrayConstructorsList) { + Constructor = globalThis[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + else NATIVE_ARRAY_BUFFER_VIEWS = false; +} + +for (NAME in BigIntArrayConstructorsList) { + Constructor = globalThis[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; +} + +// WebKit bug - typed arrays constructors prototype is Object.prototype +if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { + // eslint-disable-next-line no-shadow -- safe + TypedArray = function TypedArray() { + throw new TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray); + } +} + +if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype); + } +} + +// WebKit bug - one more object in Uint8ClampedArray prototype chain +if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); +} + +if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQUIRED = true; + defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, { + configurable: true, + get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } + }); + for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) { + createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME); + } +} + +module.exports = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + getTypedArrayConstructor: getTypedArrayConstructor, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-buffer.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/array-buffer.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ "./node_modules/core-js/internals/array-buffer-basic-detection.js"); +var FunctionName = __webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ "./node_modules/core-js/internals/define-built-ins.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toIndex = __webpack_require__(/*! ../internals/to-index */ "./node_modules/core-js/internals/to-index.js"); +var fround = __webpack_require__(/*! ../internals/math-fround */ "./node_modules/core-js/internals/math-fround.js"); +var IEEE754 = __webpack_require__(/*! ../internals/ieee754 */ "./node_modules/core-js/internals/ieee754.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var arrayFill = __webpack_require__(/*! ../internals/array-fill */ "./node_modules/core-js/internals/array-fill.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); +var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); +var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length'; +var WRONG_INDEX = 'Wrong index'; +var getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER); +var getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW); +var setInternalState = InternalStateModule.set; +var NativeArrayBuffer = globalThis[ARRAY_BUFFER]; +var $ArrayBuffer = NativeArrayBuffer; +var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE]; +var $DataView = globalThis[DATA_VIEW]; +var DataViewPrototype = $DataView && $DataView[PROTOTYPE]; +var ObjectPrototype = Object.prototype; +var Array = globalThis.Array; +var RangeError = globalThis.RangeError; +var fill = uncurryThis(arrayFill); +var reverse = uncurryThis([].reverse); + +var packIEEE754 = IEEE754.pack; +var unpackIEEE754 = IEEE754.unpack; + +var packInt8 = function (number) { + return [number & 0xFF]; +}; + +var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; +}; + +var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; +}; + +var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; +}; + +var packFloat32 = function (number) { + return packIEEE754(fround(number), 23, 4); +}; + +var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); +}; + +var addGetter = function (Constructor, key, getInternalState) { + defineBuiltInAccessor(Constructor[PROTOTYPE], key, { + configurable: true, + get: function () { + return getInternalState(this)[key]; + } + }); +}; + +var get = function (view, count, index, isLittleEndian) { + var store = getInternalDataViewState(view); + var intIndex = toIndex(index); + var boolIsLittleEndian = !!isLittleEndian; + if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + var pack = arraySlice(bytes, start, start + count); + return boolIsLittleEndian ? pack : reverse(pack); +}; + +var set = function (view, count, index, conversion, value, isLittleEndian) { + var store = getInternalDataViewState(view); + var intIndex = toIndex(index); + var pack = conversion(+value); + var boolIsLittleEndian = !!isLittleEndian; + if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1]; +}; + +if (!NATIVE_ARRAY_BUFFER) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, ArrayBufferPrototype); + var byteLength = toIndex(length); + setInternalState(this, { + type: ARRAY_BUFFER, + bytes: fill(Array(byteLength), 0), + byteLength: byteLength + }); + if (!DESCRIPTORS) { + this.byteLength = byteLength; + this.detached = false; + } + }; + + ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE]; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, DataViewPrototype); + anInstance(buffer, ArrayBufferPrototype); + var bufferState = getInternalArrayBufferState(buffer); + var bufferLength = bufferState.byteLength; + var offset = toIntegerOrInfinity(byteOffset); + if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH); + setInternalState(this, { + type: DATA_VIEW, + buffer: buffer, + byteLength: byteLength, + byteOffset: offset, + bytes: bufferState.bytes + }); + if (!DESCRIPTORS) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + DataViewPrototype = $DataView[PROTOTYPE]; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState); + addGetter($DataView, 'buffer', getInternalDataViewState); + addGetter($DataView, 'byteLength', getInternalDataViewState); + addGetter($DataView, 'byteOffset', getInternalDataViewState); + } + + defineBuiltIns(DataViewPrototype, { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false); + } + }); +} else { + var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER; + /* eslint-disable no-new, sonar/inconsistent-function-call -- required for testing */ + if (!fails(function () { + NativeArrayBuffer(1); + }) || !fails(function () { + new NativeArrayBuffer(-1); + }) || fails(function () { + new NativeArrayBuffer(); + new NativeArrayBuffer(1.5); + new NativeArrayBuffer(NaN); + return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME; + })) { + /* eslint-enable no-new, sonar/inconsistent-function-call -- required for testing */ + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, ArrayBufferPrototype); + return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer); + }; + + $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype; + + ArrayBufferPrototype.constructor = $ArrayBuffer; + + copyConstructorProperties($ArrayBuffer, NativeArrayBuffer); + } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER); + } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) { + setPrototypeOf(DataViewPrototype, ObjectPrototype); + } + + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = uncurryThis(DataViewPrototype.setInt8); + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, { + setInt8: function setInt8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); +} + +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); + +module.exports = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-copy-within.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/array-copy-within.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ "./node_modules/core-js/internals/delete-property-or-throw.js"); + +var min = Math.min; + +// `Array.prototype.copyWithin` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.copywithin +// eslint-disable-next-line es/no-array-prototype-copywithin -- safe +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = lengthOfArrayLike(O); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow(O, to); + to += inc; + from += inc; + } return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-fill.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/array-fill.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); + +// `Array.prototype.fill` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.fill +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = lengthOfArrayLike(O); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-for-each.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-for-each.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); + +var STRICT_METHOD = arrayMethodIsStrict('forEach'); + +// `Array.prototype.forEach` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.foreach +module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +// eslint-disable-next-line es/no-array-prototype-foreach -- safe +} : [].forEach; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-from-constructor-and-list.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/array-from-constructor-and-list.js ***! + \***************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); + +module.exports = function (Constructor, list, $length) { + var index = 0; + var length = arguments.length > 2 ? $length : lengthOfArrayLike(list); + var result = new Constructor(length); + while (length > index) result[index] = list[index++]; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-from.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/array-from.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); +var getIterator = __webpack_require__(/*! ../internals/get-iterator */ "./node_modules/core-js/internals/get-iterator.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); + +var $Array = Array; + +// `Array.from` method implementation +// https://tc39.es/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var IS_CONSTRUCTOR = isConstructor(this); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined); + var iteratorMethod = getIteratorMethod(O); + var index = 0; + var length, result, step, iterator, next, value; + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) { + result = IS_CONSTRUCTOR ? new this() : []; + iterator = getIterator(O, iteratorMethod); + next = iterator.next; + for (;!(step = call(next, iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); + } + } else { + length = lengthOfArrayLike(O); + result = IS_CONSTRUCTOR ? new this(length) : $Array(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); + } + } + result.length = index; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-includes.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-includes.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + if (length === 0) return !IS_INCLUDES && -1; + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el !== el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value !== value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-iteration.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/array-iteration.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); + +var push = uncurryThis([].push); + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE === 1; + var IS_FILTER = TYPE === 2; + var IS_SOME = TYPE === 3; + var IS_EVERY = TYPE === 4; + var IS_FIND_INDEX = TYPE === 6; + var IS_FILTER_REJECT = TYPE === 7; + var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var length = lengthOfArrayLike(self); + var boundFunction = bind(callbackfn, that); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod(7) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-last-index-of.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/array-last-index-of.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable es/no-array-prototype-lastindexof -- safe */ +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); + +var min = Math.min; +var $lastIndexOf = [].lastIndexOf; +var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); +var FORCED = NEGATIVE_ZERO || !STRICT_METHOD; + +// `Array.prototype.lastIndexOf` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.lastindexof +module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0; + var O = toIndexedObject(this); + var length = lengthOfArrayLike(O); + if (length === 0) return -1; + var index = length - 1; + if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; +} : $lastIndexOf; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-method-has-species-support.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/internals/array-method-has-species-support.js ***! + \****************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-method-is-strict.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/array-method-is-strict.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-reduce.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/array-reduce.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); + +var $TypeError = TypeError; + +var REDUCE_EMPTY = 'Reduce of empty array with no initial value'; + +// `Array.prototype.{ reduce, reduceRight }` methods implementation +var createMethod = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + var O = toObject(that); + var self = IndexedObject(O); + var length = lengthOfArrayLike(O); + aCallable(callbackfn); + if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw new $TypeError(REDUCE_EMPTY); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; +}; + +module.exports = { + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + left: createMethod(false), + // `Array.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-array.prototype.reduceright + right: createMethod(true) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-set-length.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/array-set-length.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); + +var $TypeError = TypeError; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Safari < 13 does not throw an error in this case +var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () { + // makes no sense without proper strict mode support + if (this !== undefined) return true; + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).length = 1; + } catch (error) { + return error instanceof TypeError; + } +}(); + +module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { + if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) { + throw new $TypeError('Cannot set read only .length'); + } return O.length = length; +} : function (O, length) { + return O.length = length; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-slice.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/array-slice.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +module.exports = uncurryThis([].slice); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-sort.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/array-sort.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); + +var floor = Math.floor; + +var sort = function (array, comparefn) { + var length = array.length; + + if (length < 8) { + // insertion sort + var i = 1; + var element, j; + + while (i < length) { + j = i; + element = array[i]; + while (j && comparefn(array[j - 1], element) > 0) { + array[j] = array[--j]; + } + if (j !== i++) array[j] = element; + } + } else { + // merge sort + var middle = floor(length / 2); + var left = sort(arraySlice(array, 0, middle), comparefn); + var right = sort(arraySlice(array, middle), comparefn); + var llength = left.length; + var rlength = right.length; + var lindex = 0; + var rindex = 0; + + while (lindex < llength || rindex < rlength) { + array[lindex + rindex] = (lindex < llength && rindex < rlength) + ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] + : lindex < llength ? left[lindex++] : right[rindex++]; + } + } + + return array; +}; + +module.exports = sort; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-species-constructor.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/array-species-constructor.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; + +// a part of `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? $Array : C; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-species-create.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/array-species-create.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js/internals/array-species-constructor.js"); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! + \****************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ "./node_modules/core-js/internals/iterator-close.js"); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! + \**************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + try { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + } catch (error) { return false; } // workaround of old WebKit + `eval` bug + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof-raw.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/classof-raw.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); + +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/classof.js ***! + \***************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Object = Object; + +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! + \***********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/correct-is-regexp-logic.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/correct-is-regexp-logic.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var MATCH = wellKnownSymbol('match'); + +module.exports = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (error1) { + try { + regexp[MATCH] = false; + return '/./'[METHOD_NAME](regexp); + } catch (error2) { /* empty */ } + } return false; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/correct-prototype-getter.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-html.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/create-html.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); + +var quot = /"/g; +var replace = uncurryThis(''.replace); + +// `CreateHTML` abstract operation +// https://tc39.es/ecma262/#sec-createhtml +module.exports = function (string, tag, attribute, value) { + var S = toString(requireObjectCoercible(string)); + var p1 = '<' + tag; + if (attribute !== '') p1 += ' ' + attribute + '="' + replace(toString(value), quot, '"') + '"'; + return p1 + '>' + S + ''; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-iter-result-object.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-iter-result-object.js ***! + \*********************************************************************/ +/***/ (function(module) { + +"use strict"; + +// `CreateIterResultObject` abstract operation +// https://tc39.es/ecma262/#sec-createiterresultobject +module.exports = function (value, done) { + return { value: value, done: done }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***! + \**************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property-descriptor.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! + \**********************************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/create-property.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = function (object, key, value) { + if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value)); + else object[key] = value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-built-in-accessor.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/define-built-in-accessor.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js"); +var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + +module.exports = function (target, name, descriptor) { + if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); + if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); + return defineProperty.f(target, name, descriptor); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-built-in.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/define-built-in.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js"); +var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js"); + +module.exports = function (O, key, value, options) { + if (!options) options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable(value)) makeBuiltIn(value, name, options); + if (options.global) { + if (simple) O[key] = value; + else defineGlobalProperty(key, value); + } else { + try { + if (!options.unsafe) delete O[key]; + else if (O[key]) simple = true; + } catch (error) { /* empty */ } + if (simple) O[key] = value; + else definePropertyModule.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-built-ins.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/define-built-ins.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); + +module.exports = function (target, src, options) { + for (var key in src) defineBuiltIn(target, key, src[key], options); + return target; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-global-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/define-global-property.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +// eslint-disable-next-line es/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; + +module.exports = function (key, value) { + try { + defineProperty(globalThis, key, { value: value, configurable: true, writable: true }); + } catch (error) { + globalThis[key] = value; + } return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/delete-property-or-throw.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/delete-property-or-throw.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); + +var $TypeError = TypeError; + +module.exports = function (O, P) { + if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/descriptors.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/descriptors.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// Detect IE8's incomplete defineProperty implementation +module.exports = !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/document-create-element.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/document-create-element.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var document = globalThis.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/does-not-exceed-safe-integer.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js/internals/does-not-exceed-safe-integer.js ***! + \************************************************************************/ +/***/ (function(module) { + +"use strict"; + +var $TypeError = TypeError; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 + +module.exports = function (it) { + if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); + return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/dom-iterables.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/dom-iterables.js ***! + \*********************************************************/ +/***/ (function(module) { + +"use strict"; + +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/dom-token-list-prototype.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/dom-token-list-prototype.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + +var classList = documentCreateElement('span').classList; +var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype; + +module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/enum-bug-keys.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! + \*********************************************************/ +/***/ (function(module) { + +"use strict"; + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-ff-version.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-ff-version.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +var firefox = userAgent.match(/firefox\/(\d+)/i); + +module.exports = !!firefox && +firefox[1]; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-is-ie-or-edge.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-is-ie-or-edge.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var UA = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +module.exports = /MSIE|Trident/.test(UA); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-is-ios-pebble.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-is-ios-pebble.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +module.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-is-ios.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-is-ios.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +// eslint-disable-next-line redos/no-vulnerable -- safe +module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-is-node.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-is-node.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ENVIRONMENT = __webpack_require__(/*! ../internals/environment */ "./node_modules/core-js/internals/environment.js"); + +module.exports = ENVIRONMENT === 'NODE'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-is-webos-webkit.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-is-webos-webkit.js ***! + \***********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +module.exports = /web0s(?!.*chrome)/i.test(userAgent); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-user-agent.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-user-agent.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +var navigator = globalThis.navigator; +var userAgent = navigator && navigator.userAgent; + +module.exports = userAgent ? String(userAgent) : ''; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-v8-version.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-v8-version.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +var process = globalThis.process; +var Deno = globalThis.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} + +// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` +// so check `userAgent` even if `.v8` exists, but 0 +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } +} + +module.exports = version; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment-webkit-version.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/environment-webkit-version.js ***! + \**********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); + +var webkit = userAgent.match(/AppleWebKit\/(\d+)\./); + +module.exports = !!webkit && +webkit[1]; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/environment.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/environment.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* global Bun, Deno -- detection */ +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +var userAgentStartsWith = function (string) { + return userAgent.slice(0, string.length) === string; +}; + +module.exports = (function () { + if (userAgentStartsWith('Bun/')) return 'BUN'; + if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE'; + if (userAgentStartsWith('Deno/')) return 'DENO'; + if (userAgentStartsWith('Node.js/')) return 'NODE'; + if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN'; + if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO'; + if (classof(globalThis.process) === 'process') return 'NODE'; + if (globalThis.window && globalThis.document) return 'BROWSER'; + return 'REST'; +})(); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/export.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/export.js ***! + \**************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js"); +var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = globalThis; + } else if (STATIC) { + target = globalThis[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = globalThis[TARGET] && globalThis[TARGET].prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + defineBuiltIn(target, key, sourceProperty, options); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/fails.js": +/*!*************************************************!*\ + !*** ./node_modules/core-js/internals/fails.js ***! + \*************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***! + \******************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: Remove from `core-js@4` since it's moved to entry points +__webpack_require__(/*! ../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); + +var SPECIES = wellKnownSymbol('species'); +var RegExpPrototype = RegExp.prototype; + +module.exports = function (KEY, exec, FORCED, SHAM) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegExp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) !== 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { + execCalled = true; + return null; + }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + FORCED + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + var $exec = regexp.exec; + if ($exec === regexpExec || $exec === RegExpPrototype.exec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) }; + } + return { done: true, value: call(nativeMethod, str, regexp, arg2) }; + } + return { done: false }; + }); + + defineBuiltIn(String.prototype, KEY, methods[0]); + defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); + } + + if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/flatten-into-array.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/flatten-into-array.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ "./node_modules/core-js/internals/does-not-exceed-safe-integer.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); + +// `FlattenIntoArray` abstract operation +// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray +var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? bind(mapper, thisArg) : false; + var element, elementLen; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + if (depth > 0 && isArray(element)) { + elementLen = lengthOfArrayLike(element); + targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1; + } else { + doesNotExceedSafeInteger(targetIndex + 1); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; +}; + +module.exports = flattenIntoArray; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-apply.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/function-apply.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var FunctionPrototype = Function.prototype; +var apply = FunctionPrototype.apply; +var call = FunctionPrototype.call; + +// eslint-disable-next-line es/no-reflect -- safe +module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { + return call.apply(apply, arguments); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-bind-context.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/function-bind-context.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js/internals/function-uncurry-this-clause.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var bind = uncurryThis(uncurryThis.bind); + +// optional / simple context binding +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-bind-native.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/function-bind-native.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + // eslint-disable-next-line es/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-bind.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/function-bind.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var $Function = Function; +var concat = uncurryThis([].concat); +var join = uncurryThis([].join); +var factories = {}; + +var construct = function (C, argsLength, args) { + if (!hasOwn(factories, argsLength)) { + var list = []; + var i = 0; + for (; i < argsLength; i++) list[i] = 'a[' + i + ']'; + factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')'); + } return factories[argsLength](C, args); +}; + +// `Function.prototype.bind` method implementation +// https://tc39.es/ecma262/#sec-function.prototype.bind +// eslint-disable-next-line es/no-function-prototype-bind -- detection +module.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) { + var F = aCallable(this); + var Prototype = F.prototype; + var partArgs = arraySlice(arguments, 1); + var boundFunction = function bound(/* args... */) { + var args = concat(partArgs, arraySlice(arguments)); + return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args); + }; + if (isObject(Prototype)) boundFunction.prototype = Prototype; + return boundFunction; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-call.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/function-call.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var call = Function.prototype.call; + +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-name.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/function-name.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); + +var FunctionPrototype = Function.prototype; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + +var EXISTS = hasOwn(FunctionPrototype, 'name'); +// additional protection from minified / mangled / dropped function names +var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); + +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-uncurry-this-accessor.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/function-uncurry-this-accessor.js ***! + \**************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); + +module.exports = function (object, key, method) { + try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); + } catch (error) { /* empty */ } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-uncurry-this-clause.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js/internals/function-uncurry-this-clause.js ***! + \************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +module.exports = function (fn) { + // Nashorn bug: + // https://github.com/zloirock/core-js/issues/1128 + // https://github.com/zloirock/core-js/issues/1130 + if (classofRaw(fn) === 'Function') return uncurryThis(fn); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-uncurry-this.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/function-uncurry-this.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); + +var FunctionPrototype = Function.prototype; +var call = FunctionPrototype.call; +var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); + +module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) { + return function () { + return call.apply(fn, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-built-in.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/get-built-in.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +var aFunction = function (argument) { + return isCallable(argument) ? argument : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-iterator-method.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator-method.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) + || getMethod(it, '@@iterator') + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-iterator.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); + +var $TypeError = TypeError; + +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); + throw new $TypeError(tryToString(argument) + ' is not iterable'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-json-replacer-function.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/get-json-replacer-function.js ***! + \**********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); + +var push = uncurryThis([].push); + +module.exports = function (replacer) { + if (isCallable(replacer)) return replacer; + if (!isArray(replacer)) return; + var rawLength = replacer.length; + var keys = []; + for (var i = 0; i < rawLength; i++) { + var element = replacer[i]; + if (typeof element == 'string') push(keys, element); + else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element)); + } + var keysLength = keys.length; + var root = true; + return function (key, value) { + if (root) { + root = false; + return value; + } + if (isArray(this)) return value; + for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value; + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-method.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/get-method.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); + +// `GetMethod` abstract operation +// https://tc39.es/ecma262/#sec-getmethod +module.exports = function (V, P) { + var func = V[P]; + return isNullOrUndefined(func) ? undefined : aCallable(func); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-substitution.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/get-substitution.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); + +var floor = Math.floor; +var charAt = uncurryThis(''.charAt); +var replace = uncurryThis(''.replace); +var stringSlice = uncurryThis(''.slice); +// eslint-disable-next-line redos/no-vulnerable -- safe +var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; + +// `GetSubstitution` abstract operation +// https://tc39.es/ecma262/#sec-getsubstitution +module.exports = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace(replacement, symbols, function (match, ch) { + var capture; + switch (charAt(ch, 0)) { + case '$': return '$'; + case '&': return matched; + case '`': return stringSlice(str, 0, position); + case "'": return stringSlice(str, tailPos); + case '<': + capture = namedCaptures[stringSlice(ch, 1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/global-this.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/global-this.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var check = function (it) { + return it && it.Math === Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line es/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || + check(typeof this == 'object' && this) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/has-own-property.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/has-own-property.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); + +var hasOwnProperty = uncurryThis({}.hasOwnProperty); + +// `HasOwnProperty` abstract operation +// https://tc39.es/ecma262/#sec-hasownproperty +// eslint-disable-next-line es/no-object-hasown -- safe +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/hidden-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/hidden-keys.js ***! + \*******************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/host-report-errors.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/host-report-errors.js ***! + \**************************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = function (a, b) { + try { + // eslint-disable-next-line no-console -- safe + arguments.length === 1 ? console.error(a) : console.error(a, b); + } catch (error) { /* empty */ } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/html.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/html.js ***! + \************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); + +module.exports = getBuiltIn('document', 'documentElement'); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ie8-dom-define.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + +// Thanks to IE8 for its funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a !== 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ieee754.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/ieee754.js ***! + \***************************************************/ +/***/ (function(module) { + +"use strict"; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +var $Array = Array; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; + +var pack = function (number, mantissaLength, bytes) { + var buffer = $Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs(number); + // eslint-disable-next-line no-self-compare -- NaN check + if (number !== number || number === Infinity) { + // eslint-disable-next-line no-self-compare -- NaN check + mantissa = number !== number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor(log(number) / LN2); + c = pow(2, -exponent); + if (number * c < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow(2, mantissaLength); + exponent += eBias; + } else { + mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength); + exponent = 0; + } + } + while (mantissaLength >= 8) { + buffer[index++] = mantissa & 255; + mantissa /= 256; + mantissaLength -= 8; + } + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + while (exponentLength > 0) { + buffer[index++] = exponent & 255; + exponent /= 256; + exponentLength -= 8; + } + buffer[index - 1] |= sign * 128; + return buffer; +}; + +var unpack = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + while (nBits > 0) { + exponent = exponent * 256 + buffer[index--]; + nBits -= 8; + } + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + while (nBits > 0) { + mantissa = mantissa * 256 + buffer[index--]; + nBits -= 8; + } + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity : Infinity; + } else { + mantissa += pow(2, mantissaLength); + exponent -= eBias; + } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength); +}; + +module.exports = { + pack: pack, + unpack: unpack +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/indexed-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/indexed-object.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +var $Object = Object; +var split = uncurryThis(''.split); + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) === 'String' ? split(it, '') : $Object(it); +} : $Object; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/inherit-if-required.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/inherit-if-required.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); + +// makes subclassing work correct for wrapped built-ins +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + isCallable(NewTarget = dummy.constructor) && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf($this, NewTargetPrototype); + return $this; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/inspect-source.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/inspect-source.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); + +var functionToString = uncurryThis(Function.toString); + +// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} + +module.exports = store.inspectSource; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/internal-state.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/internal-state.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "./node_modules/core-js/internals/weak-map-basic-detection.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = globalThis.TypeError; +var WeakMap = globalThis.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw new TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; + store.has = store.has; + store.set = store.set; + /* eslint-enable no-self-assign -- prototype methods protection */ + set = function (it, metadata) { + if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + store.set(it, metadata); + return metadata; + }; + get = function (it) { + return store.get(it) || {}; + }; + has = function (it) { + return store.has(it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-array-iterator-method.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-array.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/is-array.js ***! + \****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +// `IsArray` abstract operation +// https://tc39.es/ecma262/#sec-isarray +// eslint-disable-next-line es/no-array-isarray -- safe +module.exports = Array.isArray || function isArray(argument) { + return classof(argument) === 'Array'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-big-int-array.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/is-big-int-array.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); + +module.exports = function (it) { + var klass = classof(it); + return klass === 'BigInt64Array' || klass === 'BigUint64Array'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-callable.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/is-callable.js ***! + \*******************************************************/ +/***/ (function(module) { + +"use strict"; + +// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot +var documentAll = typeof document == 'object' && document.all; + +// `IsCallable` abstract operation +// https://tc39.es/ecma262/#sec-iscallable +// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing +module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { + return typeof argument == 'function' || argument === documentAll; +} : function (argument) { + return typeof argument == 'function'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-constructor.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/is-constructor.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); + +var noop = function () { /* empty */ }; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.test(noop); + +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) return false; + try { + construct(noop, [], argument); + return true; + } catch (error) { + return false; + } +}; + +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; + +isConstructorLegacy.sham = true; + +// `IsConstructor` abstract operation +// https://tc39.es/ecma262/#sec-isconstructor +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; +}) ? isConstructorLegacy : isConstructorModern; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-forced.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-forced.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value === POLYFILL ? true + : value === NATIVE ? false + : isCallable(detection) ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-integral-number.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/is-integral-number.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var floor = Math.floor; + +// `IsIntegralNumber` abstract operation +// https://tc39.es/ecma262/#sec-isintegralnumber +// eslint-disable-next-line es/no-number-isinteger -- safe +module.exports = Number.isInteger || function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-null-or-undefined.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/is-null-or-undefined.js ***! + \****************************************************************/ +/***/ (function(module) { + +"use strict"; + +// we can't use just `it == null` since of `document.all` special case +// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec +module.exports = function (it) { + return it === null || it === undefined; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-object.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-possible-prototype.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/is-possible-prototype.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +module.exports = function (argument) { + return isObject(argument) || argument === null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-pure.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/is-pure.js ***! + \***************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = false; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-regexp.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-regexp.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var MATCH = wellKnownSymbol('match'); + +// `IsRegExp` abstract operation +// https://tc39.es/ecma262/#sec-isregexp +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-symbol.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-symbol.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); + +var $Object = Object; + +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterate.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/iterate.js ***! + \***************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var getIterator = __webpack_require__(/*! ../internals/get-iterator */ "./node_modules/core-js/internals/get-iterator.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); +var iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ "./node_modules/core-js/internals/iterator-close.js"); + +var $TypeError = TypeError; + +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; + +var ResultPrototype = Result.prototype; + +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterator-close.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterator-close.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); + +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject(innerResult); + return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterator-create-constructor.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/iterator-create-constructor.js ***! + \***********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterator-define.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/iterator-define.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var FunctionName = __webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ "./node_modules/core-js/internals/iterator-create-constructor.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; + + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } + + return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + + return methods; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators-core.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterators-core.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +// `%IteratorPrototype%` object +// https://tc39.es/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +/* eslint-disable es/no-array-prototype-keys -- safe */ +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; +}); + +if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; +else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); + +// `%IteratorPrototype%[@@iterator]()` method +// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); +} + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/iterators.js ***! + \*****************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/length-of-array-like.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/length-of-array-like.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); + +// `LengthOfArrayLike` abstract operation +// https://tc39.es/ecma262/#sec-lengthofarraylike +module.exports = function (obj) { + return toLength(obj.length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/make-built-in.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/make-built-in.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var $String = String; +// eslint-disable-next-line es/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; +var stringSlice = uncurryThis(''.slice); +var replace = uncurryThis(''.replace); +var join = uncurryThis([].join); + +var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { + return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; +}); + +var TEMPLATE = String(String).split('String'); + +var makeBuiltIn = module.exports = function (value, name, options) { + if (stringSlice($String(name), 0, 7) === 'Symbol(') { + name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; + } + if (options && options.getter) name = 'get ' + name; + if (options && options.setter) name = 'set ' + name; + if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { + if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); + else value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { + defineProperty(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn(options, 'constructor') && options.constructor) { + if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); + // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable + } else if (value.prototype) value.prototype = undefined; + } catch (error) { /* empty */ } + var state = enforceInternalState(value); + if (!hasOwn(state, 'source')) { + state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); + } return value; +}; + +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +// eslint-disable-next-line no-extend-native -- required +Function.prototype.toString = makeBuiltIn(function toString() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); +}, 'toString'); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/math-float-round.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/math-float-round.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var sign = __webpack_require__(/*! ../internals/math-sign */ "./node_modules/core-js/internals/math-sign.js"); + +var abs = Math.abs; + +var EPSILON = 2.220446049250313e-16; // Number.EPSILON +var INVERSE_EPSILON = 1 / EPSILON; + +var roundTiesToEven = function (n) { + return n + INVERSE_EPSILON - INVERSE_EPSILON; +}; + +module.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) { + var n = +x; + var absolute = abs(n); + var s = sign(n); + if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON; + var a = (1 + FLOAT_EPSILON / EPSILON) * absolute; + var result = a - (a - absolute); + // eslint-disable-next-line no-self-compare -- NaN check + if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity; + return s * result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/math-fround.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/math-fround.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var floatRound = __webpack_require__(/*! ../internals/math-float-round */ "./node_modules/core-js/internals/math-float-round.js"); + +var FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23; +var FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104 +var FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126; + +// `Math.fround` method implementation +// https://tc39.es/ecma262/#sec-math.fround +// eslint-disable-next-line es/no-math-fround -- safe +module.exports = Math.fround || function fround(x) { + return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/math-sign.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/math-sign.js ***! + \*****************************************************/ +/***/ (function(module) { + +"use strict"; + +// `Math.sign` method implementation +// https://tc39.es/ecma262/#sec-math.sign +// eslint-disable-next-line es/no-math-sign -- safe +module.exports = Math.sign || function sign(x) { + var n = +x; + // eslint-disable-next-line no-self-compare -- NaN check + return n === 0 || n !== n ? n : n < 0 ? -1 : 1; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/math-trunc.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/math-trunc.js ***! + \******************************************************/ +/***/ (function(module) { + +"use strict"; + +var ceil = Math.ceil; +var floor = Math.floor; + +// `Math.trunc` method +// https://tc39.es/ecma262/#sec-math.trunc +// eslint-disable-next-line es/no-math-trunc -- safe +module.exports = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/microtask.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/microtask.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var safeGetBuiltIn = __webpack_require__(/*! ../internals/safe-get-built-in */ "./node_modules/core-js/internals/safe-get-built-in.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var macrotask = (__webpack_require__(/*! ../internals/task */ "./node_modules/core-js/internals/task.js").set); +var Queue = __webpack_require__(/*! ../internals/queue */ "./node_modules/core-js/internals/queue.js"); +var IS_IOS = __webpack_require__(/*! ../internals/environment-is-ios */ "./node_modules/core-js/internals/environment-is-ios.js"); +var IS_IOS_PEBBLE = __webpack_require__(/*! ../internals/environment-is-ios-pebble */ "./node_modules/core-js/internals/environment-is-ios-pebble.js"); +var IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/environment-is-webos-webkit */ "./node_modules/core-js/internals/environment-is-webos-webkit.js"); +var IS_NODE = __webpack_require__(/*! ../internals/environment-is-node */ "./node_modules/core-js/internals/environment-is-node.js"); + +var MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver; +var document = globalThis.document; +var process = globalThis.process; +var Promise = globalThis.Promise; +var microtask = safeGetBuiltIn('queueMicrotask'); +var notify, toggle, node, promise, then; + +// modern engines have queueMicrotask method +if (!microtask) { + var queue = new Queue(); + + var flush = function () { + var parent, fn; + if (IS_NODE && (parent = process.domain)) parent.exit(); + while (fn = queue.get()) try { + fn(); + } catch (error) { + if (queue.head) notify(); + throw error; + } + if (parent) parent.enter(); + }; + + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 + if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise.resolve(undefined); + // workaround of WebKit ~ iOS Safari 10.1 bug + promise.constructor = Promise; + then = bind(promise.then, promise); + notify = function () { + then(flush); + }; + // Node.js without promises + } else if (IS_NODE) { + notify = function () { + process.nextTick(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessage + // - onreadystatechange + // - setTimeout + } else { + // `webpack` dev server bug on IE global methods - use bind(fn, global) + macrotask = bind(macrotask, globalThis); + notify = function () { + macrotask(flush); + }; + } + + microtask = function (fn) { + if (!queue.head) notify(); + queue.add(fn); + }; +} + +module.exports = microtask; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/new-promise-capability.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/new-promise-capability.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); + +var $TypeError = TypeError; + +var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aCallable(resolve); + this.reject = aCallable(reject); +}; + +// `NewPromiseCapability` abstract operation +// https://tc39.es/ecma262/#sec-newpromisecapability +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/not-a-regexp.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/not-a-regexp.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js"); + +var $TypeError = TypeError; + +module.exports = function (it) { + if (isRegExp(it)) { + throw new $TypeError("The method doesn't accept regular expressions"); + } return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-assign.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-assign.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); + +// eslint-disable-next-line es/no-object-assign -- safe +var $assign = Object.assign; +// eslint-disable-next-line es/no-object-defineproperty -- required for testing +var defineProperty = Object.defineProperty; +var concat = uncurryThis([].concat); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +module.exports = !$assign || fails(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line es/no-symbol -- safe + var symbol = Symbol('assign detection'); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; + } + } return T; +} : $assign; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-create.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-create.js ***! + \*********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* global ActiveXObject -- old IE, WSH */ +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); + +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); + +var EmptyConstructor = function () { /* empty */ }; + +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; + +// Create object with fake `null` prototype: use ActiveX Object with cleared prototype +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + // eslint-disable-next-line no-useless-assignment -- avoid memory leak + activeXDocument = null; + return temp; +}; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; + +// Check for document.domain and active x support +// No need to use active x approach when document.domain is not set +// see https://github.com/es-shims/es5-shim/issues/150 +// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 +// avoid IE GC bug +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; + +hiddenKeys[IE_PROTO] = true; + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +// eslint-disable-next-line es/no-object-create -- safe +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-properties.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-properties.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es/no-object-defineproperties -- safe +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-property.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); +var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); + +var $TypeError = TypeError; +// eslint-disable-next-line es/no-object-defineproperty -- safe +var $defineProperty = Object.defineProperty; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); + +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-names-external.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names-external.js ***! + \**********************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable es/no-object-getownpropertynames -- safe */ +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) === 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! + \*************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.es/ecma262/#sec-object.getownpropertynames +// eslint-disable-next-line es/no-object-getownpropertynames -- safe +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! + \***************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); + +var IE_PROTO = sharedKey('IE_PROTO'); +var $Object = Object; +var ObjectPrototype = $Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +// eslint-disable-next-line es/no-object-getprototypeof -- safe +module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object ? ObjectPrototype : null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-is-prototype-of.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-is-prototype-of.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +module.exports = uncurryThis({}.isPrototypeOf); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys-internal.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys-internal.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var push = uncurryThis([].push); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +// eslint-disable-next-line es/no-object-keys -- safe +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! + \*************************************************************************/ +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var $propertyIsEnumerable = {}.propertyIsEnumerable; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-set-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable no-proto -- safe */ +var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "./node_modules/core-js/internals/function-uncurry-this-accessor.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/core-js/internals/a-possible-prototype.js"); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +// eslint-disable-next-line es/no-object-setprototypeof -- safe +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + requireObjectCoercible(O); + aPossiblePrototype(proto); + if (!isObject(O)) return O; + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-to-string.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/object-to-string.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); + +// `Object.prototype.toString` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.tostring +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var $TypeError = TypeError; + +// `OrdinaryToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-ordinarytoprimitive +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + throw new $TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/own-keys.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/own-keys.js ***! + \****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +var concat = uncurryThis([].concat); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/path.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/path.js ***! + \************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +module.exports = globalThis; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/perform.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/perform.js ***! + \***************************************************/ +/***/ (function(module) { + +"use strict"; + +module.exports = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/promise-constructor-detection.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/promise-constructor-detection.js ***! + \*************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js/internals/promise-native-constructor.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); +var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var ENVIRONMENT = __webpack_require__(/*! ../internals/environment */ "./node_modules/core-js/internals/environment.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var SPECIES = wellKnownSymbol('species'); +var SUBCLASSING = false; +var NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent); + +var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () { + var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor); + var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor); + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; + // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution + if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) { + // Detect correctness of subclassing with @@species support + var promise = new NativePromiseConstructor(function (resolve) { resolve(1); }); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES] = FakePromise; + SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; + if (!SUBCLASSING) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT; +}); + +module.exports = { + CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR, + REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT, + SUBCLASSING: SUBCLASSING +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/promise-native-constructor.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/promise-native-constructor.js ***! + \**********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +module.exports = globalThis.Promise; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/promise-resolve.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/promise-resolve.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/promise-statics-incorrect-iteration.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js/internals/promise-statics-incorrect-iteration.js ***! + \*******************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js/internals/promise-native-constructor.js"); +var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js/internals/promise-constructor-detection.js").CONSTRUCTOR); + +module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) { + NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ }); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/proxy-accessor.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/proxy-accessor.js ***! + \**********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); + +module.exports = function (Target, Source, key) { + key in Target || defineProperty(Target, key, { + configurable: true, + get: function () { return Source[key]; }, + set: function (it) { Source[key] = it; } + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/queue.js": +/*!*************************************************!*\ + !*** ./node_modules/core-js/internals/queue.js ***! + \*************************************************/ +/***/ (function(module) { + +"use strict"; + +var Queue = function () { + this.head = null; + this.tail = null; +}; + +Queue.prototype = { + add: function (item) { + var entry = { item: item, next: null }; + var tail = this.tail; + if (tail) tail.next = entry; + else this.head = entry; + this.tail = entry; + }, + get: function () { + var entry = this.head; + if (entry) { + var next = this.head = entry.next; + if (next === null) this.tail = null; + return entry.item; + } + } +}; + +module.exports = Queue; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-exec-abstract.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); + +var $TypeError = TypeError; + +// `RegExpExec` abstract operation +// https://tc39.es/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (isCallable(exec)) { + var result = call(exec, R, S); + if (result !== null) anObject(result); + return result; + } + if (classof(R) === 'RegExp') return call(regexpExec, R, S); + throw new $TypeError('RegExp#exec called on incompatible receiver'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-exec.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-exec.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ +/* eslint-disable regexp/no-useless-quantifier -- testing */ +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); +var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var getInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").get); +var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js"); +var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js"); + +var nativeReplace = shared('native-string-replace', String.prototype.replace); +var nativeExec = RegExp.prototype.exec; +var patchedExec = nativeExec; +var charAt = uncurryThis(''.charAt); +var indexOf = uncurryThis(''.indexOf); +var replace = uncurryThis(''.replace); +var stringSlice = uncurryThis(''.slice); + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + call(nativeExec, re1, 'a'); + call(nativeExec, re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; +})(); + +var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; + +if (PATCH) { + patchedExec = function exec(string) { + var re = this; + var state = getInternalState(re); + var str = toString(string); + var raw = state.raw; + var result, reCopy, lastIndex, match, i, object, group; + + if (raw) { + raw.lastIndex = re.lastIndex; + result = call(patchedExec, raw, str); + re.lastIndex = raw.lastIndex; + return result; + } + + var groups = state.groups; + var sticky = UNSUPPORTED_Y && re.sticky; + var flags = call(regexpFlags, re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = replace(flags, 'y', ''); + if (indexOf(flags, 'g') === -1) { + flags += 'g'; + } + + strCopy = stringSlice(str, re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = call(nativeExec, sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = stringSlice(match.input, charsAdded); + match[0] = stringSlice(match[0], charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ + call(nativeReplace, match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + if (match && groups) { + match.groups = object = create(null); + for (i = 0; i < groups.length; i++) { + group = groups[i]; + object[group[0]] = match[group[1]]; + } + } + + return match; + }; +} + +module.exports = patchedExec; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-flags.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-flags.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +// `RegExp.prototype.flags` getter implementation +// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.hasIndices) result += 'd'; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.unicodeSets) result += 'v'; + if (that.sticky) result += 'y'; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-get-flags.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-get-flags.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); + +var RegExpPrototype = RegExp.prototype; + +module.exports = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R) + ? call(regExpFlags, R) : flags; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-sticky-helpers.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError +var $RegExp = globalThis.RegExp; + +var UNSUPPORTED_Y = fails(function () { + var re = $RegExp('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') !== null; +}); + +// UC Browser bug +// https://github.com/zloirock/core-js/issues/1008 +var MISSED_STICKY = UNSUPPORTED_Y || fails(function () { + return !$RegExp('a', 'y').sticky; +}); + +var BROKEN_CARET = UNSUPPORTED_Y || fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = $RegExp('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') !== null; +}); + +module.exports = { + BROKEN_CARET: BROKEN_CARET, + MISSED_STICKY: MISSED_STICKY, + UNSUPPORTED_Y: UNSUPPORTED_Y +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-unsupported-dot-all.js ***! + \**********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError +var $RegExp = globalThis.RegExp; + +module.exports = fails(function () { + var re = $RegExp('.', 's'); + return !(re.dotAll && re.test('\n') && re.flags === 's'); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/regexp-unsupported-ncg.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/regexp-unsupported-ncg.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError +var $RegExp = globalThis.RegExp; + +module.exports = fails(function () { + var re = $RegExp('(?b)', 'g'); + return re.exec('b').groups.a !== 'b' || + 'b'.replace(re, '$c') !== 'bc'; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/require-object-coercible.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/require-object-coercible.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); + +var $TypeError = TypeError; + +// `RequireObjectCoercible` abstract operation +// https://tc39.es/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/safe-get-built-in.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/safe-get-built-in.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); + +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Avoid NodeJS experimental warning +module.exports = function (name) { + if (!DESCRIPTORS) return globalThis[name]; + var descriptor = getOwnPropertyDescriptor(globalThis, name); + return descriptor && descriptor.value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/same-value.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/same-value.js ***! + \******************************************************/ +/***/ (function(module) { + +"use strict"; + +// `SameValue` abstract operation +// https://tc39.es/ecma262/#sec-samevalue +// eslint-disable-next-line es/no-object-is -- safe +module.exports = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare -- NaN check + return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-species.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/set-species.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineBuiltInAccessor(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-to-string-tag.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (target, TAG, STATIC) { + if (target && !STATIC) target = target.prototype; + if (target && !hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared-key.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/shared-key.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared-store.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/shared-store.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js"); + +var SHARED = '__core-js_shared__'; +var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {}); + +(store.versions || (store.versions = [])).push({ + version: '3.38.1', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/shared.js ***! + \**************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); + +module.exports = function (key, value) { + return store[key] || (store[key] = value || {}); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/species-constructor.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/species-constructor.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var aConstructor = __webpack_require__(/*! ../internals/a-constructor */ "./node_modules/core-js/internals/a-constructor.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var SPECIES = wellKnownSymbol('species'); + +// `SpeciesConstructor` abstract operation +// https://tc39.es/ecma262/#sec-speciesconstructor +module.exports = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-html-forced.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/string-html-forced.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// check the existence of a method, lowercase +// of a tag and escaping quotes in arguments +module.exports = function (METHOD_NAME) { + return fails(function () { + var test = ''[METHOD_NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-multibyte.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/string-multibyte.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var stringSlice = uncurryThis(''.slice); + +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString(requireObjectCoercible($this)); + var position = toIntegerOrInfinity(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-punycode-to-ascii.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/string-punycode-to-ascii.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' +var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars +var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators +var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; +var baseMinusTMin = base - tMin; + +var $RangeError = RangeError; +var exec = uncurryThis(regexSeparators.exec); +var floor = Math.floor; +var fromCharCode = String.fromCharCode; +var charCodeAt = uncurryThis(''.charCodeAt); +var join = uncurryThis([].join); +var push = uncurryThis([].push); +var replace = uncurryThis(''.replace); +var split = uncurryThis(''.split); +var toLowerCase = uncurryThis(''.toLowerCase); + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + */ +var ucs2decode = function (string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = charCodeAt(string, counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = charCodeAt(string, counter++); + if ((extra & 0xFC00) === 0xDC00) { // Low surrogate. + push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + push(output, value); + counter--; + } + } else { + push(output, value); + } + } + return output; +}; + +/** + * Converts a digit/integer into a basic code point. + */ +var digitToBasic = function (digit) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + */ +var adapt = function (delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + while (delta > baseMinusTMin * tMax >> 1) { + delta = floor(delta / baseMinusTMin); + k += base; + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + */ +var encode = function (input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + var i, currentValue; + + // Handle the basic code points. + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < 0x80) { + push(output, fromCharCode(currentValue)); + } + } + + var basicLength = output.length; // number of basic code points. + var handledCPCount = basicLength; // number of code points that have been handled; + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + push(output, delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + // All non-basic code points < n have been handled already. Find the next larger one: + var m = maxInt; + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , but guard against overflow. + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + throw new $RangeError(OVERFLOW_ERROR); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < n && ++delta > maxInt) { + throw new $RangeError(OVERFLOW_ERROR); + } + if (currentValue === n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + var k = base; + while (true) { + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) break; + var qMinusT = q - t; + var baseMinusT = base - t; + push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT))); + q = floor(qMinusT / baseMinusT); + k += base; + } + + push(output, fromCharCode(digitToBasic(q))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength); + delta = 0; + handledCPCount++; + } + } + + delta++; + n++; + } + return join(output, ''); +}; + +module.exports = function (input) { + var encoded = []; + var labels = split(replace(toLowerCase(input), regexSeparators, '\u002E'), '.'); + var i, label; + for (i = 0; i < labels.length; i++) { + label = labels[i]; + push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label); + } + return join(encoded, '.'); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-trim-forced.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/string-trim-forced.js ***! + \**************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").PROPER); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); + +var non = '\u200B\u0085\u180E'; + +// check that a method works with the correct list +// of whitespaces and has a correct name +module.exports = function (METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() + || non[METHOD_NAME]() !== non + || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME); + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-trim.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/string-trim.js ***! + \*******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); + +var replace = uncurryThis(''.replace); +var ltrim = RegExp('^[' + whitespaces + ']+'); +var rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$'); + +// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation +var createMethod = function (TYPE) { + return function ($this) { + var string = toString(requireObjectCoercible($this)); + if (TYPE & 1) string = replace(string, ltrim, ''); + if (TYPE & 2) string = replace(string, rtrim, '$1'); + return string; + }; +}; + +module.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: createMethod(3) +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/symbol-constructor-detection.js": +/*!************************************************************************!*\ + !*** ./node_modules/core-js/internals/symbol-constructor-detection.js ***! + \************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable es/no-symbol -- required for testing */ +var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +var $String = globalThis.String; + +// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol('symbol detection'); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, + // of course, fail. + return !$String(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/symbol-define-to-primitive.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/symbol-define-to-primitive.js ***! + \**********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); + +module.exports = function () { + var Symbol = getBuiltIn('Symbol'); + var SymbolPrototype = Symbol && Symbol.prototype; + var valueOf = SymbolPrototype && SymbolPrototype.valueOf; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + + if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive + // eslint-disable-next-line no-unused-vars -- required for .length + defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) { + return call(valueOf, this); + }, { arity: 1 }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/symbol-registry-detection.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/symbol-registry-detection.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); + +/* eslint-disable es/no-symbol -- safe */ +module.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/task.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/task.js ***! + \************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); +var validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ "./node_modules/core-js/internals/validate-arguments-length.js"); +var IS_IOS = __webpack_require__(/*! ../internals/environment-is-ios */ "./node_modules/core-js/internals/environment-is-ios.js"); +var IS_NODE = __webpack_require__(/*! ../internals/environment-is-node */ "./node_modules/core-js/internals/environment-is-node.js"); + +var set = globalThis.setImmediate; +var clear = globalThis.clearImmediate; +var process = globalThis.process; +var Dispatch = globalThis.Dispatch; +var Function = globalThis.Function; +var MessageChannel = globalThis.MessageChannel; +var String = globalThis.String; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var $location, defer, channel, port; + +fails(function () { + // Deno throws a ReferenceError on `location` access without `--location` flag + $location = globalThis.location; +}); + +var run = function (id) { + if (hasOwn(queue, id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; + +var runner = function (id) { + return function () { + run(id); + }; +}; + +var eventListener = function (event) { + run(event.data); +}; + +var globalPostMessageDefer = function (id) { + // old engines have not location.origin + globalThis.postMessage(String(id), $location.protocol + '//' + $location.host); +}; + +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!set || !clear) { + set = function setImmediate(handler) { + validateArgumentsLength(arguments.length, 1); + var fn = isCallable(handler) ? handler : Function(handler); + var args = arraySlice(arguments, 1); + queue[++counter] = function () { + apply(fn, undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (IS_NODE) { + defer = function (id) { + process.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !IS_IOS) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = eventListener; + defer = bind(port.postMessage, port); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if ( + globalThis.addEventListener && + isCallable(globalThis.postMessage) && + !globalThis.importScripts && + $location && $location.protocol !== 'file:' && + !fails(globalPostMessageDefer) + ) { + defer = globalPostMessageDefer; + globalThis.addEventListener('message', eventListener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } +} + +module.exports = { + set: set, + clear: clear +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/this-number-value.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/this-number-value.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +// `thisNumberValue` abstract operation +// https://tc39.es/ecma262/#sec-thisnumbervalue +module.exports = uncurryThis(1.0.valueOf); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-absolute-index.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-absolute-index.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-big-int.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/to-big-int.js ***! + \******************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); + +var $TypeError = TypeError; + +// `ToBigInt` abstract operation +// https://tc39.es/ecma262/#sec-tobigint +module.exports = function (argument) { + var prim = toPrimitive(argument, 'number'); + if (typeof prim == 'number') throw new $TypeError("Can't convert number to bigint"); + // eslint-disable-next-line es/no-bigint -- safe + return BigInt(prim); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-index.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/to-index.js ***! + \****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); + +var $RangeError = RangeError; + +// `ToIndex` abstract operation +// https://tc39.es/ecma262/#sec-toindex +module.exports = function (it) { + if (it === undefined) return 0; + var number = toIntegerOrInfinity(it); + var length = toLength(number); + if (number !== length) throw new $RangeError('Wrong length or index'); + return length; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-indexed-object.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-indexed-object.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var trunc = __webpack_require__(/*! ../internals/math-trunc */ "./node_modules/core-js/internals/math-trunc.js"); + +// `ToIntegerOrInfinity` abstract operation +// https://tc39.es/ecma262/#sec-tointegerorinfinity +module.exports = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-length.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-length.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.es/ecma262/#sec-tolength +module.exports = function (argument) { + var len = toIntegerOrInfinity(argument); + return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-object.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +var $Object = Object; + +// `ToObject` abstract operation +// https://tc39.es/ecma262/#sec-toobject +module.exports = function (argument) { + return $Object(requireObjectCoercible(argument)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-offset.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-offset.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toPositiveInteger = __webpack_require__(/*! ../internals/to-positive-integer */ "./node_modules/core-js/internals/to-positive-integer.js"); + +var $RangeError = RangeError; + +module.exports = function (it, BYTES) { + var offset = toPositiveInteger(it); + if (offset % BYTES) throw new $RangeError('Wrong offset'); + return offset; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-positive-integer.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/to-positive-integer.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); + +var $RangeError = RangeError; + +module.exports = function (it) { + var result = toIntegerOrInfinity(it); + if (result < 0) throw new $RangeError("The argument can't be less than 0"); + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-primitive.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/to-primitive.js ***! + \********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var $TypeError = TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + +// `ToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-toprimitive +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) return result; + throw new $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-property-key.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/to-property-key.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); + +// `ToPropertyKey` abstract operation +// https://tc39.es/ecma262/#sec-topropertykey +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-string-tag-support.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/internals/to-string-tag-support.js ***! + \*****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +module.exports = String(test) === '[object z]'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-string.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-string.js ***! + \*****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); + +var $String = String; + +module.exports = function (argument) { + if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); + return $String(argument); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-uint8-clamped.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/to-uint8-clamped.js ***! + \************************************************************/ +/***/ (function(module) { + +"use strict"; + +var round = Math.round; + +module.exports = function (it) { + var value = round(it); + return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/try-to-string.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/try-to-string.js ***! + \*********************************************************/ +/***/ (function(module) { + +"use strict"; + +var $String = String; + +module.exports = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/typed-array-constructor.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/typed-array-constructor.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(/*! ../internals/typed-array-constructors-require-wrappers */ "./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js"); +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ "./node_modules/core-js/internals/array-buffer.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var isIntegralNumber = __webpack_require__(/*! ../internals/is-integral-number */ "./node_modules/core-js/internals/is-integral-number.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toIndex = __webpack_require__(/*! ../internals/to-index */ "./node_modules/core-js/internals/to-index.js"); +var toOffset = __webpack_require__(/*! ../internals/to-offset */ "./node_modules/core-js/internals/to-offset.js"); +var toUint8Clamped = __webpack_require__(/*! ../internals/to-uint8-clamped */ "./node_modules/core-js/internals/to-uint8-clamped.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f); +var typedArrayFrom = __webpack_require__(/*! ../internals/typed-array-from */ "./node_modules/core-js/internals/typed-array-from.js"); +var forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); +var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var arrayFromConstructorAndList = __webpack_require__(/*! ../internals/array-from-constructor-and-list */ "./node_modules/core-js/internals/array-from-constructor-and-list.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); + +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var enforceInternalState = InternalStateModule.enforce; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var RangeError = globalThis.RangeError; +var ArrayBuffer = ArrayBufferModule.ArrayBuffer; +var ArrayBufferPrototype = ArrayBuffer.prototype; +var DataView = ArrayBufferModule.DataView; +var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; +var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG; +var TypedArray = ArrayBufferViewCore.TypedArray; +var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype; +var isTypedArray = ArrayBufferViewCore.isTypedArray; +var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; +var WRONG_LENGTH = 'Wrong length'; + +var addGetter = function (it, key) { + defineBuiltInAccessor(it, key, { + configurable: true, + get: function () { + return getInternalState(this)[key]; + } + }); +}; + +var isArrayBuffer = function (it) { + var klass; + return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer'; +}; + +var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && !isSymbol(key) + && key in target + && isIntegralNumber(+key) + && key >= 0; +}; + +var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + key = toPropertyKey(key); + return isTypedArrayIndex(target, key) + ? createPropertyDescriptor(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); +}; + +var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + key = toPropertyKey(key); + if (isTypedArrayIndex(target, key) + && isObject(descriptor) + && hasOwn(descriptor, 'value') + && !hasOwn(descriptor, 'get') + && !hasOwn(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!hasOwn(descriptor, 'writable') || descriptor.writable) + && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); +}; + +if (DESCRIPTORS) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; + definePropertyModule.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype, 'buffer'); + addGetter(TypedArrayPrototype, 'byteOffset'); + addGetter(TypedArrayPrototype, 'byteLength'); + addGetter(TypedArrayPrototype, 'length'); + } + + $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + module.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+/)[0] / 8; + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = globalThis[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState(that); + data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance(that, TypedArrayConstructorPrototype); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw new RangeError(WRONG_LENGTH); + byteLength = $len - byteOffset; + if (byteLength < 0) throw new RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return arrayFromConstructorAndList(TypedArrayConstructor, data); + } else { + return call(typedArrayFrom, TypedArrayConstructor, data); + } + setInternalState(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype); + } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance(dummy, TypedArrayConstructorPrototype); + return inheritIfRequired(function () { + if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return arrayFromConstructorAndList(TypedArrayConstructor, data); + return call(typedArrayFrom, TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor; + + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } + + var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor; + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies(CONSTRUCTOR_NAME); + }; +} else module.exports = function () { /* empty */ }; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js ***! + \*************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable no-new, sonar/inconsistent-function-call -- required for testing */ +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); +var NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js").NATIVE_ARRAY_BUFFER_VIEWS); + +var ArrayBuffer = globalThis.ArrayBuffer; +var Int8Array = globalThis.Int8Array; + +module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () { + Int8Array(1); +}) || !fails(function () { + new Int8Array(-1); +}) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array(); + new Int8Array(null); + new Int8Array(1.5); + new Int8Array(iterable); +}, true) || fails(function () { + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/typed-array-from-species-and-list.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js/internals/typed-array-from-species-and-list.js ***! + \*****************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var arrayFromConstructorAndList = __webpack_require__(/*! ../internals/array-from-constructor-and-list */ "./node_modules/core-js/internals/array-from-constructor-and-list.js"); +var typedArraySpeciesConstructor = __webpack_require__(/*! ../internals/typed-array-species-constructor */ "./node_modules/core-js/internals/typed-array-species-constructor.js"); + +module.exports = function (instance, list) { + return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/typed-array-from.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/internals/typed-array-from.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var aConstructor = __webpack_require__(/*! ../internals/a-constructor */ "./node_modules/core-js/internals/a-constructor.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var getIterator = __webpack_require__(/*! ../internals/get-iterator */ "./node_modules/core-js/internals/get-iterator.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); +var isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ "./node_modules/core-js/internals/is-big-int-array.js"); +var aTypedArrayConstructor = (__webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js").aTypedArrayConstructor); +var toBigInt = __webpack_require__(/*! ../internals/to-big-int */ "./node_modules/core-js/internals/to-big-int.js"); + +module.exports = function from(source /* , mapfn, thisArg */) { + var C = aConstructor(this); + var O = toObject(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var i, length, result, thisIsBigIntArray, value, step, iterator, next; + if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) { + iterator = getIterator(O, iteratorMethod); + next = iterator.next; + O = []; + while (!(step = call(next, iterator)).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = bind(mapfn, arguments[2]); + } + length = lengthOfArrayLike(O); + result = new (aTypedArrayConstructor(C))(length); + thisIsBigIntArray = isBigIntArray(result); + for (i = 0; length > i; i++) { + value = mapping ? mapfn(O[i], i) : O[i]; + // FF30- typed arrays doesn't properly convert objects to typed array values + result[i] = thisIsBigIntArray ? toBigInt(value) : +value; + } + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/typed-array-species-constructor.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/typed-array-species-constructor.js ***! + \***************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js"); + +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor; + +// a part of `TypedArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#typedarray-species-create +module.exports = function (originalArray) { + return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray))); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/uid.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/internals/uid.js ***! + \***********************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); + +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/url-constructor-detection.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/url-constructor-detection.js ***! + \*********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = !fails(function () { + // eslint-disable-next-line unicorn/relative-url-style -- required for testing + var url = new URL('b?a=1&b=2&c=3', 'https://a'); + var params = url.searchParams; + var params2 = new URLSearchParams('a=1&a=2&b=3'); + var result = ''; + url.pathname = 'c%20d'; + params.forEach(function (value, key) { + params['delete']('b'); + result += key + value; + }); + params2['delete']('a', 2); + // `undefined` case is a Chromium 117 bug + // https://bugs.chromium.org/p/v8/issues/detail?id=14222 + params2['delete']('b', undefined); + return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b'))) + || (!params.size && (IS_PURE || !DESCRIPTORS)) + || !params.sort + || url.href !== 'https://a/c%20d?a=1&c=3' + || params.get('c') !== '3' + || String(new URLSearchParams('?a=1')) !== 'a=1' + || !params[ITERATOR] + // throws in Edge + || new URL('https://a@b').username !== 'a' + || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' + // not punycoded in Edge + || new URL('https://тест').host !== 'xn--e1aybc' + // not escaped in Chrome 62- + || new URL('https://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('https://x', undefined).host !== 'x'; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable es/no-symbol -- required for testing */ +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); + +module.exports = NATIVE_SYMBOL + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***! + \*******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// V8 ~ Chrome 36- +// https://bugs.chromium.org/p/v8/issues/detail?id=3334 +module.exports = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype !== 42; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/validate-arguments-length.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/validate-arguments-length.js ***! + \*********************************************************************/ +/***/ (function(module) { + +"use strict"; + +var $TypeError = TypeError; + +module.exports = function (passed, required) { + if (passed < required) throw new $TypeError('Not enough arguments'); + return passed; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/weak-map-basic-detection.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/weak-map-basic-detection.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); + +var WeakMap = globalThis.WeakMap; + +module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/well-known-symbol-define.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol-define.js ***! + \********************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js/internals/path.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/well-known-symbol-wrapped */ "./node_modules/core-js/internals/well-known-symbol-wrapped.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); + +module.exports = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, { + value: wrappedWellKnownSymbolModule.f(NAME) + }); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/well-known-symbol-wrapped.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol-wrapped.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +exports.f = wellKnownSymbol; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/well-known-symbol.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); +var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); + +var Symbol = globalThis.Symbol; +var WellKnownSymbolsStore = shared('wks'); +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; + +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name)) { + WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) + ? Symbol[name] + : createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/whitespaces.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/whitespaces.js ***! + \*******************************************************/ +/***/ (function(module) { + +"use strict"; + +// a string of all valid unicode whitespaces +module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array-buffer.constructor.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.array-buffer.constructor.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ "./node_modules/core-js/internals/array-buffer.js"); +var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); + +var ARRAY_BUFFER = 'ArrayBuffer'; +var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER]; +var NativeArrayBuffer = globalThis[ARRAY_BUFFER]; + +// `ArrayBuffer` constructor +// https://tc39.es/ecma262/#sec-arraybuffer-constructor +$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, { + ArrayBuffer: ArrayBuffer +}); + +setSpecies(ARRAY_BUFFER); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.concat.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.concat.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ "./node_modules/core-js/internals/does-not-exceed-safe-integer.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); + +// We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 +var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); + +// `Array.prototype.concat` method +// https://tc39.es/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = lengthOfArrayLike(E); + doesNotExceedSafeInteger(n + len); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + doesNotExceedSafeInteger(n + 1); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.filter.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.filter.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $filter = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").filter); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + +// `Array.prototype.filter` method +// https://tc39.es/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.find.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.find.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $find = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find); +var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); + +var FIND = 'find'; +var SKIPS_HOLES = true; + +// Shouldn't skip holes +// eslint-disable-next-line es/no-array-prototype-find -- testing +if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.find` method +// https://tc39.es/ecma262/#sec-array.prototype.find +$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.flat.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.flat.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var flattenIntoArray = __webpack_require__(/*! ../internals/flatten-into-array */ "./node_modules/core-js/internals/flatten-into-array.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); + +// `Array.prototype.flat` method +// https://tc39.es/ecma262/#sec-array.prototype.flat +$({ target: 'Array', proto: true }, { + flat: function flat(/* depthArg = 1 */) { + var depthArg = arguments.length ? arguments[0] : undefined; + var O = toObject(this); + var sourceLen = lengthOfArrayLike(O); + var A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg)); + return A; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.includes.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.includes.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $includes = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); + +// FF99+ bug +var BROKEN_ON_SPARSE = fails(function () { + // eslint-disable-next-line es/no-array-prototype-includes -- detection + return !Array(1).includes(); +}); + +// `Array.prototype.includes` method +// https://tc39.es/ecma262/#sec-array.prototype.includes +$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('includes'); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.iterator.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.iterator.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); +var defineIterator = __webpack_require__(/*! ../internals/iterator-define */ "./node_modules/core-js/internals/iterator-define.js"); +var createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ "./node_modules/core-js/internals/create-iter-result-object.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.es/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.es/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.es/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.es/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = null; + return createIterResultObject(undefined, true); + } + switch (state.kind) { + case 'keys': return createIterResultObject(index, false); + case 'values': return createIterResultObject(target[index], false); + } return createIterResultObject([index, target[index]], false); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.es/ecma262/#sec-createunmappedargumentsobject +// https://tc39.es/ecma262/#sec-createmappedargumentsobject +var values = Iterators.Arguments = Iterators.Array; + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +// V8 ~ Chrome 45- bug +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { + defineProperty(values, 'name', { value: 'values' }); +} catch (error) { /* empty */ } + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.join.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.join.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); + +var nativeJoin = uncurryThis([].join); + +var ES3_STRINGS = IndexedObject !== Object; +var FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ','); + +// `Array.prototype.join` method +// https://tc39.es/ecma262/#sec-array.prototype.join +$({ target: 'Array', proto: true, forced: FORCED }, { + join: function join(separator) { + return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.map.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.map.js ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $map = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").map); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); + +// `Array.prototype.map` method +// https://tc39.es/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.slice.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.slice.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); +var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); +var nativeSlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; +var max = Math.max; + +// `Array.prototype.slice` method +// https://tc39.es/ecma262/#sec-array.prototype.slice +// fallback for not array-like ES3 strings and DOM objects +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === $Array || Constructor === undefined) { + return nativeSlice(O, k, fin); + } + } + result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.sort.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.sort.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ "./node_modules/core-js/internals/delete-property-or-throw.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var internalSort = __webpack_require__(/*! ../internals/array-sort */ "./node_modules/core-js/internals/array-sort.js"); +var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); +var FF = __webpack_require__(/*! ../internals/environment-ff-version */ "./node_modules/core-js/internals/environment-ff-version.js"); +var IE_OR_EDGE = __webpack_require__(/*! ../internals/environment-is-ie-or-edge */ "./node_modules/core-js/internals/environment-is-ie-or-edge.js"); +var V8 = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); +var WEBKIT = __webpack_require__(/*! ../internals/environment-webkit-version */ "./node_modules/core-js/internals/environment-webkit-version.js"); + +var test = []; +var nativeSort = uncurryThis(test.sort); +var push = uncurryThis(test.push); + +// IE8- +var FAILS_ON_UNDEFINED = fails(function () { + test.sort(undefined); +}); +// V8 bug +var FAILS_ON_NULL = fails(function () { + test.sort(null); +}); +// Old WebKit +var STRICT_METHOD = arrayMethodIsStrict('sort'); + +var STABLE_SORT = !fails(function () { + // feature detection can be too slow, so check engines versions + if (V8) return V8 < 70; + if (FF && FF > 3) return; + if (IE_OR_EDGE) return true; + if (WEBKIT) return WEBKIT < 603; + + var result = ''; + var code, chr, value, index; + + // generate an array with more 512 elements (Chakra and old V8 fails only in this case) + for (code = 65; code < 76; code++) { + chr = String.fromCharCode(code); + + switch (code) { + case 66: case 69: case 70: case 72: value = 3; break; + case 68: case 71: value = 4; break; + default: value = 2; + } + + for (index = 0; index < 47; index++) { + test.push({ k: chr + index, v: value }); + } + } + + test.sort(function (a, b) { return b.v - a.v; }); + + for (index = 0; index < test.length; index++) { + chr = test[index].k.charAt(0); + if (result.charAt(result.length - 1) !== chr) result += chr; + } + + return result !== 'DGBEFHACIJK'; +}); + +var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT; + +var getSortCompare = function (comparefn) { + return function (x, y) { + if (y === undefined) return -1; + if (x === undefined) return 1; + if (comparefn !== undefined) return +comparefn(x, y) || 0; + return toString(x) > toString(y) ? 1 : -1; + }; +}; + +// `Array.prototype.sort` method +// https://tc39.es/ecma262/#sec-array.prototype.sort +$({ target: 'Array', proto: true, forced: FORCED }, { + sort: function sort(comparefn) { + if (comparefn !== undefined) aCallable(comparefn); + + var array = toObject(this); + + if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn); + + var items = []; + var arrayLength = lengthOfArrayLike(array); + var itemsLength, index; + + for (index = 0; index < arrayLength; index++) { + if (index in array) push(items, array[index]); + } + + internalSort(items, getSortCompare(comparefn)); + + itemsLength = lengthOfArrayLike(items); + index = 0; + + while (index < itemsLength) array[index] = items[index++]; + while (index < arrayLength) deletePropertyOrThrow(array, index++); + + return array; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.splice.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.splice.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ "./node_modules/core-js/internals/array-set-length.js"); +var doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ "./node_modules/core-js/internals/does-not-exceed-safe-integer.js"); +var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); +var deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ "./node_modules/core-js/internals/delete-property-or-throw.js"); +var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); + +var max = Math.max; +var min = Math.min; + +// `Array.prototype.splice` method +// https://tc39.es/ecma262/#sec-array.prototype.splice +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = lengthOfArrayLike(O); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart); + } + doesNotExceedSafeInteger(len + insertCount - actualDeleteCount); + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow(O, to); + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1); + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow(O, to); + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + setArrayLength(O, len - actualDeleteCount + insertCount); + return A; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.unscopables.flat.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.unscopables.flat.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// this method was added to unscopables after implementation +// in popular engines, so it's moved to a separate module +var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('flat'); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.function.name.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/modules/es.function.name.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var FUNCTION_NAME_EXISTS = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").EXISTS); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); + +var FunctionPrototype = Function.prototype; +var functionToString = uncurryThis(FunctionPrototype.toString); +var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; +var regExpExec = uncurryThis(nameRE.exec); +var NAME = 'name'; + +// Function instances `.name` property +// https://tc39.es/ecma262/#sec-function-instances-name +if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) { + defineBuiltInAccessor(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return regExpExec(nameRE, functionToString(this))[1]; + } catch (error) { + return ''; + } + } + }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.global-this.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.global-this.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); + +// `globalThis` object +// https://tc39.es/ecma262/#sec-globalthis +$({ global: true, forced: globalThis.globalThis !== globalThis }, { + globalThis: globalThis +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.json.stringify.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.json.stringify.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); +var getReplacerFunction = __webpack_require__(/*! ../internals/get-json-replacer-function */ "./node_modules/core-js/internals/get-json-replacer-function.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); + +var $String = String; +var $stringify = getBuiltIn('JSON', 'stringify'); +var exec = uncurryThis(/./.exec); +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var replace = uncurryThis(''.replace); +var numberToString = uncurryThis(1.0.toString); + +var tester = /[\uD800-\uDFFF]/g; +var low = /^[\uD800-\uDBFF]$/; +var hi = /^[\uDC00-\uDFFF]$/; + +var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () { + var symbol = getBuiltIn('Symbol')('stringify detection'); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) !== '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) !== '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) !== '{}'; +}); + +// https://github.com/tc39/proposal-well-formed-stringify +var ILL_FORMED_UNICODE = fails(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; +}); + +var stringifyWithSymbolsFix = function (it, replacer) { + var args = arraySlice(arguments); + var $replacer = getReplacerFunction(replacer); + if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined + args[1] = function (key, value) { + // some old implementations (like WebKit) could pass numbers as keys + if (isCallable($replacer)) value = call($replacer, this, $String(key), value); + if (!isSymbol(value)) return value; + }; + return apply($stringify, null, args); +}; + +var fixIllFormed = function (match, offset, string) { + var prev = charAt(string, offset - 1); + var next = charAt(string, offset + 1); + if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) { + return '\\u' + numberToString(charCodeAt(match, 0), 16); + } return match; +}; + +if ($stringify) { + // `JSON.stringify` method + // https://tc39.es/ecma262/#sec-json.stringify + $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { + var args = arraySlice(arguments); + var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); + return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result; + } + }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.number.constructor.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/modules/es.number.constructor.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js/internals/path.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f); +var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f); +var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); +var thisNumberValue = __webpack_require__(/*! ../internals/this-number-value */ "./node_modules/core-js/internals/this-number-value.js"); +var trim = (__webpack_require__(/*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim); + +var NUMBER = 'Number'; +var NativeNumber = globalThis[NUMBER]; +var PureNumberNamespace = path[NUMBER]; +var NumberPrototype = NativeNumber.prototype; +var TypeError = globalThis.TypeError; +var stringSlice = uncurryThis(''.slice); +var charCodeAt = uncurryThis(''.charCodeAt); + +// `ToNumeric` abstract operation +// https://tc39.es/ecma262/#sec-tonumeric +var toNumeric = function (value) { + var primValue = toPrimitive(value, 'number'); + return typeof primValue == 'bigint' ? primValue : toNumber(primValue); +}; + +// `ToNumber` abstract operation +// https://tc39.es/ecma262/#sec-tonumber +var toNumber = function (argument) { + var it = toPrimitive(argument, 'number'); + var first, third, radix, maxCode, digits, length, index, code; + if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number'); + if (typeof it == 'string' && it.length > 2) { + it = trim(it); + first = charCodeAt(it, 0); + if (first === 43 || first === 45) { + third = charCodeAt(it, 2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (charCodeAt(it, 1)) { + // fast equal of /^0b[01]+$/i + case 66: + case 98: + radix = 2; + maxCode = 49; + break; + // fast equal of /^0o[0-7]+$/i + case 79: + case 111: + radix = 8; + maxCode = 55; + break; + default: + return +it; + } + digits = stringSlice(it, 2); + length = digits.length; + for (index = 0; index < length; index++) { + code = charCodeAt(digits, index); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +var FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1')); + +var calledWithNew = function (dummy) { + // includes check on 1..constructor(foo) case + return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); }); +}; + +// `Number` constructor +// https://tc39.es/ecma262/#sec-number-constructor +var NumberWrapper = function Number(value) { + var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value)); + return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n; +}; + +NumberWrapper.prototype = NumberPrototype; +if (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper; + +$({ global: true, constructor: true, wrap: true, forced: FORCED }, { + Number: NumberWrapper +}); + +// Use `internal/copy-constructor-properties` helper in `core-js@4` +var copyConstructorProperties = function (target, source) { + for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES2015 (in case, if modules with ES2015 Number statics required before): + 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + + // ESNext + 'fromString,range' + ).split(','), j = 0, key; keys.length > j; j++) { + if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + +if (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace); +if (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.assign.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.assign.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var assign = __webpack_require__(/*! ../internals/object-assign */ "./node_modules/core-js/internals/object-assign.js"); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +// eslint-disable-next-line es/no-object-assign -- required for testing +$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { + assign: assign +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.get-own-property-descriptor.js ***! + \*******************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var nativeGetOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); + +var FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); }); + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js": +/*!********************************************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.get-own-property-descriptors.js ***! + \********************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); + +// `Object.getOwnPropertyDescriptors` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject(object); + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) createProperty(result, key, descriptor); + } + return result; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.get-own-property-symbols.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.get-own-property-symbols.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); + +// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); }); + +// `Object.getOwnPropertySymbols` method +// https://tc39.es/ecma262/#sec-object.getownpropertysymbols +$({ target: 'Object', stat: true, forced: FORCED }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : []; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.keys.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.keys.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var nativeKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.object.to-string.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.object.to-string.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js"); + +// `Object.prototype.toString` method +// https://tc39.es/ecma262/#sec-object.prototype.tostring +if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.all.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.all.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js/internals/perform.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ "./node_modules/core-js/internals/promise-statics-incorrect-iteration.js"); + +// `Promise.all` method +// https://tc39.es/ecma262/#sec-promise.all +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + all: function all(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call($promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.catch.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.catch.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js/internals/promise-constructor-detection.js").CONSTRUCTOR); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js/internals/promise-native-constructor.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// `Promise.prototype.catch` method +// https://tc39.es/ecma262/#sec-promise.prototype.catch +$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, { + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } +}); + +// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['catch']; + if (NativePromisePrototype['catch'] !== method) { + defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true }); + } +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.constructor.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.constructor.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var IS_NODE = __webpack_require__(/*! ../internals/environment-is-node */ "./node_modules/core-js/internals/environment-is-node.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js"); +var task = (__webpack_require__(/*! ../internals/task */ "./node_modules/core-js/internals/task.js").set); +var microtask = __webpack_require__(/*! ../internals/microtask */ "./node_modules/core-js/internals/microtask.js"); +var hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ "./node_modules/core-js/internals/host-report-errors.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js/internals/perform.js"); +var Queue = __webpack_require__(/*! ../internals/queue */ "./node_modules/core-js/internals/queue.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js/internals/promise-native-constructor.js"); +var PromiseConstructorDetection = __webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js/internals/promise-constructor-detection.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); + +var PROMISE = 'Promise'; +var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR; +var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; +var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; +var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +var setInternalState = InternalStateModule.set; +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var PromiseConstructor = NativePromiseConstructor; +var PromisePrototype = NativePromisePrototype; +var TypeError = globalThis.TypeError; +var document = globalThis.document; +var process = globalThis.process; +var newPromiseCapability = newPromiseCapabilityModule.f; +var newGenericPromiseCapability = newPromiseCapability; + +var DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; + +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && isCallable(then = it.then) ? then : false; +}; + +var callReaction = function (reaction, state) { + var value = state.value; + var ok = state.state === FULFILLED; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(new TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + call(then, result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } +}; + +var notify = function (state, isReject) { + if (state.notified) return; + state.notified = true; + microtask(function () { + var reactions = state.reactions; + var reaction; + while (reaction = reactions.get()) { + callReaction(reaction, state); + } + state.notified = false; + if (isReject && !state.rejection) onUnhandled(state); + }); +}; + +var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + globalThis.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function (state) { + call(task, globalThis, function () { + var promise = state.facade; + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function (state) { + call(task, globalThis, function () { + var promise = state.facade; + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function (fn, state, unwrap) { + return function (value) { + fn(state, value, unwrap); + }; +}; + +var internalReject = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(state, true); +}; + +var internalResolve = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (state.facade === value) throw new TypeError("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + call(then, value, + bind(internalResolve, wrapper, state), + bind(internalReject, wrapper, state) + ); + } catch (error) { + internalReject(wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(state, false); + } + } catch (error) { + internalReject({ done: false }, error, state); + } +}; + +// constructor polyfill +if (FORCED_PROMISE_CONSTRUCTOR) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromisePrototype); + aCallable(executor); + call(Internal, this); + var state = getInternalPromiseState(this); + try { + executor(bind(internalResolve, state), bind(internalReject, state)); + } catch (error) { + internalReject(state, error); + } + }; + + PromisePrototype = PromiseConstructor.prototype; + + // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: new Queue(), + rejection: false, + state: PENDING, + value: null + }); + }; + + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); + state.parent = true; + reaction.ok = isCallable(onFulfilled) ? onFulfilled : true; + reaction.fail = isCallable(onRejected) && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + if (state.state === PENDING) state.reactions.add(reaction); + else microtask(function () { + callReaction(reaction, state); + }); + return reaction.promise; + }); + + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalPromiseState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, state); + this.reject = bind(internalReject, state); + }; + + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) { + nativeThen = NativePromisePrototype.then; + + if (!NATIVE_PROMISE_SUBCLASSING) { + // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs + defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + call(nativeThen, that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + } + + // make `.constructor === Promise` work for native promise-based APIs + try { + delete NativePromisePrototype.constructor; + } catch (error) { /* empty */ } + + // make `instanceof Promise` work for native promise-based APIs + if (setPrototypeOf) { + setPrototypeOf(NativePromisePrototype, PromisePrototype); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false, true); +setSpecies(PROMISE); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.finally.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.finally.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js/internals/promise-native-constructor.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js"); +var promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ "./node_modules/core-js/internals/promise-resolve.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 +var NON_GENERIC = !!NativePromiseConstructor && fails(function () { + // eslint-disable-next-line unicorn/no-thenable -- required for testing + NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); +}); + +// `Promise.prototype.finally` method +// https://tc39.es/ecma262/#sec-promise.prototype.finally +$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = isCallable(onFinally); + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } +}); + +// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['finally']; + if (NativePromisePrototype['finally'] !== method) { + defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true }); + } +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.js ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +__webpack_require__(/*! ../modules/es.promise.constructor */ "./node_modules/core-js/modules/es.promise.constructor.js"); +__webpack_require__(/*! ../modules/es.promise.all */ "./node_modules/core-js/modules/es.promise.all.js"); +__webpack_require__(/*! ../modules/es.promise.catch */ "./node_modules/core-js/modules/es.promise.catch.js"); +__webpack_require__(/*! ../modules/es.promise.race */ "./node_modules/core-js/modules/es.promise.race.js"); +__webpack_require__(/*! ../modules/es.promise.reject */ "./node_modules/core-js/modules/es.promise.reject.js"); +__webpack_require__(/*! ../modules/es.promise.resolve */ "./node_modules/core-js/modules/es.promise.resolve.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.race.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.race.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); +var perform = __webpack_require__(/*! ../internals/perform */ "./node_modules/core-js/internals/perform.js"); +var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); +var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ "./node_modules/core-js/internals/promise-statics-incorrect-iteration.js"); + +// `Promise.race` method +// https://tc39.es/ecma262/#sec-promise.race +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + race: function race(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + iterate(iterable, function (promise) { + call($promiseResolve, C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.reject.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.reject.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js/internals/promise-constructor-detection.js").CONSTRUCTOR); + +// `Promise.reject` method +// https://tc39.es/ecma262/#sec-promise.reject +$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + reject: function reject(r) { + var capability = newPromiseCapabilityModule.f(this); + var capabilityReject = capability.reject; + capabilityReject(r); + return capability.promise; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.promise.resolve.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.promise.resolve.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ "./node_modules/core-js/internals/promise-native-constructor.js"); +var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ "./node_modules/core-js/internals/promise-constructor-detection.js").CONSTRUCTOR); +var promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ "./node_modules/core-js/internals/promise-resolve.js"); + +var PromiseConstructorWrapper = getBuiltIn('Promise'); +var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR; + +// `Promise.resolve` method +// https://tc39.es/ecma262/#sec-promise.resolve +$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, { + resolve: function resolve(x) { + return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.reflect.construct.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/modules/es.reflect.construct.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var bind = __webpack_require__(/*! ../internals/function-bind */ "./node_modules/core-js/internals/function-bind.js"); +var aConstructor = __webpack_require__(/*! ../internals/a-constructor */ "./node_modules/core-js/internals/a-constructor.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var nativeConstruct = getBuiltIn('Reflect', 'construct'); +var ObjectPrototype = Object.prototype; +var push = [].push; + +// `Reflect.construct` method +// https://tc39.es/ecma262/#sec-reflect.construct +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); +}); + +var ARGS_BUG = !fails(function () { + nativeConstruct(function () { /* empty */ }); +}); + +var FORCED = NEW_TARGET_BUG || ARGS_BUG; + +$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, { + construct: function construct(Target, args /* , newTarget */) { + aConstructor(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); + if (Target === newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + apply(push, $args, args); + return new (apply(bind, Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : ObjectPrototype); + var result = apply(Target, instance, args); + return isObject(result) ? result : instance; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.regexp.constructor.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/modules/es.regexp.constructor.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); +var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ "./node_modules/core-js/internals/regexp-get-flags.js"); +var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js"); +var proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ "./node_modules/core-js/internals/proxy-accessor.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").enforce); +var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js"); +var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js"); + +var MATCH = wellKnownSymbol('match'); +var NativeRegExp = globalThis.RegExp; +var RegExpPrototype = NativeRegExp.prototype; +var SyntaxError = globalThis.SyntaxError; +var exec = uncurryThis(RegExpPrototype.exec); +var charAt = uncurryThis(''.charAt); +var replace = uncurryThis(''.replace); +var stringIndexOf = uncurryThis(''.indexOf); +var stringSlice = uncurryThis(''.slice); +// TODO: Use only proper RegExpIdentifierName +var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; +var re1 = /a/g; +var re2 = /a/g; + +// "new" should create a new object, old webkit bug +var CORRECT_NEW = new NativeRegExp(re1) !== re1; + +var MISSED_STICKY = stickyHelpers.MISSED_STICKY; +var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; + +var BASE_FORCED = DESCRIPTORS && + (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () { + re2[MATCH] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + // eslint-disable-next-line sonar/inconsistent-function-call -- required for testing + return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i'; + })); + +var handleDotAll = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var brackets = false; + var chr; + for (; index <= length; index++) { + chr = charAt(string, index); + if (chr === '\\') { + result += chr + charAt(string, ++index); + continue; + } + if (!brackets && chr === '.') { + result += '[\\s\\S]'; + } else { + if (chr === '[') { + brackets = true; + } else if (chr === ']') { + brackets = false; + } result += chr; + } + } return result; +}; + +var handleNCG = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var named = []; + var names = create(null); + var brackets = false; + var ncg = false; + var groupid = 0; + var groupname = ''; + var chr; + for (; index <= length; index++) { + chr = charAt(string, index); + if (chr === '\\') { + chr += charAt(string, ++index); + } else if (chr === ']') { + brackets = false; + } else if (!brackets) switch (true) { + case chr === '[': + brackets = true; + break; + case chr === '(': + result += chr; + // ignore non-capturing groups + if (stringSlice(string, index + 1, index + 3) === '?:') { + continue; + } + if (exec(IS_NCG, stringSlice(string, index + 1))) { + index += 2; + ncg = true; + } + groupid++; + continue; + case chr === '>' && ncg: + if (groupname === '' || hasOwn(names, groupname)) { + throw new SyntaxError('Invalid capture group name'); + } + names[groupname] = true; + named[named.length] = [groupname, groupid]; + ncg = false; + groupname = ''; + continue; + } + if (ncg) groupname += chr; + else result += chr; + } return [result, named]; +}; + +// `RegExp` constructor +// https://tc39.es/ecma262/#sec-regexp-constructor +if (isForced('RegExp', BASE_FORCED)) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = isPrototypeOf(RegExpPrototype, this); + var patternIsRegExp = isRegExp(pattern); + var flagsAreUndefined = flags === undefined; + var groups = []; + var rawPattern = pattern; + var rawFlags, dotAll, sticky, handled, result, state; + + if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) { + return pattern; + } + + if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) { + pattern = pattern.source; + if (flagsAreUndefined) flags = getRegExpFlags(rawPattern); + } + + pattern = pattern === undefined ? '' : toString(pattern); + flags = flags === undefined ? '' : toString(flags); + rawPattern = pattern; + + if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) { + dotAll = !!flags && stringIndexOf(flags, 's') > -1; + if (dotAll) flags = replace(flags, /s/g, ''); + } + + rawFlags = flags; + + if (MISSED_STICKY && 'sticky' in re1) { + sticky = !!flags && stringIndexOf(flags, 'y') > -1; + if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, ''); + } + + if (UNSUPPORTED_NCG) { + handled = handleNCG(pattern); + pattern = handled[0]; + groups = handled[1]; + } + + result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); + + if (dotAll || sticky || groups.length) { + state = enforceInternalState(result); + if (dotAll) { + state.dotAll = true; + state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags); + } + if (sticky) state.sticky = true; + if (groups.length) state.groups = groups; + } + + if (pattern !== rawPattern) try { + // fails in old engines, but we have no alternatives for unsupported regex syntax + createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern); + } catch (error) { /* empty */ } + + return result; + }; + + for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) { + proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]); + } + + RegExpPrototype.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype; + defineBuiltIn(globalThis, 'RegExp', RegExpWrapper, { constructor: true }); +} + +// https://tc39.es/ecma262/#sec-get-regexp-@@species +setSpecies('RegExp'); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.regexp.exec.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.regexp.exec.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var exec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); + +// `RegExp.prototype.exec` method +// https://tc39.es/ecma262/#sec-regexp.prototype.exec +$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { + exec: exec +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.regexp.to-string.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.regexp.to-string.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").PROPER); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var $toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ "./node_modules/core-js/internals/regexp-get-flags.js"); + +var TO_STRING = 'toString'; +var RegExpPrototype = RegExp.prototype; +var nativeToString = RegExpPrototype[TO_STRING]; + +var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; }); +// FF44- RegExp#toString has a wrong name +var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING; + +// `RegExp.prototype.toString` method +// https://tc39.es/ecma262/#sec-regexp.prototype.tostring +if (NOT_GENERIC || INCORRECT_NAME) { + defineBuiltIn(RegExpPrototype, TO_STRING, function toString() { + var R = anObject(this); + var pattern = $toString(R.source); + var flags = $toString(getRegExpFlags(R)); + return '/' + pattern + '/' + flags; + }, { unsafe: true }); +} + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.from-code-point.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.from-code-point.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); + +var $RangeError = RangeError; +var fromCharCode = String.fromCharCode; +// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing +var $fromCodePoint = String.fromCodePoint; +var join = uncurryThis([].join); + +// length should be 1, old FF problem +var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1; + +// `String.fromCodePoint` method +// https://tc39.es/ecma262/#sec-string.fromcodepoint +$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + fromCodePoint: function fromCodePoint(x) { + var elements = []; + var length = arguments.length; + var i = 0; + var code; + while (length > i) { + code = +arguments[i++]; + if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point'); + elements[i] = code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00); + } return join(elements, ''); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.includes.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.includes.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ "./node_modules/core-js/internals/not-a-regexp.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js/internals/correct-is-regexp-logic.js"); + +var stringIndexOf = uncurryThis(''.indexOf); + +// `String.prototype.includes` method +// https://tc39.es/ecma262/#sec-string.prototype.includes +$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~stringIndexOf( + toString(requireObjectCoercible(this)), + toString(notARegExp(searchString)), + arguments.length > 1 ? arguments[1] : undefined + ); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.iterator.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.iterator.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var defineIterator = __webpack_require__(/*! ../internals/iterator-define */ "./node_modules/core-js/internals/iterator-define.js"); +var createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ "./node_modules/core-js/internals/create-iter-result-object.js"); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: toString(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return createIterResultObject(undefined, true); + point = charAt(string, index); + state.index += point.length; + return createIterResultObject(point, false); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.link.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.link.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var createHTML = __webpack_require__(/*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); +var forcedStringHTMLMethod = __webpack_require__(/*! ../internals/string-html-forced */ "./node_modules/core-js/internals/string-html-forced.js"); + +// `String.prototype.link` method +// https://tc39.es/ecma262/#sec-string.prototype.link +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, { + link: function link(url) { + return createHTML(this, 'a', 'href', url); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.match.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.match.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); +var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); + +// @@match logic +fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.es/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH); + return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@match + function (string) { + var rx = anObject(this); + var S = toString(string); + var res = maybeCallNative(nativeMatch, rx, S); + + if (res.done) return res.value; + + if (!rx.global) return regExpExec(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = toString(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.replace.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.replace.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); +var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js"); +var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var REPLACE = wellKnownSymbol('replace'); +var max = Math.max; +var min = Math.min; +var concat = uncurryThis([].concat); +var push = uncurryThis([].push); +var stringIndexOf = uncurryThis(''.indexOf); +var stringSlice = uncurryThis(''.slice); + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// IE <= 11 replaces $0 with the whole match, as if it was $& +// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 +var REPLACE_KEEPS_$0 = (function () { + // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing + return 'a'.replace(/./, '$0') === '$0'; +})(); + +// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string +var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; +})(); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive + return ''.replace(re, '$') !== '7'; +}); + +// @@replace logic +fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) { + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE); + return replacer + ? call(replacer, searchValue, O, replaceValue) + : call(nativeReplace, toString(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (string, replaceValue) { + var rx = anObject(this); + var S = toString(string); + + if ( + typeof replaceValue == 'string' && + stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && + stringIndexOf(replaceValue, '$<') === -1 + ) { + var res = maybeCallNative(nativeReplace, rx, S, replaceValue); + if (res.done) return res.value; + } + + var functionalReplace = isCallable(replaceValue); + if (!functionalReplace) replaceValue = toString(replaceValue); + + var global = rx.global; + var fullUnicode; + if (global) { + fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + + var results = []; + var result; + while (true) { + result = regExpExec(rx, S); + if (result === null) break; + + push(results, result); + if (!global) break; + + var matchStr = toString(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = toString(result[0]); + var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); + var captures = []; + var replacement; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = concat([matched], captures, position, S); + if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); + replacement = toString(apply(replaceValue, undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + + return accumulatedResult + stringSlice(S, nextSourcePosition); + } + ]; +}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.search.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.search.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var sameValue = __webpack_require__(/*! ../internals/same-value */ "./node_modules/core-js/internals/same-value.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); + +// @@search logic +fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.es/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = requireObjectCoercible(this); + var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH); + return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@search + function (string) { + var rx = anObject(this); + var S = toString(string); + var res = maybeCallNative(nativeSearch, rx, S); + + if (res.done) return res.value; + + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.split.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.split.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); +var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js"); +var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); +var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); +var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; +var MAX_UINT32 = 0xFFFFFFFF; +var min = Math.min; +var push = uncurryThis([].push); +var stringSlice = uncurryThis(''.slice); + +// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec +// Weex JS has frozen built-in prototypes, so use try / catch wrapper +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + // eslint-disable-next-line regexp/no-empty-group -- required for testing + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; +}); + +var BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' || + // eslint-disable-next-line regexp/no-empty-group -- required for testing + 'test'.split(/(?:)/, -1).length !== 4 || + 'ab'.split(/(?:ab)*/).length !== 2 || + '.'.split(/(.?)(.?)/).length !== 4 || + // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length; + +// @@split logic +fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) { + return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit); + } : nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.es/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT); + return splitter + ? call(splitter, separator, O, limit) + : call(internalSplit, toString(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (string, limit) { + var rx = anObject(this); + var S = toString(string); + + if (!BUGGY) { + var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit); + if (res.done) return res.value; + } + + var C = speciesConstructor(rx, RegExp); + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (UNSUPPORTED_Y ? 'g' : 'y'); + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = UNSUPPORTED_Y ? 0 : q; + var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S); + var e; + if ( + z === null || + (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + push(A, stringSlice(S, p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + push(A, z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + push(A, stringSlice(S, p)); + return A; + } + ]; +}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.trim.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.trim.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var $trim = (__webpack_require__(/*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim); +var forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ "./node_modules/core-js/internals/string-trim-forced.js"); + +// `String.prototype.trim` method +// https://tc39.es/ecma262/#sec-string.prototype.trim +$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.symbol.constructor.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/modules/es.symbol.constructor.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); +var $toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var nativeObjectCreate = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); +var getOwnPropertyNamesExternal = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ "./node_modules/core-js/internals/object-get-own-property-names-external.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/well-known-symbol-wrapped */ "./node_modules/core-js/internals/well-known-symbol-wrapped.js"); +var defineWellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol-define */ "./node_modules/core-js/internals/well-known-symbol-define.js"); +var defineSymbolToPrimitive = __webpack_require__(/*! ../internals/symbol-define-to-primitive */ "./node_modules/core-js/internals/symbol-define-to-primitive.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); + +var HIDDEN = sharedKey('hidden'); +var SYMBOL = 'Symbol'; +var PROTOTYPE = 'prototype'; + +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SYMBOL); + +var ObjectPrototype = Object[PROTOTYPE]; +var $Symbol = globalThis.Symbol; +var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE]; +var RangeError = globalThis.RangeError; +var TypeError = globalThis.TypeError; +var QObject = globalThis.QObject; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; +var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; +var push = uncurryThis([].push); + +var AllSymbols = shared('symbols'); +var ObjectPrototypeSymbols = shared('op-symbols'); +var WellKnownSymbolsStore = shared('wks'); + +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var fallbackDefineProperty = function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; + nativeDefineProperty(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); + } +}; + +var setSymbolDescriptor = DESCRIPTORS && fails(function () { + return nativeObjectCreate(nativeDefineProperty({}, 'a', { + get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } + })).a !== 7; +}) ? fallbackDefineProperty : nativeDefineProperty; + +var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS) symbol.description = description; + return symbol; +}; + +var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPropertyKey(P); + anObject(Attributes); + if (hasOwn(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null))); + O[HIDDEN][key] = true; + } else { + if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty(O, key, Attributes); +}; + +var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; +}; + +var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); +}; + +var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPropertyKey(V); + var enumerable = call(nativePropertyIsEnumerable, this, P); + if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false; + return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] + ? enumerable : true; +}; + +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPropertyKey(P); + if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor(it, key); + if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; +}; + +var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key); + }); + return result; +}; + +var $getOwnPropertySymbols = function (O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) { + push(result, AllSymbols[key]); + } + }); + return result; +}; + +// `Symbol` constructor +// https://tc39.es/ecma262/#sec-symbol-constructor +if (!NATIVE_SYMBOL) { + $Symbol = function Symbol() { + if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]); + var tag = uid(description); + var setter = function (value) { + var $this = this === undefined ? globalThis : this; + if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value); + if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false; + var descriptor = createPropertyDescriptor(1, value); + try { + setSymbolDescriptor($this, tag, descriptor); + } catch (error) { + if (!(error instanceof RangeError)) throw error; + fallbackDefineProperty($this, tag, descriptor); + } + }; + if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + SymbolPrototype = $Symbol[PROTOTYPE]; + + defineBuiltIn(SymbolPrototype, 'toString', function toString() { + return getInternalState(this).tag; + }); + + defineBuiltIn($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + + propertyIsEnumerableModule.f = $propertyIsEnumerable; + definePropertyModule.f = $defineProperty; + definePropertiesModule.f = $defineProperties; + getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + + if (DESCRIPTORS) { + // https://github.com/tc39/proposal-Symbol-description + defineBuiltInAccessor(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + if (!IS_PURE) { + defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { + Symbol: $Symbol +}); + +$forEach(objectKeys(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol(name); +}); + +$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames +}); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive +defineSymbolToPrimitive(); + +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag($Symbol, SYMBOL); + +hiddenKeys[HIDDEN] = true; + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.symbol.for.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.symbol.for.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var NATIVE_SYMBOL_REGISTRY = __webpack_require__(/*! ../internals/symbol-registry-detection */ "./node_modules/core-js/internals/symbol-registry-detection.js"); + +var StringToSymbolRegistry = shared('string-to-symbol-registry'); +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.for` method +// https://tc39.es/ecma262/#sec-symbol.for +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + 'for': function (key) { + var string = toString(key); + if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = getBuiltIn('Symbol')(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.symbol.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/modules/es.symbol.js ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +__webpack_require__(/*! ../modules/es.symbol.constructor */ "./node_modules/core-js/modules/es.symbol.constructor.js"); +__webpack_require__(/*! ../modules/es.symbol.for */ "./node_modules/core-js/modules/es.symbol.for.js"); +__webpack_require__(/*! ../modules/es.symbol.key-for */ "./node_modules/core-js/modules/es.symbol.key-for.js"); +__webpack_require__(/*! ../modules/es.json.stringify */ "./node_modules/core-js/modules/es.json.stringify.js"); +__webpack_require__(/*! ../modules/es.object.get-own-property-symbols */ "./node_modules/core-js/modules/es.object.get-own-property-symbols.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.symbol.key-for.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/modules/es.symbol.key-for.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); +var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var NATIVE_SYMBOL_REGISTRY = __webpack_require__(/*! ../internals/symbol-registry-detection */ "./node_modules/core-js/internals/symbol-registry-detection.js"); + +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.keyFor` method +// https://tc39.es/ecma262/#sec-symbol.keyfor +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol'); + if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + } +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.copy-within.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.copy-within.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $ArrayCopyWithin = __webpack_require__(/*! ../internals/array-copy-within */ "./node_modules/core-js/internals/array-copy-within.js"); + +var u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin); +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.copyWithin` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin +exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) { + return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.every.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.every.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $every = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").every); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.every` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every +exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) { + return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.fill.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.fill.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $fill = __webpack_require__(/*! ../internals/array-fill */ "./node_modules/core-js/internals/array-fill.js"); +var toBigInt = __webpack_require__(/*! ../internals/to-big-int */ "./node_modules/core-js/internals/to-big-int.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var slice = uncurryThis(''.slice); + +// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18 +var CONVERSION_BUG = fails(function () { + var count = 0; + // eslint-disable-next-line es/no-typed-arrays -- safe + new Int8Array(2).fill({ valueOf: function () { return count++; } }); + return count !== 1; +}); + +// `%TypedArray%.prototype.fill` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill +exportTypedArrayMethod('fill', function fill(value /* , start, end */) { + var length = arguments.length; + aTypedArray(this); + var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value; + return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined); +}, CONVERSION_BUG); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.filter.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.filter.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $filter = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").filter); +var fromSpeciesAndList = __webpack_require__(/*! ../internals/typed-array-from-species-and-list */ "./node_modules/core-js/internals/typed-array-from-species-and-list.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.filter` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter +exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return fromSpeciesAndList(this, list); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.find-index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.find-index.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $findIndex = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").findIndex); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.findIndex` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex +exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.find.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.find.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $find = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.find` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find +exportTypedArrayMethod('find', function find(predicate /* , thisArg */) { + return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.for-each.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.for-each.js ***! + \*****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.forEach` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach +exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.includes.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.includes.js ***! + \*****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $includes = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.includes` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes +exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) { + return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.index-of.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.index-of.js ***! + \*****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.indexOf` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof +exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.iterator.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.iterator.js ***! + \*****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var ArrayIterators = __webpack_require__(/*! ../modules/es.array.iterator */ "./node_modules/core-js/modules/es.array.iterator.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var Uint8Array = globalThis.Uint8Array; +var arrayValues = uncurryThis(ArrayIterators.values); +var arrayKeys = uncurryThis(ArrayIterators.keys); +var arrayEntries = uncurryThis(ArrayIterators.entries); +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var TypedArrayPrototype = Uint8Array && Uint8Array.prototype; + +var GENERIC = !fails(function () { + TypedArrayPrototype[ITERATOR].call([1]); +}); + +var ITERATOR_IS_VALUES = !!TypedArrayPrototype + && TypedArrayPrototype.values + && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values + && TypedArrayPrototype.values.name === 'values'; + +var typedArrayValues = function values() { + return arrayValues(aTypedArray(this)); +}; + +// `%TypedArray%.prototype.entries` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries +exportTypedArrayMethod('entries', function entries() { + return arrayEntries(aTypedArray(this)); +}, GENERIC); +// `%TypedArray%.prototype.keys` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys +exportTypedArrayMethod('keys', function keys() { + return arrayKeys(aTypedArray(this)); +}, GENERIC); +// `%TypedArray%.prototype.values` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values +exportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); +// `%TypedArray%.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator +exportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.join.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.join.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $join = uncurryThis([].join); + +// `%TypedArray%.prototype.join` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join +exportTypedArrayMethod('join', function join(separator) { + return $join(aTypedArray(this), separator); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.last-index-of.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.last-index-of.js ***! + \**********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var $lastIndexOf = __webpack_require__(/*! ../internals/array-last-index-of */ "./node_modules/core-js/internals/array-last-index-of.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.lastIndexOf` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof +exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + var length = arguments.length; + return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.map.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.map.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $map = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").map); +var typedArraySpeciesConstructor = __webpack_require__(/*! ../internals/typed-array-species-constructor */ "./node_modules/core-js/internals/typed-array-species-constructor.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.map` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map +exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) { + return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (typedArraySpeciesConstructor(O))(length); + }); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.reduce-right.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.reduce-right.js ***! + \*********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $reduceRight = (__webpack_require__(/*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").right); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.reduceRight` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright +exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.reduce.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.reduce.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $reduce = (__webpack_require__(/*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").left); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.reduce` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce +exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.reverse.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.reverse.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var floor = Math.floor; + +// `%TypedArray%.prototype.reverse` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse +exportTypedArrayMethod('reverse', function reverse() { + var that = this; + var length = aTypedArray(that).length; + var middle = floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.set.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.set.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); +var toOffset = __webpack_require__(/*! ../internals/to-offset */ "./node_modules/core-js/internals/to-offset.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var RangeError = globalThis.RangeError; +var Int8Array = globalThis.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var $set = Int8ArrayPrototype && Int8ArrayPrototype.set; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +var WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + var array = new Uint8ClampedArray(2); + call($set, array, { length: 1, 0: 3 }, 1); + return array[1] !== 3; +}); + +// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other +var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () { + var array = new Int8Array(2); + array.set(1); + array.set('2', 1); + return array[0] !== 0 || array[1] !== 2; +}); + +// `%TypedArray%.prototype.set` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set +exportTypedArrayMethod('set', function set(arrayLike /* , offset */) { + aTypedArray(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var src = toIndexedObject(arrayLike); + if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset); + var length = this.length; + var len = lengthOfArrayLike(src); + var index = 0; + if (len + offset > length) throw new RangeError('Wrong length'); + while (index < len) this[offset + index] = src[index++]; +}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.slice.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.slice.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var typedArraySpeciesConstructor = __webpack_require__(/*! ../internals/typed-array-species-constructor */ "./node_modules/core-js/internals/typed-array-species-constructor.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +var FORCED = fails(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + new Int8Array(1).slice(); +}); + +// `%TypedArray%.prototype.slice` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice +exportTypedArrayMethod('slice', function slice(start, end) { + var list = arraySlice(aTypedArray(this), start, end); + var C = typedArraySpeciesConstructor(this); + var index = 0; + var length = list.length; + var result = new C(length); + while (length > index) result[index] = list[index++]; + return result; +}, FORCED); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.some.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.some.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var $some = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").some); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.some` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some +exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) { + return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.sort.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.sort.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js/internals/function-uncurry-this-clause.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); +var internalSort = __webpack_require__(/*! ../internals/array-sort */ "./node_modules/core-js/internals/array-sort.js"); +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var FF = __webpack_require__(/*! ../internals/environment-ff-version */ "./node_modules/core-js/internals/environment-ff-version.js"); +var IE_OR_EDGE = __webpack_require__(/*! ../internals/environment-is-ie-or-edge */ "./node_modules/core-js/internals/environment-is-ie-or-edge.js"); +var V8 = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); +var WEBKIT = __webpack_require__(/*! ../internals/environment-webkit-version */ "./node_modules/core-js/internals/environment-webkit-version.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var Uint16Array = globalThis.Uint16Array; +var nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort); + +// WebKit +var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () { + nativeSort(new Uint16Array(2), null); +}) && fails(function () { + nativeSort(new Uint16Array(2), {}); +})); + +var STABLE_SORT = !!nativeSort && !fails(function () { + // feature detection can be too slow, so check engines versions + if (V8) return V8 < 74; + if (FF) return FF < 67; + if (IE_OR_EDGE) return true; + if (WEBKIT) return WEBKIT < 602; + + var array = new Uint16Array(516); + var expected = Array(516); + var index, mod; + + for (index = 0; index < 516; index++) { + mod = index % 4; + array[index] = 515 - index; + expected[index] = index - 2 * mod + 3; + } + + nativeSort(array, function (a, b) { + return (a / 4 | 0) - (b / 4 | 0); + }); + + for (index = 0; index < 516; index++) { + if (array[index] !== expected[index]) return true; + } +}); + +var getSortCompare = function (comparefn) { + return function (x, y) { + if (comparefn !== undefined) return +comparefn(x, y) || 0; + // eslint-disable-next-line no-self-compare -- NaN check + if (y !== y) return -1; + // eslint-disable-next-line no-self-compare -- NaN check + if (x !== x) return 1; + if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1; + return x > y; + }; +}; + +// `%TypedArray%.prototype.sort` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort +exportTypedArrayMethod('sort', function sort(comparefn) { + if (comparefn !== undefined) aCallable(comparefn); + if (STABLE_SORT) return nativeSort(this, comparefn); + + return internalSort(aTypedArray(this), getSortCompare(comparefn)); +}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.subarray.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.subarray.js ***! + \*****************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var typedArraySpeciesConstructor = __webpack_require__(/*! ../internals/typed-array-species-constructor */ "./node_modules/core-js/internals/typed-array-species-constructor.js"); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.subarray` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray +exportTypedArrayMethod('subarray', function subarray(begin, end) { + var O = aTypedArray(this); + var length = O.length; + var beginIndex = toAbsoluteIndex(begin, length); + var C = typedArraySpeciesConstructor(O); + return new C( + O.buffer, + O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex) + ); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.to-locale-string.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.to-locale-string.js ***! + \*************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); +var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); + +var Int8Array = globalThis.Int8Array; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $toLocaleString = [].toLocaleString; + +// iOS Safari 6.x fails here +var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () { + $toLocaleString.call(new Int8Array(1)); +}); + +var FORCED = fails(function () { + return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString(); +}) || !fails(function () { + Int8Array.prototype.toLocaleString.call([1, 2]); +}); + +// `%TypedArray%.prototype.toLocaleString` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring +exportTypedArrayMethod('toLocaleString', function toLocaleString() { + return apply( + $toLocaleString, + TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this), + arraySlice(arguments) + ); +}, FORCED); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.to-string.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.to-string.js ***! + \******************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var exportTypedArrayMethod = (__webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js").exportTypedArrayMethod); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); + +var Uint8Array = globalThis.Uint8Array; +var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {}; +var arrayToString = [].toString; +var join = uncurryThis([].join); + +if (fails(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return join(this); + }; +} + +var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString; + +// `%TypedArray%.prototype.toString` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring +exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.uint8-array.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.uint8-array.js ***! + \********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ "./node_modules/core-js/internals/typed-array-constructor.js"); + +// `Uint8Array` constructor +// https://tc39.es/ecma262/#sec-typedarray-objects +createTypedArrayConstructor('Uint8', function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/esnext.global-this.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/esnext.global-this.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: Remove from `core-js@4` +__webpack_require__(/*! ../modules/es.global-this */ "./node_modules/core-js/modules/es.global-this.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.dom-collections.for-each.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***! + \**********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); +var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js"); +var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); + +var handlePrototype = function (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { + createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); + } catch (error) { + CollectionPrototype.forEach = forEach; + } +}; + +for (var COLLECTION_NAME in DOMIterables) { + if (DOMIterables[COLLECTION_NAME]) { + handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype); + } +} + +handlePrototype(DOMTokenListPrototype); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.dom-collections.iterator.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/modules/web.dom-collections.iterator.js ***! + \**********************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); +var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js"); +var ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ "./node_modules/core-js/modules/es.array.iterator.js"); +var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayValues = ArrayIteratorMethods.values; + +var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR] !== ArrayValues) try { + createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR] = ArrayValues; + } + setToStringTag(CollectionPrototype, COLLECTION_NAME, true); + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } +}; + +for (var COLLECTION_NAME in DOMIterables) { + handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME); +} + +handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.url-search-params.constructor.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/modules/web.url-search-params.constructor.js ***! + \***************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +__webpack_require__(/*! ../modules/es.array.iterator */ "./node_modules/core-js/modules/es.array.iterator.js"); +__webpack_require__(/*! ../modules/es.string.from-code-point */ "./node_modules/core-js/modules/es.string.from-code-point.js"); +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var safeGetBuiltIn = __webpack_require__(/*! ../internals/safe-get-built-in */ "./node_modules/core-js/internals/safe-get-built-in.js"); +var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ "./node_modules/core-js/internals/url-constructor-detection.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ "./node_modules/core-js/internals/define-built-ins.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ "./node_modules/core-js/internals/iterator-create-constructor.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var $toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var getIterator = __webpack_require__(/*! ../internals/get-iterator */ "./node_modules/core-js/internals/get-iterator.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); +var createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ "./node_modules/core-js/internals/create-iter-result-object.js"); +var validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ "./node_modules/core-js/internals/validate-arguments-length.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var arraySort = __webpack_require__(/*! ../internals/array-sort */ "./node_modules/core-js/internals/array-sort.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var URL_SEARCH_PARAMS = 'URLSearchParams'; +var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); +var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); + +var nativeFetch = safeGetBuiltIn('fetch'); +var NativeRequest = safeGetBuiltIn('Request'); +var Headers = safeGetBuiltIn('Headers'); +var RequestPrototype = NativeRequest && NativeRequest.prototype; +var HeadersPrototype = Headers && Headers.prototype; +var TypeError = globalThis.TypeError; +var encodeURIComponent = globalThis.encodeURIComponent; +var fromCharCode = String.fromCharCode; +var fromCodePoint = getBuiltIn('String', 'fromCodePoint'); +var $parseInt = parseInt; +var charAt = uncurryThis(''.charAt); +var join = uncurryThis([].join); +var push = uncurryThis([].push); +var replace = uncurryThis(''.replace); +var shift = uncurryThis([].shift); +var splice = uncurryThis([].splice); +var split = uncurryThis(''.split); +var stringSlice = uncurryThis(''.slice); +var exec = uncurryThis(/./.exec); + +var plus = /\+/g; +var FALLBACK_REPLACER = '\uFFFD'; +var VALID_HEX = /^[0-9a-f]+$/i; + +var parseHexOctet = function (string, start) { + var substr = stringSlice(string, start, start + 2); + if (!exec(VALID_HEX, substr)) return NaN; + + return $parseInt(substr, 16); +}; + +var getLeadingOnes = function (octet) { + var count = 0; + for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) { + count++; + } + return count; +}; + +var utf8Decode = function (octets) { + var codePoint = null; + + switch (octets.length) { + case 1: + codePoint = octets[0]; + break; + case 2: + codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F); + break; + case 3: + codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F); + break; + case 4: + codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F); + break; + } + + return codePoint > 0x10FFFF ? null : codePoint; +}; + +var decode = function (input) { + input = replace(input, plus, ' '); + var length = input.length; + var result = ''; + var i = 0; + + while (i < length) { + var decodedChar = charAt(input, i); + + if (decodedChar === '%') { + if (charAt(input, i + 1) === '%' || i + 3 > length) { + result += '%'; + i++; + continue; + } + + var octet = parseHexOctet(input, i + 1); + + // eslint-disable-next-line no-self-compare -- NaN check + if (octet !== octet) { + result += decodedChar; + i++; + continue; + } + + i += 2; + var byteSequenceLength = getLeadingOnes(octet); + + if (byteSequenceLength === 0) { + decodedChar = fromCharCode(octet); + } else { + if (byteSequenceLength === 1 || byteSequenceLength > 4) { + result += FALLBACK_REPLACER; + i++; + continue; + } + + var octets = [octet]; + var sequenceIndex = 1; + + while (sequenceIndex < byteSequenceLength) { + i++; + if (i + 3 > length || charAt(input, i) !== '%') break; + + var nextByte = parseHexOctet(input, i + 1); + + // eslint-disable-next-line no-self-compare -- NaN check + if (nextByte !== nextByte) { + i += 3; + break; + } + if (nextByte > 191 || nextByte < 128) break; + + push(octets, nextByte); + i += 2; + sequenceIndex++; + } + + if (octets.length !== byteSequenceLength) { + result += FALLBACK_REPLACER; + continue; + } + + var codePoint = utf8Decode(octets); + if (codePoint === null) { + result += FALLBACK_REPLACER; + } else { + decodedChar = fromCodePoint(codePoint); + } + } + } + + result += decodedChar; + i++; + } + + return result; +}; + +var find = /[!'()~]|%20/g; + +var replacements = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' +}; + +var replacer = function (match) { + return replacements[match]; +}; + +var serialize = function (it) { + return replace(encodeURIComponent(it), find, replacer); +}; + +var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + target: getInternalParamsState(params).entries, + index: 0, + kind: kind + }); +}, URL_SEARCH_PARAMS, function next() { + var state = getInternalIteratorState(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = null; + return createIterResultObject(undefined, true); + } + var entry = target[index]; + switch (state.kind) { + case 'keys': return createIterResultObject(entry.key, false); + case 'values': return createIterResultObject(entry.value, false); + } return createIterResultObject([entry.key, entry.value], false); +}, true); + +var URLSearchParamsState = function (init) { + this.entries = []; + this.url = null; + + if (init !== undefined) { + if (isObject(init)) this.parseObject(init); + else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init)); + } +}; + +URLSearchParamsState.prototype = { + type: URL_SEARCH_PARAMS, + bindURL: function (url) { + this.url = url; + this.update(); + }, + parseObject: function (object) { + var entries = this.entries; + var iteratorMethod = getIteratorMethod(object); + var iterator, next, step, entryIterator, entryNext, first, second; + + if (iteratorMethod) { + iterator = getIterator(object, iteratorMethod); + next = iterator.next; + while (!(step = call(next, iterator)).done) { + entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; + if ( + (first = call(entryNext, entryIterator)).done || + (second = call(entryNext, entryIterator)).done || + !call(entryNext, entryIterator).done + ) throw new TypeError('Expected sequence with length 2'); + push(entries, { key: $toString(first.value), value: $toString(second.value) }); + } + } else for (var key in object) if (hasOwn(object, key)) { + push(entries, { key: key, value: $toString(object[key]) }); + } + }, + parseQuery: function (query) { + if (query) { + var entries = this.entries; + var attributes = split(query, '&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = split(attribute, '='); + push(entries, { + key: decode(shift(entry)), + value: decode(join(entry, '=')) + }); + } + } + } + }, + serialize: function () { + var entries = this.entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + push(result, serialize(entry.key) + '=' + serialize(entry.value)); + } return join(result, '&'); + }, + update: function () { + this.entries.length = 0; + this.parseQuery(this.url.query); + }, + updateURL: function () { + if (this.url) this.url.update(); + } +}; + +// `URLSearchParams` constructor +// https://url.spec.whatwg.org/#interface-urlsearchparams +var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance(this, URLSearchParamsPrototype); + var init = arguments.length > 0 ? arguments[0] : undefined; + var state = setInternalState(this, new URLSearchParamsState(init)); + if (!DESCRIPTORS) this.size = state.entries.length; +}; + +var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; + +defineBuiltIns(URLSearchParamsPrototype, { + // `URLSearchParams.prototype.append` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + var state = getInternalParamsState(this); + validateArgumentsLength(arguments.length, 2); + push(state.entries, { key: $toString(name), value: $toString(value) }); + if (!DESCRIPTORS) this.length++; + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name /* , value */) { + var state = getInternalParamsState(this); + var length = validateArgumentsLength(arguments.length, 1); + var entries = state.entries; + var key = $toString(name); + var $value = length < 2 ? undefined : arguments[1]; + var value = $value === undefined ? $value : $toString($value); + var index = 0; + while (index < entries.length) { + var entry = entries[index]; + if (entry.key === key && (value === undefined || entry.value === value)) { + splice(entries, index, 1); + if (value !== undefined) break; + } else index++; + } + if (!DESCRIPTORS) this.size = entries.length; + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + var entries = getInternalParamsState(this).entries; + validateArgumentsLength(arguments.length, 1); + var key = $toString(name); + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + var entries = getInternalParamsState(this).entries; + validateArgumentsLength(arguments.length, 1); + var key = $toString(name); + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) push(result, entries[index].value); + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name /* , value */) { + var entries = getInternalParamsState(this).entries; + var length = validateArgumentsLength(arguments.length, 1); + var key = $toString(name); + var $value = length < 2 ? undefined : arguments[1]; + var value = $value === undefined ? $value : $toString($value); + var index = 0; + while (index < entries.length) { + var entry = entries[index++]; + if (entry.key === key && (value === undefined || entry.value === value)) return true; + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + var state = getInternalParamsState(this); + validateArgumentsLength(arguments.length, 1); + var entries = state.entries; + var found = false; + var key = $toString(name); + var val = $toString(value); + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) splice(entries, index--, 1); + else { + found = true; + entry.value = val; + } + } + } + if (!found) push(entries, { key: key, value: val }); + if (!DESCRIPTORS) this.size = entries.length; + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + arraySort(state.entries, function (a, b) { + return a.key > b.key ? 1 : -1; + }); + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } +}, { enumerable: true }); + +// `URLSearchParams.prototype[@@iterator]` method +defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' }); + +// `URLSearchParams.prototype.toString` method +// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior +defineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() { + return getInternalParamsState(this).serialize(); +}, { enumerable: true }); + +// `URLSearchParams.prototype.size` getter +// https://github.com/whatwg/url/pull/734 +if (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', { + get: function size() { + return getInternalParamsState(this).entries.length; + }, + configurable: true, + enumerable: true +}); + +setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + +$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, { + URLSearchParams: URLSearchParamsConstructor +}); + +// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams` +if (!USE_NATIVE_URL && isCallable(Headers)) { + var headersHas = uncurryThis(HeadersPrototype.has); + var headersSet = uncurryThis(HeadersPrototype.set); + + var wrapRequestOptions = function (init) { + if (isObject(init)) { + var body = init.body; + var headers; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers(init.headers) : new Headers(); + if (!headersHas(headers, 'content-type')) { + headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + return create(init, { + body: createPropertyDescriptor(0, $toString(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } return init; + }; + + if (isCallable(nativeFetch)) { + $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, { + fetch: function fetch(input /* , init */) { + return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); + } + }); + } + + if (isCallable(NativeRequest)) { + var RequestConstructor = function Request(input /* , init */) { + anInstance(this, RequestPrototype); + return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); + }; + + RequestPrototype.constructor = RequestConstructor; + RequestConstructor.prototype = RequestPrototype; + + $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, { + Request: RequestConstructor + }); + } +} + +module.exports = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState +}; + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.url-search-params.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/modules/web.url-search-params.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's replaced to module below +__webpack_require__(/*! ../modules/web.url-search-params.constructor */ "./node_modules/core-js/modules/web.url-search-params.constructor.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.url.constructor.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/modules/web.url.constructor.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +__webpack_require__(/*! ../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js"); +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ "./node_modules/core-js/internals/url-constructor-detection.js"); +var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); +var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); +var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); +var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); +var defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ "./node_modules/core-js/internals/define-built-in-accessor.js"); +var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); +var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); +var assign = __webpack_require__(/*! ../internals/object-assign */ "./node_modules/core-js/internals/object-assign.js"); +var arrayFrom = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js"); +var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); +var codeAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").codeAt); +var toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ "./node_modules/core-js/internals/string-punycode-to-ascii.js"); +var $toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ "./node_modules/core-js/internals/validate-arguments-length.js"); +var URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params.constructor */ "./node_modules/core-js/modules/web.url-search-params.constructor.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var setInternalState = InternalStateModule.set; +var getInternalURLState = InternalStateModule.getterFor('URL'); +var URLSearchParams = URLSearchParamsModule.URLSearchParams; +var getInternalSearchParamsState = URLSearchParamsModule.getState; + +var NativeURL = globalThis.URL; +var TypeError = globalThis.TypeError; +var parseInt = globalThis.parseInt; +var floor = Math.floor; +var pow = Math.pow; +var charAt = uncurryThis(''.charAt); +var exec = uncurryThis(/./.exec); +var join = uncurryThis([].join); +var numberToString = uncurryThis(1.0.toString); +var pop = uncurryThis([].pop); +var push = uncurryThis([].push); +var replace = uncurryThis(''.replace); +var shift = uncurryThis([].shift); +var split = uncurryThis(''.split); +var stringSlice = uncurryThis(''.slice); +var toLowerCase = uncurryThis(''.toLowerCase); +var unshift = uncurryThis([].unshift); + +var INVALID_AUTHORITY = 'Invalid authority'; +var INVALID_SCHEME = 'Invalid scheme'; +var INVALID_HOST = 'Invalid host'; +var INVALID_PORT = 'Invalid port'; + +var ALPHA = /[a-z]/i; +// eslint-disable-next-line regexp/no-obscure-range -- safe +var ALPHANUMERIC = /[\d+-.a-z]/i; +var DIGIT = /\d/; +var HEX_START = /^0x/i; +var OCT = /^[0-7]+$/; +var DEC = /^\d+$/; +var HEX = /^[\da-f]+$/i; +/* eslint-disable regexp/no-control-character -- safe */ +var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/; +var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/; +var LEADING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+/; +var TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/; +var TAB_AND_NEW_LINE = /[\t\n\r]/g; +/* eslint-enable regexp/no-control-character -- safe */ +var EOF; + +// https://url.spec.whatwg.org/#ipv4-number-parser +var parseIPv4 = function (input) { + var parts = split(input, '.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] === '') { + parts.length--; + } + partsLength = parts.length; + if (partsLength > 4) return input; + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part === '') return input; + radix = 10; + if (part.length > 1 && charAt(part, 0) === '0') { + radix = exec(HEX_START, part) ? 16 : 8; + part = stringSlice(part, radix === 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input; + number = parseInt(part, radix); + } + push(numbers, number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index === partsLength - 1) { + if (number >= pow(256, 5 - partsLength)) return null; + } else if (number > 255) return null; + } + ipv4 = pop(numbers); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow(256, 3 - index); + } + return ipv4; +}; + +// https://url.spec.whatwg.org/#concept-ipv6-parser +// eslint-disable-next-line max-statements -- TODO +var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var chr = function () { + return charAt(input, pointer); + }; + + if (chr() === ':') { + if (charAt(input, 1) !== ':') return; + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (chr()) { + if (pieceIndex === 8) return; + if (chr() === ':') { + if (compress !== null) return; + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && exec(HEX, chr())) { + value = value * 16 + parseInt(chr(), 16); + pointer++; + length++; + } + if (chr() === '.') { + if (length === 0) return; + pointer -= length; + if (pieceIndex > 6) return; + numbersSeen = 0; + while (chr()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (chr() === '.' && numbersSeen < 4) pointer++; + else return; + } + if (!exec(DIGIT, chr())) return; + while (exec(DIGIT, chr())) { + number = parseInt(chr(), 10); + if (ipv4Piece === null) ipv4Piece = number; + else if (ipv4Piece === 0) return; + else ipv4Piece = ipv4Piece * 10 + number; + if (ipv4Piece > 255) return; + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++; + } + if (numbersSeen !== 4) return; + break; + } else if (chr() === ':') { + pointer++; + if (!chr()) return; + } else if (chr()) return; + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex !== 8) return; + return address; +}; + +var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) currStart = index; + ++currLength; + } + } + return currLength > maxLength ? currStart : maxIndex; +}; + +// https://url.spec.whatwg.org/#host-serializing +var serializeHost = function (host) { + var result, index, compress, ignore0; + + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + unshift(result, host % 256); + host = floor(host / 256); + } + return join(result, '.'); + } + + // ipv6 + if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; + if (ignore0) ignore0 = false; + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += numberToString(host[index], 16); + if (index < 7) result += ':'; + } + } + return '[' + result + ']'; + } + + return host; +}; + +var C0ControlPercentEncodeSet = {}; +var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 +}); +var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 +}); +var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 +}); + +var percentEncode = function (chr, set) { + var code = codeAt(chr, 0); + return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr); +}; + +// https://url.spec.whatwg.org/#special-scheme +var specialSchemes = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +// https://url.spec.whatwg.org/#windows-drive-letter +var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length === 2 && exec(ALPHA, charAt(string, 0)) + && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|')); +}; + +// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter +var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && ( + string.length === 2 || + ((third = charAt(string, 2)) === '/' || third === '\\' || third === '?' || third === '#') + ); +}; + +// https://url.spec.whatwg.org/#single-dot-path-segment +var isSingleDot = function (segment) { + return segment === '.' || toLowerCase(segment) === '%2e'; +}; + +// https://url.spec.whatwg.org/#double-dot-path-segment +var isDoubleDot = function (segment) { + segment = toLowerCase(segment); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; +}; + +// States: +var SCHEME_START = {}; +var SCHEME = {}; +var NO_SCHEME = {}; +var SPECIAL_RELATIVE_OR_AUTHORITY = {}; +var PATH_OR_AUTHORITY = {}; +var RELATIVE = {}; +var RELATIVE_SLASH = {}; +var SPECIAL_AUTHORITY_SLASHES = {}; +var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; +var AUTHORITY = {}; +var HOST = {}; +var HOSTNAME = {}; +var PORT = {}; +var FILE = {}; +var FILE_SLASH = {}; +var FILE_HOST = {}; +var PATH_START = {}; +var PATH = {}; +var CANNOT_BE_A_BASE_URL_PATH = {}; +var QUERY = {}; +var FRAGMENT = {}; + +var URLState = function (url, isBase, base) { + var urlString = $toString(url); + var baseState, failure, searchParams; + if (isBase) { + failure = this.parse(urlString); + if (failure) throw new TypeError(failure); + this.searchParams = null; + } else { + if (base !== undefined) baseState = new URLState(base, true); + failure = this.parse(urlString, null, baseState); + if (failure) throw new TypeError(failure); + searchParams = getInternalSearchParamsState(new URLSearchParams()); + searchParams.bindURL(this); + this.searchParams = searchParams; + } +}; + +URLState.prototype = { + type: 'URL', + // https://url.spec.whatwg.org/#url-parsing + // eslint-disable-next-line max-statements -- TODO + parse: function (input, stateOverride, base) { + var url = this; + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, chr, bufferCodePoints, failure; + + input = $toString(input); + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = replace(input, LEADING_C0_CONTROL_OR_SPACE, ''); + input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1'); + } + + input = replace(input, TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + chr = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (chr && exec(ALPHA, chr)) { + buffer += toLowerCase(chr); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else return INVALID_SCHEME; + break; + + case SCHEME: + if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) { + buffer += toLowerCase(chr); + } else if (chr === ':') { + if (stateOverride && ( + (url.isSpecial() !== hasOwn(specialSchemes, buffer)) || + (buffer === 'file' && (url.includesCredentials() || url.port !== null)) || + (url.scheme === 'file' && !url.host) + )) return; + url.scheme = buffer; + if (stateOverride) { + if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null; + return; + } + buffer = ''; + if (url.scheme === 'file') { + state = FILE; + } else if (url.isSpecial() && base && base.scheme === url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (url.isSpecial()) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] === '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + push(url.path, ''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else return INVALID_SCHEME; + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME; + if (base.cannotBeABaseURL && chr === '#') { + url.scheme = base.scheme; + url.path = arraySlice(base.path); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme === 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (chr === '/' && codePoints[pointer + 1] === '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (chr === '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (chr === EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.query = base.query; + } else if (chr === '/' || (chr === '\\' && url.isSpecial())) { + state = RELATIVE_SLASH; + } else if (chr === '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.query = ''; + state = QUERY; + } else if (chr === '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice(base.path); + url.path.length--; + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (url.isSpecial() && (chr === '/' || chr === '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (chr === '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue; + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (chr !== '/' && chr !== '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (chr === '@') { + if (seenAt) buffer = '%40' + buffer; + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint === ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) url.password += encodedCodePoints; + else url.username += encodedCodePoints; + } + buffer = ''; + } else if ( + chr === EOF || chr === '/' || chr === '?' || chr === '#' || + (chr === '\\' && url.isSpecial()) + ) { + if (seenAt && buffer === '') return INVALID_AUTHORITY; + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else buffer += chr; + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme === 'file') { + state = FILE_HOST; + continue; + } else if (chr === ':' && !seenBracket) { + if (buffer === '') return INVALID_HOST; + failure = url.parseHost(buffer); + if (failure) return failure; + buffer = ''; + state = PORT; + if (stateOverride === HOSTNAME) return; + } else if ( + chr === EOF || chr === '/' || chr === '?' || chr === '#' || + (chr === '\\' && url.isSpecial()) + ) { + if (url.isSpecial() && buffer === '') return INVALID_HOST; + if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return; + failure = url.parseHost(buffer); + if (failure) return failure; + buffer = ''; + state = PATH_START; + if (stateOverride) return; + continue; + } else { + if (chr === '[') seenBracket = true; + else if (chr === ']') seenBracket = false; + buffer += chr; + } break; + + case PORT: + if (exec(DIGIT, chr)) { + buffer += chr; + } else if ( + chr === EOF || chr === '/' || chr === '?' || chr === '#' || + (chr === '\\' && url.isSpecial()) || + stateOverride + ) { + if (buffer !== '') { + var port = parseInt(buffer, 10); + if (port > 0xFFFF) return INVALID_PORT; + url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) return; + state = PATH_START; + continue; + } else return INVALID_PORT; + break; + + case FILE: + url.scheme = 'file'; + if (chr === '/' || chr === '\\') state = FILE_SLASH; + else if (base && base.scheme === 'file') { + switch (chr) { + case EOF: + url.host = base.host; + url.path = arraySlice(base.path); + url.query = base.query; + break; + case '?': + url.host = base.host; + url.path = arraySlice(base.path); + url.query = ''; + state = QUERY; + break; + case '#': + url.host = base.host; + url.path = arraySlice(base.path); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + break; + default: + if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) { + url.host = base.host; + url.path = arraySlice(base.path); + url.shortenPath(); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (chr === '/' || chr === '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) { + if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]); + else url.host = base.host; + } + state = PATH; + continue; + + case FILE_HOST: + if (chr === EOF || chr === '/' || chr === '\\' || chr === '?' || chr === '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer === '') { + url.host = ''; + if (stateOverride) return; + state = PATH_START; + } else { + failure = url.parseHost(buffer); + if (failure) return failure; + if (url.host === 'localhost') url.host = ''; + if (stateOverride) return; + buffer = ''; + state = PATH_START; + } continue; + } else buffer += chr; + break; + + case PATH_START: + if (url.isSpecial()) { + state = PATH; + if (chr !== '/' && chr !== '\\') continue; + } else if (!stateOverride && chr === '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr !== EOF) { + state = PATH; + if (chr !== '/') continue; + } break; + + case PATH: + if ( + chr === EOF || chr === '/' || + (chr === '\\' && url.isSpecial()) || + (!stateOverride && (chr === '?' || chr === '#')) + ) { + if (isDoubleDot(buffer)) { + url.shortenPath(); + if (chr !== '/' && !(chr === '\\' && url.isSpecial())) { + push(url.path, ''); + } + } else if (isSingleDot(buffer)) { + if (chr !== '/' && !(chr === '\\' && url.isSpecial())) { + push(url.path, ''); + } + } else { + if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) url.host = ''; + buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter + } + push(url.path, buffer); + } + buffer = ''; + if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) { + while (url.path.length > 1 && url.path[0] === '') { + shift(url.path); + } + } + if (chr === '?') { + url.query = ''; + state = QUERY; + } else if (chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(chr, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (chr === '?') { + url.query = ''; + state = QUERY; + } else if (chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr !== EOF) { + url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && chr === '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr !== EOF) { + if (chr === "'" && url.isSpecial()) url.query += '%27'; + else if (chr === '#') url.query += '%23'; + else url.query += percentEncode(chr, C0ControlPercentEncodeSet); + } break; + + case FRAGMENT: + if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet); + break; + } + + pointer++; + } + }, + // https://url.spec.whatwg.org/#host-parsing + parseHost: function (input) { + var result, codePoints, index; + if (charAt(input, 0) === '[') { + if (charAt(input, input.length - 1) !== ']') return INVALID_HOST; + result = parseIPv6(stringSlice(input, 1, -1)); + if (!result) return INVALID_HOST; + this.host = result; + // opaque host + } else if (!this.isSpecial()) { + if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST; + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + this.host = result; + } else { + input = toASCII(input); + if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST; + result = parseIPv4(input); + if (result === null) return INVALID_HOST; + this.host = result; + } + }, + // https://url.spec.whatwg.org/#cannot-have-a-username-password-port + cannotHaveUsernamePasswordPort: function () { + return !this.host || this.cannotBeABaseURL || this.scheme === 'file'; + }, + // https://url.spec.whatwg.org/#include-credentials + includesCredentials: function () { + return this.username !== '' || this.password !== ''; + }, + // https://url.spec.whatwg.org/#is-special + isSpecial: function () { + return hasOwn(specialSchemes, this.scheme); + }, + // https://url.spec.whatwg.org/#shorten-a-urls-path + shortenPath: function () { + var path = this.path; + var pathSize = path.length; + if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) { + path.length--; + } + }, + // https://url.spec.whatwg.org/#concept-url-serializer + serialize: function () { + var url = this; + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (url.includesCredentials()) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) output += ':' + port; + } else if (scheme === 'file') output += '//'; + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; + if (query !== null) output += '?' + query; + if (fragment !== null) output += '#' + fragment; + return output; + }, + // https://url.spec.whatwg.org/#dom-url-href + setHref: function (href) { + var failure = this.parse(href); + if (failure) throw new TypeError(failure); + this.searchParams.update(); + }, + // https://url.spec.whatwg.org/#dom-url-origin + getOrigin: function () { + var scheme = this.scheme; + var port = this.port; + if (scheme === 'blob') try { + return new URLConstructor(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } + if (scheme === 'file' || !this.isSpecial()) return 'null'; + return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : ''); + }, + // https://url.spec.whatwg.org/#dom-url-protocol + getProtocol: function () { + return this.scheme + ':'; + }, + setProtocol: function (protocol) { + this.parse($toString(protocol) + ':', SCHEME_START); + }, + // https://url.spec.whatwg.org/#dom-url-username + getUsername: function () { + return this.username; + }, + setUsername: function (username) { + var codePoints = arrayFrom($toString(username)); + if (this.cannotHaveUsernamePasswordPort()) return; + this.username = ''; + for (var i = 0; i < codePoints.length; i++) { + this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }, + // https://url.spec.whatwg.org/#dom-url-password + getPassword: function () { + return this.password; + }, + setPassword: function (password) { + var codePoints = arrayFrom($toString(password)); + if (this.cannotHaveUsernamePasswordPort()) return; + this.password = ''; + for (var i = 0; i < codePoints.length; i++) { + this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }, + // https://url.spec.whatwg.org/#dom-url-host + getHost: function () { + var host = this.host; + var port = this.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; + }, + setHost: function (host) { + if (this.cannotBeABaseURL) return; + this.parse(host, HOST); + }, + // https://url.spec.whatwg.org/#dom-url-hostname + getHostname: function () { + var host = this.host; + return host === null ? '' : serializeHost(host); + }, + setHostname: function (hostname) { + if (this.cannotBeABaseURL) return; + this.parse(hostname, HOSTNAME); + }, + // https://url.spec.whatwg.org/#dom-url-port + getPort: function () { + var port = this.port; + return port === null ? '' : $toString(port); + }, + setPort: function (port) { + if (this.cannotHaveUsernamePasswordPort()) return; + port = $toString(port); + if (port === '') this.port = null; + else this.parse(port, PORT); + }, + // https://url.spec.whatwg.org/#dom-url-pathname + getPathname: function () { + var path = this.path; + return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; + }, + setPathname: function (pathname) { + if (this.cannotBeABaseURL) return; + this.path = []; + this.parse(pathname, PATH_START); + }, + // https://url.spec.whatwg.org/#dom-url-search + getSearch: function () { + var query = this.query; + return query ? '?' + query : ''; + }, + setSearch: function (search) { + search = $toString(search); + if (search === '') { + this.query = null; + } else { + if (charAt(search, 0) === '?') search = stringSlice(search, 1); + this.query = ''; + this.parse(search, QUERY); + } + this.searchParams.update(); + }, + // https://url.spec.whatwg.org/#dom-url-searchparams + getSearchParams: function () { + return this.searchParams.facade; + }, + // https://url.spec.whatwg.org/#dom-url-hash + getHash: function () { + var fragment = this.fragment; + return fragment ? '#' + fragment : ''; + }, + setHash: function (hash) { + hash = $toString(hash); + if (hash === '') { + this.fragment = null; + return; + } + if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1); + this.fragment = ''; + this.parse(hash, FRAGMENT); + }, + update: function () { + this.query = this.searchParams.serialize() || null; + } +}; + +// `URL` constructor +// https://url.spec.whatwg.org/#url-class +var URLConstructor = function URL(url /* , base */) { + var that = anInstance(this, URLPrototype); + var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined; + var state = setInternalState(that, new URLState(url, false, base)); + if (!DESCRIPTORS) { + that.href = state.serialize(); + that.origin = state.getOrigin(); + that.protocol = state.getProtocol(); + that.username = state.getUsername(); + that.password = state.getPassword(); + that.host = state.getHost(); + that.hostname = state.getHostname(); + that.port = state.getPort(); + that.pathname = state.getPathname(); + that.search = state.getSearch(); + that.searchParams = state.getSearchParams(); + that.hash = state.getHash(); + } +}; + +var URLPrototype = URLConstructor.prototype; + +var accessorDescriptor = function (getter, setter) { + return { + get: function () { + return getInternalURLState(this)[getter](); + }, + set: setter && function (value) { + return getInternalURLState(this)[setter](value); + }, + configurable: true, + enumerable: true + }; +}; + +if (DESCRIPTORS) { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref')); + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin')); + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol')); + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername')); + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword')); + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost')); + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname')); + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort')); + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname')); + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch')); + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams')); + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash')); +} + +// `URL.prototype.toJSON` method +// https://url.spec.whatwg.org/#dom-url-tojson +defineBuiltIn(URLPrototype, 'toJSON', function toJSON() { + return getInternalURLState(this).serialize(); +}, { enumerable: true }); + +// `URL.prototype.toString` method +// https://url.spec.whatwg.org/#URL-stringification-behavior +defineBuiltIn(URLPrototype, 'toString', function toString() { + return getInternalURLState(this).serialize(); +}, { enumerable: true }); + +if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL)); + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL)); +} + +setToStringTag(URLConstructor, 'URL'); + +$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, { + URL: URLConstructor +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.url.js": +/*!*************************************************!*\ + !*** ./node_modules/core-js/modules/web.url.js ***! + \*************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +// TODO: Remove this module from `core-js@4` since it's replaced to module below +__webpack_require__(/*! ../modules/web.url.constructor */ "./node_modules/core-js/modules/web.url.constructor.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/web.url.to-json.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/modules/web.url.to-json.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); + +// `URL.prototype.toJSON` method +// https://url.spec.whatwg.org/#dom-url-tojson +$({ target: 'URL', proto: true, enumerable: true }, { + toJSON: function toJSON() { + return call(URL.prototype.toString, this); + } +}); + + +/***/ }), + +/***/ "./node_modules/isomorphic-webcrypto/src/browser.mjs": +/*!***********************************************************!*\ + !*** ./node_modules/isomorphic-webcrypto/src/browser.mjs ***! + \***********************************************************/ +/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var _webcrypto_shim_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webcrypto-shim.mjs */ "./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs"); + +/* harmony default export */ __webpack_exports__["default"] = (window.crypto); + + +/***/ }), + +/***/ "./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs": +/*!******************************************************************!*\ + !*** ./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs ***! + \******************************************************************/ +/***/ (function() { + +"use strict"; +/** + * @file Web Cryptography API shim + * @author Artem S Vybornov + * @license MIT + */ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function () { + return factory(global); + }); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports + module.exports = factory(global); + } else { + factory(global); + } +}(typeof self !== 'undefined' ? self : undefined, function (global) { + 'use strict'; + + if ( typeof Promise !== 'function' ) + throw "Promise support required"; + + var _crypto = global.crypto || global.msCrypto; + if ( !_crypto ) return; + + var _subtle = _crypto.subtle || _crypto.webkitSubtle; + if ( !_subtle ) return; + + var _Crypto = global.Crypto || _crypto.constructor || Object, + _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object, + _CryptoKey = global.CryptoKey || global.Key || Object; + + var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1; + var isIE = !!global.msCrypto && !isEdge; + var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle; + if ( !isIE && !isWebkit ) return; + + function s2a ( s ) { + return btoa(s).replace(/\=+$/, '').replace(/\+/g, '-').replace(/\//g, '_'); + } + + function a2s ( s ) { + s += '===', s = s.slice( 0, -s.length % 4 ); + return atob( s.replace(/-/g, '+').replace(/_/g, '/') ); + } + + function s2b ( s ) { + var b = new Uint8Array(s.length); + for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i); + return b; + } + + function b2s ( b ) { + if ( b instanceof ArrayBuffer ) b = new Uint8Array(b); + return String.fromCharCode.apply( String, b ); + } + + function alg ( a ) { + var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') }; + switch ( r.name ) { + case 'SHA-1': + case 'SHA-256': + case 'SHA-384': + case 'SHA-512': + break; + case 'AES-CBC': + case 'AES-GCM': + case 'AES-KW': + if ( a.length ) r['length'] = a.length; + break; + case 'HMAC': + if ( a.hash ) r['hash'] = alg(a.hash); + if ( a.length ) r['length'] = a.length; + break; + case 'RSAES-PKCS1-v1_5': + if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent); + if ( a.modulusLength ) r['modulusLength'] = a.modulusLength; + break; + case 'RSASSA-PKCS1-v1_5': + case 'RSA-OAEP': + if ( a.hash ) r['hash'] = alg(a.hash); + if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent); + if ( a.modulusLength ) r['modulusLength'] = a.modulusLength; + break; + default: + throw new SyntaxError("Bad algorithm name"); + } + return r; + }; + + function jwkAlg ( a ) { + return { + 'HMAC': { + 'SHA-1': 'HS1', + 'SHA-256': 'HS256', + 'SHA-384': 'HS384', + 'SHA-512': 'HS512', + }, + 'RSASSA-PKCS1-v1_5': { + 'SHA-1': 'RS1', + 'SHA-256': 'RS256', + 'SHA-384': 'RS384', + 'SHA-512': 'RS512', + }, + 'RSAES-PKCS1-v1_5': { + '': 'RSA1_5', + }, + 'RSA-OAEP': { + 'SHA-1': 'RSA-OAEP', + 'SHA-256': 'RSA-OAEP-256', + }, + 'AES-KW': { + '128': 'A128KW', + '192': 'A192KW', + '256': 'A256KW', + }, + 'AES-GCM': { + '128': 'A128GCM', + '192': 'A192GCM', + '256': 'A256GCM', + }, + 'AES-CBC': { + '128': 'A128CBC', + '192': 'A192CBC', + '256': 'A256CBC', + }, + }[a.name][ ( a.hash || {} ).name || a.length || '' ]; + } + + function b2jwk ( k ) { + if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) ); + var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable }; + switch ( jwk.kty ) { + case 'oct': + jwk.k = k.k; + case 'RSA': + [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } ); + break; + default: + throw new TypeError("Unsupported key type"); + } + return jwk; + } + + function jwk2b ( k ) { + var jwk = b2jwk(k); + if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext; + return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer; + } + + function pkcs2jwk ( k ) { + var info = b2der(k), prv = false; + if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure + var jwk = { 'ext': true }; + switch ( info[0][0] ) { + case '1.2.840.113549.1.1.1': + var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ], + rsaKey = b2der( info[1] ); + if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure + for ( var i = 0; i < rsaKey.length; i++ ) { + if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1); + jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) ); + } + jwk['kty'] = 'RSA'; + break; + default: + throw new TypeError("Unsupported key type"); + } + return jwk; + } + + function jwk2pkcs ( k ) { + var key, info = [ [ '', null ] ], prv = false; + switch ( k.kty ) { + case 'RSA': + var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ], + rsaKey = []; + for ( var i = 0; i < rsaComp.length; i++ ) { + if ( !( rsaComp[i] in k ) ) break; + var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) ); + if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 ); + } + if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure + info[0][0] = '1.2.840.113549.1.1.1'; + key = rsaKey; + break; + default: + throw new TypeError("Unsupported key type"); + } + info.push( new Uint8Array( der2b(key) ).buffer ); + if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] }; + else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure + return new Uint8Array( der2b(info) ).buffer; + } + + var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' }, + str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' }; + + function b2der ( buf, ctx ) { + if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf); + if ( !ctx ) ctx = { pos: 0, end: buf.length }; + + if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError("Malformed DER"); + + var tag = buf[ctx.pos++], + len = buf[ctx.pos++]; + + if ( len >= 0x80 ) { + len &= 0x7f; + if ( ctx.end - ctx.pos < len ) throw new RangeError("Malformed DER"); + for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++]; + len = xlen; + } + + if ( ctx.end - ctx.pos < len ) throw new RangeError("Malformed DER"); + + var rv; + + switch ( tag ) { + case 0x02: // Universal Primitive INTEGER + rv = buf.subarray( ctx.pos, ctx.pos += len ); + break; + case 0x03: // Universal Primitive BIT STRING + if ( buf[ctx.pos++] ) throw new Error( "Unsupported bit string" ); + len--; + case 0x04: // Universal Primitive OCTET STRING + rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer; + break; + case 0x05: // Universal Primitive NULL + rv = null; + break; + case 0x06: // Universal Primitive OBJECT IDENTIFIER + var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) ); + if ( !( oid in oid2str ) ) throw new Error( "Unsupported OBJECT ID " + oid ); + rv = oid2str[oid]; + break; + case 0x30: // Universal Constructed SEQUENCE + rv = []; + for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) ); + break; + default: + throw new Error( "Unsupported DER tag 0x" + tag.toString(16) ); + } + + return rv; + } + + function der2b ( val, buf ) { + if ( !buf ) buf = []; + + var tag = 0, len = 0, + pos = buf.length + 2; + + buf.push( 0, 0 ); // placeholder + + if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER + tag = 0x02, len = val.length; + for ( var i = 0; i < len; i++ ) buf.push( val[i] ); + } + else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING + tag = 0x04, len = val.byteLength, val = new Uint8Array(val); + for ( var i = 0; i < len; i++ ) buf.push( val[i] ); + } + else if ( val === null ) { // Universal Primitive NULL + tag = 0x05, len = 0; + } + else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER + var oid = s2b( atob( str2oid[val] ) ); + tag = 0x06, len = oid.length; + for ( var i = 0; i < len; i++ ) buf.push( oid[i] ); + } + else if ( val instanceof Array ) { // Universal Constructed SEQUENCE + for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf ); + tag = 0x30, len = buf.length - pos; + } + else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint + val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength; + buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] ); + len++; + } + else { + throw new Error( "Unsupported DER value " + val ); + } + + if ( len >= 0x80 ) { + var xlen = len, len = 4; + buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff ); + while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--; + if ( len < 4 ) buf.splice( pos, 4 - len ); + len |= 0x80; + } + + buf.splice( pos - 2, 2, tag, len ); + + return buf; + } + + function CryptoKey ( key, alg, ext, use ) { + Object.defineProperties( this, { + _key: { + value: key + }, + type: { + value: key.type, + enumerable: true, + }, + extractable: { + value: (ext === undefined) ? key.extractable : ext, + enumerable: true, + }, + algorithm: { + value: (alg === undefined) ? key.algorithm : alg, + enumerable: true, + }, + usages: { + value: (use === undefined) ? key.usages : use, + enumerable: true, + }, + }); + } + + function isPubKeyUse ( u ) { + return u === 'verify' || u === 'encrypt' || u === 'wrapKey'; + } + + function isPrvKeyUse ( u ) { + return u === 'sign' || u === 'decrypt' || u === 'unwrapKey'; + } + + [ 'generateKey', 'importKey', 'unwrapKey' ] + .forEach( function ( m ) { + var _fn = _subtle[m]; + + _subtle[m] = function ( a, b, c ) { + var args = [].slice.call(arguments), + ka, kx, ku; + + switch ( m ) { + case 'generateKey': + ka = alg(a), kx = b, ku = c; + break; + case 'importKey': + ka = alg(c), kx = args[3], ku = args[4]; + if ( a === 'jwk' ) { + b = b2jwk(b); + if ( !b.alg ) b.alg = jwkAlg(ka); + if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice(); + args[1] = jwk2b(b); + } + break; + case 'unwrapKey': + ka = args[4], kx = args[5], ku = args[6]; + args[2] = c._key; + break; + } + + if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) { + ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name]; + return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku ); + } + + if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) { + a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash; + return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] ) + .then( function ( k ) { + return Promise.all([ + _subtle.exportKey( 'jwk', k.publicKey ), + _subtle.exportKey( 'jwk', k.privateKey ), + ]); + }) + .then( function ( keys ) { + keys[0].alg = keys[1].alg = jwkAlg(ka); + keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse); + return Promise.all([ + _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ), + _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ), + ]); + }) + .then( function ( keys ) { + return { + publicKey: keys[0], + privateKey: keys[1], + }; + }); + } + + if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) ) + && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) { + return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] ); + } + + if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) { + return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] ); + } + + if ( isIE && m === 'unwrapKey' ) { + return _subtle.decrypt( args[3], c, b ) + .then( function ( k ) { + return _subtle.importKey( a, k, args[4], args[5], args[6] ); + }); + } + + var op; + try { + op = _fn.apply( _subtle, args ); + } + catch ( e ) { + return Promise.reject(e); + } + + if ( isIE ) { + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { rej(e) }; + op.oncomplete = function ( r ) { res(r.target.result) }; + }); + } + + op = op.then( function ( k ) { + if ( ka.name === 'HMAC' ) { + if ( !ka.length ) ka.length = 8 * k.algorithm.length; + } + if ( ka.name.search('RSA') == 0 ) { + if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength; + if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent; + } + if ( k.publicKey && k.privateKey ) { + k = { + publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ), + privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ), + }; + } + else { + k = new CryptoKey( k, ka, kx, ku ); + } + return k; + }); + + return op; + } + }); + + [ 'exportKey', 'wrapKey' ] + .forEach( function ( m ) { + var _fn = _subtle[m]; + + _subtle[m] = function ( a, b, c ) { + var args = [].slice.call(arguments); + + switch ( m ) { + case 'exportKey': + args[1] = b._key; + break; + case 'wrapKey': + args[1] = b._key, args[2] = c._key; + break; + } + + if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) ) + && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) { + args[0] = 'raw'; + } + + if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) { + args[0] = 'jwk'; + } + + if ( isIE && m === 'wrapKey' ) { + return _subtle.exportKey( a, b ) + .then( function ( k ) { + if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) ); + return _subtle.encrypt( args[3], c, k ); + }); + } + + var op; + try { + op = _fn.apply( _subtle, args ); + } + catch ( e ) { + return Promise.reject(e); + } + + if ( isIE ) { + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { rej(e) }; + op.oncomplete = function ( r ) { res(r.target.result) }; + }); + } + + if ( m === 'exportKey' && a === 'jwk' ) { + op = op.then( function ( k ) { + if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) ) + && b.algorithm.name === 'HMAC') { + return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) }; + } + k = b2jwk(k); + if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm); + if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice(); + return k; + }); + } + + if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) { + op = op.then( function ( k ) { + k = jwk2pkcs( b2jwk(k) ); + return k; + }); + } + + return op; + } + }); + + [ 'encrypt', 'decrypt', 'sign', 'verify' ] + .forEach( function ( m ) { + var _fn = _subtle[m]; + + _subtle[m] = function ( a, b, c, d ) { + if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) ) + throw new Error("Empy input is not allowed"); + + var args = [].slice.call(arguments), + ka = alg(a); + + if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) { + var tl = a.tagLength >> 3; + args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ), + a.tag = (c.buffer || c).slice( c.byteLength - tl ); + } + + args[1] = b._key; + + var op; + try { + op = _fn.apply( _subtle, args ); + } + catch ( e ) { + return Promise.reject(e); + } + + if ( isIE ) { + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { + rej(e); + }; + + op.oncomplete = function ( r ) { + var r = r.target.result; + + if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) { + var c = r.ciphertext, t = r.tag; + r = new Uint8Array( c.byteLength + t.byteLength ); + r.set( new Uint8Array(c), 0 ); + r.set( new Uint8Array(t), c.byteLength ); + r = r.buffer; + } + + res(r); + }; + }); + } + + return op; + } + }); + + if ( isIE ) { + var _digest = _subtle.digest; + + _subtle['digest'] = function ( a, b ) { + if ( !b.byteLength ) + throw new Error("Empy input is not allowed"); + + var op; + try { + op = _digest.call( _subtle, a, b ); + } + catch ( e ) { + return Promise.reject(e); + } + + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { rej(e) }; + op.oncomplete = function ( r ) { res(r.target.result) }; + }); + + return op; + }; + + global.crypto = Object.create( _crypto, { + getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } }, + subtle: { value: _subtle }, + }); + + global.CryptoKey = CryptoKey; + } + + if ( isWebkit ) { + _crypto.subtle = _subtle; + + global.Crypto = _Crypto; + global.SubtleCrypto = _SubtleCrypto; + global.CryptoKey = CryptoKey; + } +})); + + /* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ({}); // section modified by isomorphic-webcrypto build + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/global */ +/******/ !function() { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ }(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/entry/browser.ts"); +/******/ window.FHIR = __webpack_exports__; +/******/ +/******/ })() +; +//# sourceMappingURL=fhir-client.js.map \ No newline at end of file diff --git a/dist/build/fhir-client.js.map b/dist/build/fhir-client.js.map new file mode 100644 index 00000000..3cc4c414 --- /dev/null +++ b/dist/build/fhir-client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fhir-client.js","mappings":";;;;;;;;;AAAA;AACA,EAAE,KAA0C,GAAG,oCAAO,OAAO;AAAA;AAAA;AAAA;AAAA,kGAAC;AAC9D,EAAE,CAAS;AACX,CAAC,iBAAiB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kFAAkF;AAClF;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gDAAgD,OAAO;AACvD;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG,uCAAuC,qBAAM;;AAEhD,CAAC;;;;;;;;;;;;;;;;;;AC/XD;;AAEA;AACA;AACA;;AAEAA,kBAAkB,GAAGC,UAAU;AAC/BD,YAAY,GAAGE,IAAI;AACnBF,YAAY,GAAGG,IAAI;AACnBH,iBAAiB,GAAGI,SAAS;AAC7BJ,eAAe,GAAGM,YAAY,CAAC,CAAC;AAChCN,eAAe,GAAI,YAAM;EACxB,IAAIQ,MAAM,GAAG,KAAK;EAElB,OAAO,YAAM;IACZ,IAAI,CAACA,MAAM,EAAE;MACZA,MAAM,GAAG,IAAI;MACbC,OAAO,CAACC,IAAI,CAAC,uIAAuI,CAAC;IACtJ;EACD,CAAC;AACF,CAAC,CAAE,CAAC;;AAEJ;AACA;AACA;;AAEAV,cAAc,GAAG,CAChB,SAAS,EA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AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD,UAAU;AACV;AACA,UAAU;AACV,8EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,qBAAqB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iDAAiD,aAAa;;AAE9D;;AAEA,CAAC,IAAI;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAe;AACf,aAAa,mCAAmC,OAAO;AACvD,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;;;;;ACziBA;AACA;AACA;AACA;AACA;AACA,IAAI,KAA4D;AAChE;AACA,UAAU,CAeM;AAChB,CAAC;AACD;AACA,iBAAiB,qBAAM,mBAAmB,qBAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA,KAAK;AACL,mCAAmC,EAAE,oBAAoB,EAAE,sBAAsB,EAAE;AACnF;AACA;AACA;AACA,0BAA0B;AAC1B,sCAAsC;AACtC,6DAA6D,+BAA+B;AAC5F,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8DAA8D;AAC9D,wCAAwC;AACxC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8BAA8B;AAC9B;AACA;AACA,yBAAyB;AACzB;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA,qCAAqC;AACrC;AACA;AACA;AACA,iEAAiE,EAAE,wBAAwB,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8DAA8D;AAC9D,wCAAwC;AACxC;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB,sDAAsD,yBAAyB;AACxG;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,yBAAyB;AACzB;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B,gCAAgC,mDAAmD,+BAA+B;AAClH;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,kCAAkC;AAClC;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,yCAAyC,sBAAsB;AAC/D,8CAA8C,+BAA+B;AAC7E,0CAA0C,4BAA4B;AACtE,0CAA0C,4BAA4B;AACtE,2CAA2C,4BAA4B;AACvE;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,8CAA8C,uCAAuC;AACrF,0CAA0C,oCAAoC;AAC9E,0CAA0C,oCAAoC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,gDAAgD,wCAAwC;AACxF;AACA,CAAC;;;;;;;;;;;ACzTD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACjKA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA,oCAAoC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACL/F,uBAAuB,mBAAO,CAAC,wFAAuB;AACtD;AACA;AACA;AACA,qCAAqC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACJhG;AACA;AACA;AACA;AACA,yCAAyC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACJpG;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oCAAoC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACzB/F;AACA;AACA;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACH7F,+BAA+B,mBAAO,CAAC,wGAA+B;AACtE,qBAAqB,mBAAO,CAAC,oFAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACTxF,oBAAoB,mBAAO,CAAC,kFAAoB;AAChD;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,+BAA+B,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACZ1F,oBAAoB,mBAAO,CAAC,kFAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACT7F;AACA;AACA;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACL7F,qBAAqB,mBAAO,CAAC,oFAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,4BAA4B,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACbvF;AACA;AACA;AACA;AACA;AACA,yCAAyC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACLpG;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,oCAAoC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACP/F;AACA;AACA,yFAAyF;AACzF,IAAI;AACJ;AACA;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,4CAA4C,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACRvG;AACA;AACA;AACA,mCAAmC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACH9F;AACA;AACA;AACA,qCAAqC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACHhG,mCAAmC,mBAAO,CAAC,gHAAmC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc,kCAAkC;AAChE;AACA;AACA;AACA,2CAA2C,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACZtG;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,gDAAgD,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACT3G,cAAc,sGAAiC;AAC/C,4BAA4B,mBAAO,CAAC,kGAA4B;AAChE;AACA;AACA;AACA;AACA;AACA,6CAA6C,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACPxG,cAAc,sGAAiC;AAC/C;AACA,gBAAgB;AAChB;AACA;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,KAAK;AACL,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,aAAa;AACb,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA,KAAK;AACL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA,sCAAsC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;AC/SjG;AACA;AACA;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACL7F,wBAAwB,mBAAO,CAAC,0FAAwB;AACxD,sBAAsB,mBAAO,CAAC,sFAAsB;AACpD,iCAAiC,mBAAO,CAAC,4GAAiC;AAC1E,wBAAwB,mBAAO,CAAC,0FAAwB;AACxD;AACA;AACA;AACA,qCAAqC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACPhG,cAAc,sGAAiC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACXzF,cAAc,sGAAiC;AAC/C,kBAAkB,mBAAO,CAAC,8EAAkB;AAC5C;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB,SAAS,yB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A;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG,IAAI,cAAc;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACnQa;AACb,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,4BAA4B,mBAAO,CAAC,2GAAuC;;AAE3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;;;;;AC9Ba;AACb,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,wBAAwB,mBAAO,CAAC,mGAAmC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChBa;AACb,eAAe,wHAA+C;AAC9D,0BAA0B,mBAAO,CAAC,uGAAqC;;AAEvE;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;;;;;;;;ACXW;AACb,wBAAwB,mBAAO,CAAC,mGAAmC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTa;AACb,WAAW,mBAAO,CAAC,qGAAoC;AACvD,WAAW,mBAAO,CAAC,qFAA4B;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,mCAAmC,mBAAO,CAAC,2HAA+C;AAC1F,4BAA4B,mBAAO,CAAC,2GAAuC;AAC3E,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,qBAAqB,mBAAO,CAAC,yFAA8B;AAC3D,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,qCAAqC;AAC/C;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7Ca;AACb,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,wBAAwB,mBAAO,CAAC,mGAAmC;;AAEnE,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,gBAAgB;AACjC;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjCa;AACb,WAAW,mBAAO,CAAC,qGAAoC;AACvD,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,yBAAyB,mBAAO,CAAC,mGAAmC;;AAEpE;;AAEA,sBAAsB,kEAAkE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,UAAU;AACV,4CAA4C;AAC5C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzEa;AACb;AACA,YAAY,mBAAO,CAAC,uFAA6B;AACjD,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,0BAA0B,mBAAO,CAAC,uGAAqC;;AAEvE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,YAAY;AACpB;AACA,EAAE;;;;;;;;;;;;AC3BW;AACb,YAAY,mBAAO,CAAC,qEAAoB;AACxC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,iBAAiB,mBAAO,CAAC,uGAAqC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACnBa;AACb,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;AACA;AACA,gDAAgD,WAAW;AAC3D,GAAG;AACH;;;;;;;;;;;;ACTa;AACb,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,wBAAwB,mBAAO,CAAC,mGAAmC;;AAEnE;;AAEA;;AAEA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7Ca;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,cAAc,mBAAO,CAAC,2EAAuB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB;AAC3D,IAAI;AACJ;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;;;;;;;;;;;;AC1Ba;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;;AAE9D;;;;;;;;;;;;ACHa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACzCa;AACb,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;;;;;ACtBa;AACb,8BAA8B,mBAAO,CAAC,6GAAwC;;AAE9E;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACPa;AACb,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,oBAAoB,mBAAO,CAAC,uFAA6B;;AAEzD;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;ACXa;AACb,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,UAAU;AACzD,EAAE,gBAAgB;;AAElB;AACA;AACA;AACA,IAAI,gBAAgB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;;;;;;;;;;;;ACxCa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;;AAE9D,6BAA6B;AAC7B;;AAEA;AACA;AACA;;;;;;;;;;;;ACRa;AACb,4BAA4B,mBAAO,CAAC,qGAAoC;AACxE,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;;AAEA;AACA,iDAAiD,mBAAmB;;AAEpE;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7Ba;AACb,aAAa,mBAAO,CAAC,2FAA+B;AACpD,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,qCAAqC,mBAAO,CAAC,+HAAiD;AAC9F,2BAA2B,mBAAO,CAAC,uGAAqC;;AAExE;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChBa;AACb,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM,iBAAiB;AACvB,IAAI;AACJ;;;;;;;;;;;;ACfa;AACb,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACRY;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA;;;;;;;;;;;;ACfa;AACb;AACA;AACA;AACA,WAAW;AACX;;;;;;;;;;;;ACLa;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,+BAA+B,mBAAO,CAAC,+GAAyC;;AAEhF;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;;;;ACVa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACRa;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,+BAA+B,mBAAO,CAAC,+GAAyC;;AAEhF;AACA;AACA;AACA;;;;;;;;;;;;ACRa;AACb,kBAAkB,mBAAO,CAAC,qFAA4B;AACtD,qBAAqB,mBAAO,CAAC,uGAAqC;;AAElE;AACA,0DAA0D,cAAc;AACxE,0DAA0D,cAAc;AACxE;AACA;;;;;;;;;;;;ACRa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,kBAAkB,mBAAO,CAAC,qFAA4B;AACtD,2BAA2B,mBAAO,CAAC,uGAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;;;;;;;;;;;;AC3Ba;AACb,oBAAoB,mBAAO,CAAC,yFAA8B;;AAE1D;AACA;AACA;AACA;;;;;;;;;;;;ACNa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;;AAEA;AACA;AACA,sCAAsC,kDAAkD;AACxF,IAAI;AACJ;AACA,IAAI;AACJ;;;;;;;;;;;;ACZa;AACb,kBAAkB,mBAAO,CAAC,qFAA4B;;AAEtD;;AAEA;AACA;AACA;;;;;;;;;;;;ACPa;AACb,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;AACA,iCAAiC,OAAO,mBAAmB,aAAa;AACxE,CAAC;;;;;;;;;;;;ACPY;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACVa;AACb;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;;;;;;;;;;;;ACPa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnCa;AACb;AACA,4BAA4B,mBAAO,CAAC,yGAAsC;;AAE1E;AACA;;AAEA;;;;;;;;;;;;ACPa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACVa;AACb,gBAAgB,mBAAO,CAAC,uGAAqC;;AAE7D;;AAEA;;;;;;;;;;;;ACLa;AACb,SAAS,mBAAO,CAAC,uGAAqC;;AAEtD;;;;;;;;;;;;ACHa;AACb,gBAAgB,mBAAO,CAAC,uGAAqC;;AAE7D;;;;;;;;;;;;ACHa;AACb,gBAAgB,mBAAO,CAAC,uGAAqC;;AAE7D;AACA;;;;;;;;;;;;ACJa;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;;;;;;;;;;;;ACHa;AACb,gBAAgB,mBAAO,CAAC,uGAAqC;;AAE7D;;;;;;;;;;;;ACHa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;;AAEA;;;;;;;;;;;;ACNa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,gBAAgB,mBAAO,CAAC,uGAAqC;;AAE7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3Ba;AACb,gBAAgB,mBAAO,CAAC,uGAAqC;;AAE7D;;AAEA;;;;;;;;;;;;ACLa;AACb;AACA,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,gBAAgB,mBAAO,CAAC,uGAAqC;AAC7D,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACpBY;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,+BAA+B,wJAA4D;AAC3F,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,oBAAoB,mBAAO,CAAC,yFAA8B;AAC1D,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,gCAAgC,mBAAO,CAAC,iHAA0C;AAClF,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,kEAAkE;AAClE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtDa;AACb;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;ACPa;AACb;AACA,mBAAO,CAAC,mFAA2B;AACnC,WAAW,mBAAO,CAAC,qFAA4B;AAC/C,oBAAoB,mBAAO,CAAC,yFAA8B;AAC1D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,iBAAiB;AACjB;AACA,eAAe;AACf,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC3Ea;AACb,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,+BAA+B,mBAAO,CAAC,mHAA2C;AAClF,WAAW,mBAAO,CAAC,qGAAoC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCa;AACb,kBAAkB,mBAAO,CAAC,mGAAmC;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACVY;AACb,kBAAkB,mBAAO,CAAC,mHAA2C;AACrE,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,kBAAkB,mBAAO,CAAC,mGAAmC;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;AACb,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA,CAAC;;;;;;;;;;;;ACRY;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,aAAa,mBAAO,CAAC,2FAA+B;AACpD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,kBAAkB,mBAAO,CAAC,mGAAmC;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnCa;AACb,kBAAkB,mBAAO,CAAC,mGAAmC;;AAE7D;;AAEA;AACA;AACA;;;;;;;;;;;;ACPa;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,aAAa,mBAAO,CAAC,2FAA+B;;AAEpD;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,aAAa;AAC5D;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjBa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;;;;;;;;;;;;ACTa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,kBAAkB,mBAAO,CAAC,qGAAoC;;AAE9D;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTa;AACb,kBAAkB,mBAAO,CAAC,mGAAmC;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACVa;AACb,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,gBAAgB,mBAAO,CAAC,6EAAwB;AAChD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;AACb,WAAW,mBAAO,CAAC,qFAA4B;AAC/C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,kBAAkB,mBAAO,CAAC,qFAA4B;AACtD,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,cAAc,mBAAO,CAAC,iFAA0B;AAChD,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;;;;;;;;;;;;AC7Ba;AACb,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,wBAAwB,mBAAO,CAAC,mGAAmC;;AAEnE;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C,kDAAkD,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AC7Ca;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM,gBAAgB,qBAAM;AAC3C;AACA;AACA,iBAAiB,cAAc;;;;;;;;;;;;ACflB;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXa;AACb;;;;;;;;;;;;ACDa;AACb;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;;;;;;;;;;;;ACNa;AACb,iBAAiB,mBAAO,CAAC,mFAA2B;;AAEpD;;;;;;;;;;;;ACHa;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,oBAAoB,mBAAO,CAAC,yGAAsC;;AAElE;AACA;AACA;AACA;AACA,uBAAuB;AACvB,GAAG;AACH,CAAC;;;;;;;;;;;;ACXY;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACtGa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,YAAY,mBAAO,CAAC,qEAAoB;AACxC,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,EAAE;;;;;;;;;;;;ACfW;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,yGAAsC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClBa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACda;AACb,sBAAsB,mBAAO,CAAC,2GAAuC;AACrE,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,aAAa,mBAAO,CAAC,2FAA+B;AACpD,aAAa,mBAAO,CAAC,mFAA2B;AAChD,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtEa;AACb,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,gBAAgB,mBAAO,CAAC,6EAAwB;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACVa;AACb,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACRa;AACb,cAAc,mBAAO,CAAC,yEAAsB;;AAE5C;AACA;AACA;AACA;;;;;;;;;;;;ACNa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;;;;;;;;;;ACXa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,oBAAoB,mBAAO,CAAC,uFAA6B;;AAEzD,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA,CAAC;;;;;;;;;;;;ACnDY;AACb,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;;AAEA;AACA;AACA;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B;AAC5D;AACA;AACA;AACA,4DAA4D,iBAAiB;AAC7E;AACA,MAAM;AACN,IAAI,gBAAgB;AACpB;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACtDY;AACb,WAAW,mBAAO,CAAC,6EAAwB;;AAE3C;;AAEA,qCAAqC;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtBa;AACb,iBAAiB,mBAAO,CAAC,2FAA+B;;AAExD,6CAA6C;AAC7C,gDAAgD;AAChD,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACRa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACVa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,WAAW,mBAAO,CAAC,qGAAoC;AACvD,gBAAgB,8FAAgC;AAChD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,aAAa,mBAAO,CAAC,+FAAiC;AACtD,oBAAoB,mBAAO,CAAC,6GAAwC;AACpE,sBAAsB,mBAAO,CAAC,iHAA0C;AACxE,cAAc,mBAAO,CAAC,iGAAkC;;AAExD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD,qBAAqB;AACrE;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9Ea;AACb,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;;A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CAAC,+GAAyC;AAC3E,sBAAsB,mBAAO,CAAC,uGAAqC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpHa;AACb,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjBa;AACb,WAAW,mBAAO,CAAC,qFAA4B;AAC/C,aAAa,mBAAO,CAAC,2FAA+B;AACpD,oBAAoB,mBAAO,CAAC,uGAAqC;AACjE,kBAAkB,mBAAO,CAAC,mFAA2B;;AAErD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZa;AACb,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9Ba;AACb,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACVY;AACb,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACXY;AACb,wBAAwB,mBAAO,CAAC,mGAAmC;;AAEnE;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACVa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACPa;AACb,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,4BAA4B,mBAAO,CAAC,2GAAuC;AAC3E,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA;;;;;;;;;;;;ACjBa;AACb,qBAAqB,gIAAgD;AACrE,aAAa,mBAAO,CAAC,2FAA+B;AACpD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA,4CAA4C,gCAAgC;AAC5E;AACA;;;;;;;;;;;;ACZa;AACb,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,UAAU,mBAAO,CAAC,iEAAkB;;AAEpC;;AAEA;AACA;AACA;;;;;;;;;;;;ACRa;AACb,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,2BAA2B,mBAAO,CAAC,uGAAqC;;AAExE;AACA,kFAAkF;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACdY;AACb,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;AACA,gDAAgD;AAChD;;;;;;;;;;;;ACLa;AACb,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,mBAAmB,mBAAO,CAAC,qFAA4B;AACvD,wBAAwB,mBAAO,CAAC,mGAAmC;AACnE,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACda;AACb,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpCa;AACb;AACA,kBAAkB,mBAAO,CAAC,qGAAoC;;AAE9D,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,qBAAqB;AACrB,oCAAoC;AACpC,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,QAAQ;AACR,wCAAwC;AACxC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC,oCAAoC;;AAEpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpLa;AACb,2BAA2B,mHAA4C;AACvE,YAAY,mBAAO,CAAC,qEAAoB;AACxC,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACfa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;AACA;AACA;;AAEA,uBAAuB,+CAA+C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9Ba;AACb;AACA,iBAAiB,mBAAO,CAAC,uGAAqC;AAC9D,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AClBY;AACb,WAAW,mBAAO,CAAC,qFAA4B;AAC/C,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,oBAAoB,mBAAO,CAAC,yFAA8B;;AAE1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI,UAAU;AACnB;AACA;;;;;;;;;;;;ACpBa;AACb,oBAAoB,mBAAO,CAAC,mHAA2C;;AAEvE;AACA;;;;;;;;;;;;ACJa;AACb,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,uFAA6B;AACjD,WAAW,mBAAO,CAAC,qGAAoC;AACvD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,aAAa,mBAAO,CAAC,2FAA+B;AACpD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,WAAW,mBAAO,CAAC,mEAAmB;AACtC,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,oBAAoB,mBAAO,CAAC,yGAAsC;AAClE,8BAA8B,mBAAO,CAAC,6GAAwC;AAC9E,aAAa,mBAAO,CAAC,+FAAiC;AACtD,cAAc,mBAAO,CAAC,iGAAkC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACpHa;AACb,kBAAkB,mBAAO,CAAC,qGAAoC;;AAE9D;AACA;AACA;;;;;;;;;;;;ACLa;AACb,0BAA0B,mBAAO,CAAC,uGAAqC;;AAEvE;AACA;;AAEA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;;;;;;;;;;;;ACZa;AACb,kBAAkB,mBAAO,CAAC,mFAA2B;;AAErD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZa;AACb,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;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;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,kEAAkE;AACxE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,QAAQ,mFAAmF;;AAE3F;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE,oCAAoC;;;;;;;;;;;;AC3OzB;AACb;AACA,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,gCAAgC,wJAAwE;;AAExG;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;;;;;;;;;;;ACtBY;AACb,kCAAkC,mBAAO,CAAC,yHAA8C;AACxF,mCAAmC,mBAAO,CAAC,yHAA8C;;AAEzF;AACA;AACA;;;;;;;;;;;;ACNa;AACb,WAAW,mBAAO,CAAC,qGAAoC;AACvD,WAAW,mBAAO,CAAC,qFAA4B;AAC/C,mBAAmB,mBAAO,CAAC,qFAA4B;AACvD,eA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CnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ,qBAAqB,aAAa;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,IAAI,cAAc;AACzB;;AAEA;AACA;AACA;AACA,MAAM,gBAAgB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,iFAAiF;AACrF;AACA,CAAC;;AAED;AACA;;;;;;;;;;;;AC/Ra;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,+BAA+B,mBAAO,CAAC,+GAAyC;AAChF,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,yBAAyB,mBAAO,CAAC,iGAAkC;AACnE,qBAAqB,mBAAO,CAAC,yFAA8B;AAC3D,oBAAoB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,mBAAO,CAAC,uGAAqC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,gBAAgB;;AAEtB;AACA;;AAEA,gEAAgE,oBAAoB;AACpF;AACA;;AAEA;AACA;AACA,uDAAuD,mBAAmB;AAC1E;;AAEA;AACA;;;;;;;;;;;;ACpMa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,WAAW,mBAAO,CAAC,iFAA0B;;AAE7C;AACA;AACA,IAAI,0DAA0D;AAC9D;AACA,CAAC;;;;;;;;;;;;ACRY;AACb,2BAA2B,mHAA4C;AACvE,oBAAoB,mBAAO,CAAC,yFAA8B;AAC1D,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,gBAAgB,mBAAO,CAAC,6EAAwB;AAChD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,qBAAq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A;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAA6D;AACrF;AACA,MAAM;AACN,sBAAsB,yCAAyC;AAC/D;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAA+C;AACzE;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC,IAAI,kBAAkB;;AAEvB;AACA,sFAAsF,iBAAiB;;AAEvG;AACA;AACA;AACA;AACA,CAAC,IAAI,kBAAkB;;AAEvB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;;AAEA,IAAI,0DAA0D;AAC9D;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,MAAM;AACN;;AAEA;AACA,QAAQ,oEAAoE;AAC5E;AACA,8FAA8F;AAC9F;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,kGAAkG;AAClG;;AAEA;AACA;;AAEA,QAAQ,qEAAqE;AAC7E;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;AC9fa;AACb;AACA,mBAAO,CAAC,yHAA8C;;;;;;;;;;;;ACFzC;AACb;AACA,mBAAO,CAAC,2FAA+B;AACvC,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,qBAAqB,mBAAO,CAAC,6GAAwC;AACrE,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,WAAW,mBAAO,CAAC,qGAAoC;AACvD,kBAAkB,mBAAO,CAAC,qGAAoC;AAC9D,oBAAoB,mBAAO,CAAC,yFAA8B;AAC1D,4BAA4B,mBAAO,CAAC,2GAAuC;AAC3E,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,aAAa,mBAAO,CAAC,2FAA+B;AACpD,aAAa,mBAAO,CAAC,qFAA4B;AACjD,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,aAAa,yHAA+C;AAC5D,cAAc,mBAAO,CAAC,2GAAuC;AAC7D,gBAAgB,mBAAO,CAAC,6EAAwB;AAChD,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,8BAA8B,mBAAO,CAAC,6GAAwC;AAC9E,4BAA4B,mBAAO,CAAC,yHAA8C;AAClF,0BAA0B,mBAAO,CAAC,uFAA6B;;AAE/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wCAAwC;AACxC;AACA,CAAC;AACD,oCAAoC;AACpC,oBAAoB,QAAQ;AAC5B,CAAC;AACD,wCAAwC;AACxC,oBAAoB;AACpB,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,IAAI,kBAAkB;;AAEvB;AACA;AACA;AACA;AACA,CAAC,IAAI,kBAAkB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,IAAI,8EAA8E;AAClF;AACA,CAAC;;;;;;;;;;;;ACzhCY;AACb;AACA,mBAAO,CAAC,6FAAgC;;;;;;;;;;;;ACF3B;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,WAAW,mBAAO,CAAC,qFAA4B;;AAE/C;AACA;AACA,IAAI,8CAA8C;AAClD;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACV4B;AAC7B,+DAAe,aAAa;;;;;;;;;;;;ACD5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,CAAC,sCAAsC,SAAI;AAC3C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS,yBAAyB;AAClC;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,+FAA+F,8BAA8B;AAC7H;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;AACzD,oBAAoB;AACpB;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,kDAAkD;AAClD;AACA;;AAEA,oBAAoB,wCAAwC;AAC5D,oBAAoB;;AAEpB;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0BAA0B;;AAE1B,4CAA4C;AAC5C;AACA,6BAA6B,SAAS;AACtC;AACA,iDAAiD;AACjD;AACA,6BAA6B,SAAS;AACtC;AACA,mCAAmC;AACnC;AACA;AACA,gEAAgE;AAChE;AACA;AACA,6BAA6B,SAAS;AACtC;AACA,2CAA2C;AAC3C,6BAA6B,gBAAgB;AAC7C;AACA;AACA,sGAAsG;AACtG;AACA,yBAAyB,iBAAiB,SAAS;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C,gEAAgE;AAC/G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA,6DAA6D;AAC7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD;AACzD,yDAAyD;AACzD,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD;AACzD,yDAAyD;AACzD,qBAAqB;AACrB;;AAEA;AACA;AACA,8EAA8E;AAC9E;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,iDAAiD;AACjD,aAAa;;AAEb;AACA;;AAEA;AACA,+BAA+B,wBAAwB,qCAAqC;AAC5F,+BAA+B,gBAAgB;AAC/C,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC,sEAAe,EAAE,GAAC;;;;;;;UCnmBnB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;UEPD;UACA;UACA;UACA","sources":["webpack://FHIR/./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js","webpack://FHIR/./node_modules/debug/src/browser.js","webpack://FHIR/./node_modules/debug/src/common.js","webpack://FHIR/./src/Client.ts","webpack://FHIR/./src/HttpError.ts","webpack://FHIR/./src/adapters/BrowserAdapter.ts","webpack://FHIR/./src/entry/browser.ts","webpack://FHIR/./src/lib.ts","webpack://FHIR/./src/security/browser.ts","webpack://FHIR/./src/settings.ts","webpack://FHIR/./src/smart.ts","webpack://FHIR/./src/storage/BrowserStorage.ts","webpack://FHIR/./src/strings.ts","webpack://FHIR/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://FHIR/./node_modules/js-base64/base64.js","webpack://FHIR/./node_modules/ms/index.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/construct.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/createClass.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/inherits.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/typeof.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://FHIR/./node_modules/@babel/runtime/regenerator/index.js","webpack://FHIR/./node_modules/core-js/internals/a-callable.js","webpack://FHIR/./node_modules/core-js/internals/a-constructor.js","webpack://FHIR/./node_modules/core-js/internals/a-possible-prototype.js","webpack://FHIR/./node_modules/core-js/internals/add-to-unscopables.js","webpack://FHIR/./node_modules/core-js/internals/advance-string-index.js","webpack://FHIR/./node_modules/core-js/internals/an-instance.js","webpack://FHIR/./node_modules/core-js/internals/an-object.js","webpack://FHIR/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://FHIR/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://FHIR/./node_modules/core-js/internals/array-buffer.js","webpack://FHIR/./node_modules/core-js/internals/array-copy-within.js","webpack://FHIR/./node_modules/core-js/internals/array-fill.js","webpack://FHIR/./node_modules/core-js/internals/array-for-each.js","webpack://FHIR/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://FHIR/./node_modules/core-js/internals/array-from.js","webpack://FHIR/./node_modules/core-js/internals/array-includes.js","webpack://FHIR/./node_modules/core-js/internals/array-iteration.js","webpack://FHIR/./node_modules/core-js/internals/array-last-index-of.js","webpack://FHIR/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://FHIR/./node_modules/core-js/internals/array-method-is-strict.js","webpack://FHIR/./node_modules/core-js/internals/array-reduce.js","webpack://FHIR/./node_modules/core-js/internals/array-set-length.js","webpack://FHIR/./node_modules/core-js/internals/array-slice.js","webpack://FHIR/./node_modules/core-js/internals/array-sort.js","webpack://FHIR/./node_modules/core-js/internals/array-species-constructor.js","webpack://FHIR/./node_modules/core-js/internals/array-species-create.js","webpack://FHIR/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://FHIR/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://FHIR/./node_modules/core-js/internals/classof-raw.js","webpack://FHIR/./node_modules/core-js/internals/classof.js","webpack://FHIR/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://FHIR/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://FHIR/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://FHIR/./node_modules/core-js/internals/create-html.js","webpack://FHIR/./node_modules/core-js/internals/create-iter-result-object.js","webpack://FHIR/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://FHIR/./node_modules/core-js/internals/create-property-descriptor.js","webpack://FHIR/./node_modules/core-js/internals/create-property.js","webpack://FHIR/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://FHIR/./node_modules/core-js/internals/define-built-in.js","webpack://FHIR/./node_modules/core-js/internals/define-built-ins.js","webpack://FHIR/./node_modules/core-js/internals/define-global-property.js","webpack://FHIR/./node_modules/core-js/internals/delete-property-or-throw.js","webpack://FHIR/./node_modules/core-js/internals/descriptors.js","webpack://FHIR/./node_modules/core-js/internals/document-create-element.js","webpack://FHIR/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://FHIR/./node_modules/core-js/internals/dom-iterables.js","webpack://FHIR/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://FHIR/./node_modules/core-js/internals/enum-bug-keys.js","webpack://FHIR/./node_modules/core-js/internals/environment-ff-version.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-ie-or-edge.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-ios-pebble.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-ios.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-node.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-webos-webkit.js","webpack://FHIR/./node_modules/core-js/internals/environment-user-agent.js","webpack://FHIR/./node_modules/core-js/internals/environment-v8-version.js","webpack://FHIR/./node_modules/core-js/internals/environment-webkit-version.js","webpack://FHIR/./node_modules/core-js/internals/environment.js","webpack://FHIR/./node_modules/core-js/internals/export.js","webpack://FHIR/./node_modules/core-js/internals/fails.js","webpack://FHIR/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://FHIR/./node_modules/core-js/internals/flatten-into-array.js","webpack://FHIR/./node_modules/core-js/internals/function-apply.js","webpack://FHIR/./node_modules/core-js/internals/function-bind-context.js","webpack://FHIR/./node_modules/core-js/internals/function-bind-native.js","webpack://FHIR/./node_modules/core-js/internals/function-bind.js","webpack://FHIR/./node_modules/core-js/internals/function-call.js","webpack://FHIR/./node_modules/core-js/internals/function-name.js","webpack://FHIR/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://FHIR/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://FHIR/./node_modules/core-js/internals/function-uncurry-this.js","webpack://FHIR/./node_modules/core-js/internals/get-built-in.js","webpack://FHIR/./node_modules/core-js/internals/get-iterator-method.js","webpack://FHIR/./node_modules/core-js/internals/get-iterator.js","webpack://FHIR/./node_modules/core-js/internals/get-json-replacer-function.js","webpack://FHIR/./node_modules/core-js/internals/get-method.js","webpack://FHIR/./node_modules/core-js/internals/get-substitution.js","webpack://FHIR/./node_modules/core-js/internals/global-this.js","webpack://FHIR/./node_modules/core-js/internals/has-own-property.js","webpack://FHIR/./node_modules/core-js/internals/hidden-keys.js","webpack://FHIR/./node_modules/core-js/internals/host-report-errors.js","webpack://FHIR/./node_modules/core-js/internals/html.js","webpack://FHIR/./node_modules/core-js/internals/ie8-dom-define.js","webpack://FHIR/./node_modules/core-js/internals/ieee754.js","webpack://FHIR/./node_modules/core-js/internals/indexed-object.js","webpack://FHIR/./node_modules/core-js/internals/inherit-if-required.js","webpack://FHIR/./node_modules/core-js/internals/inspect-source.js","webpack://FHIR/./node_modules/core-js/internals/internal-state.js","webpack://FHIR/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://FHIR/./node_modules/core-js/internals/is-array.js","webpack://FHIR/./node_modules/core-js/internals/is-big-int-array.js","webpack://FHIR/./node_modules/core-js/internals/is-callable.js","webpack://FHIR/./node_modules/core-js/internals/is-constructor.js","webpack://FHIR/./node_modules/core-js/internals/is-forced.js","webpack://FHIR/./node_modules/core-js/internals/is-integral-number.js","webpack://FHIR/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://FHIR/./node_modules/core-js/internals/is-object.js","webpack://FHIR/./node_modules/core-js/internals/is-possible-prototype.js","webpack://FHIR/./node_modules/core-js/internals/is-pure.js","webpack://FHIR/./node_modules/core-js/internals/is-regexp.js","webpack://FHIR/./node_modules/core-js/internals/is-symbol.js","webpack://FHIR/./node_modules/core-js/internals/iterate.js","webpack://FHIR/./node_modules/core-js/internals/iterator-close.js","webpack://FHIR/./node_modules/core-js/internals/iterator-create-constructor.js","webpack://FHIR/./node_modules/core-js/internals/iterator-define.js","webpack://FHIR/./node_modules/core-js/internals/iterators-core.js","webpack://FHIR/./node_modules/core-js/internals/iterators.js","webpack://FHIR/./node_modules/core-js/internals/length-of-array-like.js","webpack://FHIR/./node_modules/core-js/internals/make-built-in.js","webpack://FHIR/./node_modules/core-js/internals/math-float-round.js","webpack://FHIR/./node_modules/core-js/internals/math-fround.js","webpack://FHIR/./node_modules/core-js/internals/math-sign.js","webpack://FHIR/./node_modules/core-js/internals/math-trunc.js","webpack://FHIR/./node_modules/core-js/internals/microtask.js","webpack://FHIR/./node_modules/core-js/internals/new-promise-capability.js","webpack://FHIR/./node_modules/core-js/internals/not-a-regexp.js","webpack://FHIR/./node_modules/core-js/internals/object-assign.js","webpack://FHIR/./node_modules/core-js/internals/object-create.js","webpack://FHIR/./node_modules/core-js/internals/object-define-properties.js","webpack://FHIR/./node_modules/core-js/internals/object-define-property.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://FHIR/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://FHIR/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://FHIR/./node_modules/core-js/internals/object-keys-internal.js","webpack://FHIR/./node_modules/core-js/internals/object-keys.js","webpack://FHIR/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://FHIR/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://FHIR/./node_modules/core-js/internals/object-to-string.js","webpack://FHIR/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://FHIR/./node_modules/core-js/internals/own-keys.js","webpack://FHIR/./node_modules/core-js/internals/path.js","webpack://FHIR/./node_modules/core-js/internals/perform.js","webpack://FHIR/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://FHIR/./node_modules/core-js/internals/promise-native-constructor.js","webpack://FHIR/./node_modules/core-js/internals/promise-resolve.js","webpack://FHIR/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://FHIR/./node_modules/core-js/internals/proxy-accessor.js","webpack://FHIR/./node_modules/core-js/internals/queue.js","webpack://FHIR/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://FHIR/./node_modules/core-js/internals/regexp-exec.js","webpack://FHIR/./node_modules/core-js/internals/regexp-flags.js","webpack://FHIR/./node_modules/core-js/internals/regexp-get-flags.js","webpack://FHIR/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://FHIR/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://FHIR/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://FHIR/./node_modules/core-js/internals/require-object-coercible.js","webpack://FHIR/./node_modules/core-js/internals/safe-get-built-in.js","webpack://FHIR/./node_modules/core-js/internals/same-value.js","webpack://FHIR/./node_modules/core-js/internals/set-species.js","webpack://FHIR/./node_modules/core-js/internals/set-to-string-tag.js","webpack://FHIR/./node_modules/core-js/internals/shared-key.js","webpack://FHIR/./node_modules/core-js/internals/shared-store.js","webpack://FHIR/./node_modules/core-js/internals/shared.js","webpack://FHIR/./node_modules/core-js/internals/species-constructor.js","webpack://FHIR/./node_modules/core-js/internals/string-html-forced.js","webpack://FHIR/./node_modules/core-js/internals/string-multibyte.js","webpack://FHIR/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://FHIR/./node_modules/core-js/internals/string-trim-forced.js","webpack://FHIR/./node_modules/core-js/internals/string-trim.js","webpack://FHIR/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://FHIR/./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack://FHIR/./node_modules/core-js/internals/symbol-registry-detection.js","webpack://FHIR/./node_modules/core-js/internals/task.js","webpack://FHIR/./node_modules/core-js/internals/this-number-value.js","webpack://FHIR/./node_modules/core-js/internals/to-absolute-index.js","webpack://FHIR/./node_modules/core-js/internals/to-big-int.js","webpack://FHIR/./node_modules/core-js/internals/to-index.js","webpack://FHIR/./node_modules/core-js/internals/to-indexed-object.js","webpack://FHIR/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://FHIR/./node_modules/core-js/internals/to-length.js","webpack://FHIR/./node_modules/core-js/internals/to-object.js","webpack://FHIR/./node_modules/core-js/internals/to-offset.js","webpack://FHIR/./node_modules/core-js/internals/to-positive-integer.js","webpack://FHIR/./node_modules/core-js/internals/to-primitive.js","webpack://FHIR/./node_modules/core-js/internals/to-property-key.js","webpack://FHIR/./node_modules/core-js/internals/to-string-tag-support.js","webpack://FHIR/./node_modules/core-js/internals/to-string.js","webpack://FHIR/./node_modules/core-js/internals/to-uint8-clamped.js","webpack://FHIR/./node_modules/core-js/internals/try-to-string.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-constructor.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-from.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-species-constructor.js","webpack://FHIR/./node_modules/core-js/internals/uid.js","webpack://FHIR/./node_modules/core-js/internals/url-constructor-detection.js","webpack://FHIR/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://FHIR/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://FHIR/./node_modules/core-js/internals/validate-arguments-length.js","webpack://FHIR/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://FHIR/./node_modules/core-js/internals/well-known-symbol-define.js","webpack://FHIR/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://FHIR/./node_modules/core-js/internals/well-known-symbol.js","webpack://FHIR/./node_modules/core-js/internals/whitespaces.js","webpack://FHIR/./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.array.concat.js","webpack://FHIR/./node_modules/core-js/modules/es.array.filter.js","webpack://FHIR/./node_modules/core-js/modules/es.array.find.js","webpack://FHIR/./node_modules/core-js/modules/es.array.flat.js","webpack://FHIR/./node_modules/core-js/modules/es.array.includes.js","webpack://FHIR/./node_modules/core-js/modules/es.array.iterator.js","webpack://FHIR/./node_modules/core-js/modules/es.array.join.js","webpack://FHIR/./node_modules/core-js/modules/es.array.map.js","webpack://FHIR/./node_modules/core-js/modules/es.array.slice.js","webpack://FHIR/./node_modules/core-js/modules/es.array.sort.js","webpack://FHIR/./node_modules/core-js/modules/es.array.splice.js","webpack://FHIR/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://FHIR/./node_modules/core-js/modules/es.function.name.js","webpack://FHIR/./node_modules/core-js/modules/es.global-this.js","webpack://FHIR/./node_modules/core-js/modules/es.json.stringify.js","webpack://FHIR/./node_modules/core-js/modules/es.number.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.object.assign.js","webpack://FHIR/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://FHIR/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://FHIR/./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack://FHIR/./node_modules/core-js/modules/es.object.keys.js","webpack://FHIR/./node_modules/core-js/modules/es.object.to-string.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.all.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.catch.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.finally.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.race.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.reject.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.resolve.js","webpack://FHIR/./node_modules/core-js/modules/es.reflect.construct.js","webpack://FHIR/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.regexp.exec.js","webpack://FHIR/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://FHIR/./node_modules/core-js/modules/es.string.from-code-point.js","webpack://FHIR/./node_modules/core-js/modules/es.string.includes.js","webpack://FHIR/./node_modules/core-js/modules/es.string.iterator.js","webpack://FHIR/./node_modules/core-js/modules/es.string.link.js","webpack://FHIR/./node_modules/core-js/modules/es.string.match.js","webpack://FHIR/./node_modules/core-js/modules/es.string.replace.js","webpack://FHIR/./node_modules/core-js/modules/es.string.search.js","webpack://FHIR/./node_modules/core-js/modules/es.string.split.js","webpack://FHIR/./node_modules/core-js/modules/es.string.trim.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.for.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.key-for.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.every.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.fill.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.filter.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.find-index.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.find.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.for-each.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.includes.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.index-of.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.iterator.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.join.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.map.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.reduce.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.reverse.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.set.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.slice.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.some.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.sort.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.subarray.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.to-string.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack://FHIR/./node_modules/core-js/modules/esnext.global-this.js","webpack://FHIR/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://FHIR/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://FHIR/./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack://FHIR/./node_modules/core-js/modules/web.url-search-params.js","webpack://FHIR/./node_modules/core-js/modules/web.url.constructor.js","webpack://FHIR/./node_modules/core-js/modules/web.url.js","webpack://FHIR/./node_modules/core-js/modules/web.url.to-json.js","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/browser.mjs","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs","webpack://FHIR/webpack/bootstrap","webpack://FHIR/webpack/runtime/global","webpack://FHIR/webpack/before-startup","webpack://FHIR/webpack/startup","webpack://FHIR/webpack/after-startup"],"sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n})((function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n Object.defineProperty(this, 'listeners', {\n value: {},\n writable: true,\n configurable: true\n });\n }\n\n _createClass(Emitter, [{\n key: \"addEventListener\",\n value: function addEventListener(type, callback, options) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push({\n callback: callback,\n options: options\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i].callback === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[event.type];\n var stackToCall = stack.slice();\n\n for (var i = 0, l = stackToCall.length; i < l; i++) {\n var listener = stackToCall[i];\n\n try {\n listener.callback.call(this, event);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n\n if (listener.options && listener.options.once) {\n this.removeEventListener(event.type, listener.callback);\n }\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return Emitter;\n }();\n\n var AbortSignal = /*#__PURE__*/function (_Emitter) {\n _inherits(AbortSignal, _Emitter);\n\n var _super = _createSuper(AbortSignal);\n\n function AbortSignal() {\n var _this;\n\n _classCallCheck(this, AbortSignal);\n\n _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n // the parent constructor directly instead as a workaround. For general details, see babel bug:\n // https://github.com/babel/babel/issues/3041\n // This hack was added as a fix for the issue described here:\n // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n\n if (!_this.listeners) {\n Emitter.call(_assertThisInitialized(_this));\n } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'aborted', {\n value: false,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'onabort', {\n value: null,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'reason', {\n value: undefined,\n writable: true,\n configurable: true\n });\n return _this;\n }\n\n _createClass(AbortSignal, [{\n key: \"toString\",\n value: function toString() {\n return '[object AbortSignal]';\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (event.type === 'abort') {\n this.aborted = true;\n\n if (typeof this.onabort === 'function') {\n this.onabort.call(this, event);\n }\n }\n\n _get(_getPrototypeOf(AbortSignal.prototype), \"dispatchEvent\", this).call(this, event);\n }\n }]);\n\n return AbortSignal;\n }(Emitter);\n var AbortController = /*#__PURE__*/function () {\n function AbortController() {\n _classCallCheck(this, AbortController);\n\n // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n Object.defineProperty(this, 'signal', {\n value: new AbortSignal(),\n writable: true,\n configurable: true\n });\n }\n\n _createClass(AbortController, [{\n key: \"abort\",\n value: function abort(reason) {\n var event;\n\n try {\n event = new Event('abort');\n } catch (e) {\n if (typeof document !== 'undefined') {\n if (!document.createEvent) {\n // For Internet Explorer 8:\n event = document.createEventObject();\n event.type = 'abort';\n } else {\n // For Internet Explorer 11:\n event = document.createEvent('Event');\n event.initEvent('abort', false, false);\n }\n } else {\n // Fallback where document isn't available:\n event = {\n type: 'abort',\n bubbles: false,\n cancelable: false\n };\n }\n }\n\n var signalReason = reason;\n\n if (signalReason === undefined) {\n if (typeof document === 'undefined') {\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n } else {\n try {\n signalReason = new DOMException('signal is aborted without reason');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n }\n }\n }\n\n this.signal.reason = signalReason;\n this.signal.dispatchEvent(event);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object AbortController]';\n }\n }]);\n\n return AbortController;\n }();\n\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n // These are necessary to make sure that we get correct output for:\n // Object.prototype.toString.call(new AbortController())\n AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n }\n\n function polyfillNeeded(self) {\n if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n return true;\n } // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // so the below feature detection needs the !self.AbortController part.\n // The Request.prototype check is also needed because Safari versions 11.1.2\n // up to and including 12.1.x has a window.AbortController present but still\n // does NOT correctly implement abortable fetch:\n // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n\n\n return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n }\n\n (function (self) {\n\n if (!polyfillNeeded(self)) {\n return;\n }\n\n self.AbortController = AbortController;\n self.AbortSignal = AbortSignal;\n })(typeof self !== 'undefined' ? self : global);\n\n}));\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","import {\n absolute,\n debug as _debug,\n getPath,\n setPath,\n jwtDecode,\n makeArray,\n request,\n byCode,\n byCodes,\n units,\n getPatientParam,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n assertJsonPatch,\n assert\n} from \"./lib\";\n\nimport str from \"./strings\";\nimport { SMART_KEY, patientCompartment, fhirVersions } from \"./settings\";\nimport HttpError from \"./HttpError\";\nimport BrowserAdapter from \"./adapters/BrowserAdapter\";\nimport { fhirclient } from \"./types\";\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { Response } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst debug = _debug.extend(\"client\");\n\n/**\n * Adds patient context to requestOptions object to be used with [[Client.request]]\n * @param requestOptions Can be a string URL (relative to the serviceUrl), or an\n * object which will be passed to fetch()\n * @param client Current FHIR client object containing patient context\n * @return requestOptions object contextualized to current patient\n */\nasync function contextualize(\n requestOptions: string | URL | fhirclient.RequestOptions,\n client: Client\n): Promise\n{\n const base = absolute(\"/\", client.state.serverUrl);\n\n async function contextualURL(_url: URL) {\n const resourceType = _url.pathname.split(\"/\").pop();\n assert(resourceType, `Invalid url \"${_url}\"`);\n assert(patientCompartment.indexOf(resourceType) > -1, `Cannot filter \"${resourceType}\" resources by patient`);\n const conformance = await fetchConformanceStatement(client.state.serverUrl);\n const searchParam = getPatientParam(conformance, resourceType);\n _url.searchParams.set(searchParam, client.patient.id as string);\n return _url.href;\n }\n\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n return { url: await contextualURL(new URL(requestOptions + \"\", base)) };\n }\n\n requestOptions.url = await contextualURL(new URL(requestOptions.url + \"\", base));\n return requestOptions;\n}\n\n/**\n * Gets single reference by id. Caches the result.\n * @param refId\n * @param cache A map to store the resolved refs\n * @param client The client instance\n * @param requestOptions Only signal and headers are currently used if provided\n * @returns The resolved reference\n * @private\n */\nfunction getRef(\n refId: string,\n cache: Record,\n client: Client,\n requestOptions: RequestInit\n): Promise {\n if (!cache[refId]) {\n\n const { signal, headers } = requestOptions;\n\n // Note that we set cache[refId] immediately! When the promise is\n // settled it will be updated. This is to avoid a ref being fetched\n // twice because some of these requests are executed in parallel.\n cache[refId] = client.request({\n url: refId,\n headers,\n signal\n }).then(res => {\n cache[refId] = res;\n return res;\n }, (error: Error) => {\n delete cache[refId];\n throw error;\n });\n }\n\n return Promise.resolve(cache[refId]);\n}\n\n/**\n * Resolves a reference in the given resource.\n * @param obj FHIR Resource\n */\nfunction resolveRef(\n obj: fhirclient.FHIR.Resource,\n path: string,\n graph: boolean,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n const node = getPath(obj, path);\n if (node) {\n const isArray = Array.isArray(node);\n return Promise.all(makeArray(node).filter(Boolean).map((item, i) => {\n const ref = item.reference;\n if (ref) {\n return getRef(ref, cache, client, requestOptions).then(sub => {\n if (graph) {\n if (isArray) {\n if (path.indexOf(\"..\") > -1) {\n setPath(obj, `${path.replace(\"..\", `.${i}.`)}`, sub); \n } else {\n setPath(obj, `${path}.${i}`, sub);\n }\n } else {\n setPath(obj, path, sub);\n }\n }\n }).catch((ex) => {\n /* ignore missing references */\n if (ex.status !== 404) {\n throw ex;\n }\n });\n }\n }));\n }\n}\n\n/**\n * Given a resource and a list of ref paths - resolves them all\n * @param obj FHIR Resource\n * @param fhirOptions The fhir options of the initiating request call\n * @param cache A map to store fetched refs\n * @param client The client instance\n * @private\n */\nfunction resolveRefs(\n obj: fhirclient.FHIR.Resource,\n fhirOptions: fhirclient.FhirOptions,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n\n // 1. Sanitize paths, remove any invalid ones\n let paths = makeArray(fhirOptions.resolveReferences)\n .filter(Boolean) // No false, 0, null, undefined or \"\"\n .map(path => String(path).trim())\n .filter(Boolean); // No space-only strings\n\n // 2. Remove duplicates\n paths = paths.filter((p, i) => {\n const index = paths.indexOf(p, i + 1);\n if (index > -1) {\n debug(\"Duplicated reference path \\\"%s\\\"\", p);\n return false;\n }\n return true;\n });\n\n // 3. Early exit if no valid paths are found\n if (!paths.length) {\n return Promise.resolve();\n }\n\n // 4. Group the paths by depth so that child refs are looked up\n // after their parents!\n const groups: Record = {};\n paths.forEach(path => {\n const len = path.split(\".\").length;\n if (!groups[len]) {\n groups[len] = [];\n }\n groups[len].push(path);\n });\n\n // 5. Execute groups sequentially! Paths within same group are\n // fetched in parallel!\n let task: Promise = Promise.resolve();\n Object.keys(groups).sort().forEach(len => {\n const group = groups[len];\n task = task.then(() => Promise.all(group.map((path: string) => {\n return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions);\n })));\n });\n return task;\n}\n\n/**\n * This is a FHIR client that is returned to you from the `ready()` call of the\n * **SMART API**. You can also create it yourself if needed:\n *\n * ```js\n * // BROWSER\n * const client = FHIR.client(\"https://r4.smarthealthit.org\");\n *\n * // SERVER\n * const client = smart(req, res).client(\"https://r4.smarthealthit.org\");\n * ```\n */\nexport default class Client\n{\n /**\n * The state of the client instance is an object with various properties.\n * It contains some details about how the client has been authorized and\n * determines the behavior of the client instance. This state is persisted\n * in `SessionStorage` in browsers or in request session on the servers.\n */\n readonly state: fhirclient.ClientState;\n\n /**\n * The adapter to use to connect to the current environment. Currently we have:\n * - BrowserAdapter - for browsers\n * - NodeAdapter - for Express or vanilla NodeJS servers\n * - HapiAdapter - for HAPI NodeJS servers\n */\n readonly environment: fhirclient.Adapter;\n\n /**\n * A SMART app is typically associated with a patient. This is a namespace\n * for the patient-related functionality of the client.\n */\n readonly patient: {\n\n /**\n * The ID of the current patient or `null` if there is no current patient\n */\n id: string | null\n\n /**\n * A method to fetch the current patient resource from the FHIR server.\n * If there is no patient context, it will reject with an error.\n * @param {fhirclient.FetchOptions} [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n \n /**\n * This is similar to [[request]] but it makes requests in the\n * context of the current patient. For example, instead of doing\n * ```js\n * client.request(\"Observation?patient=\" + client.patient.id)\n * ```\n * you can do\n * ```js\n * client.patient.request(\"Observation\")\n * ```\n * The return type depends on the arguments. Typically it will be the\n * response payload JSON object. Can also be a string or the `Response`\n * object itself if we have received a non-json result, which allows us\n * to handle even binary responses. Can also be a [[CombinedFetchResult]]\n * object if the `requestOptions.includeResponse`s has been set to true.\n * @category Request\n */\n request: (\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions?: fhirclient.FhirOptions\n ) => Promise\n\n /**\n * This is the FhirJS Patient API. It will ONLY exist if the `Client`\n * instance is \"connected\" to FhirJS.\n */\n api?: Record\n };\n\n /**\n * The client may be associated with a specific encounter, if the scopes\n * permit that and if the back-end server supports that. This is a namespace\n * for encounter-related functionality.\n */\n readonly encounter: {\n\n /**\n * The ID of the current encounter or `null` if there is no current\n * encounter\n */\n id: string | null\n\n /**\n * A method to fetch the current encounter resource from the FHIR server.\n * If there is no encounter context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n };\n\n /**\n * The client may be associated with a specific user, if the scopes\n * permit that. This is a namespace for user-related functionality.\n */\n readonly user: {\n\n /**\n * The ID of the current user or `null` if there is no current user\n */\n id: string | null\n\n /**\n * A method to fetch the current user resource from the FHIR server.\n * If there is no user context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction<\n fhirclient.FHIR.Patient |\n fhirclient.FHIR.Practitioner |\n fhirclient.FHIR.RelatedPerson\n >\n\n /**\n * Returns the profile of the logged_in user (if any), or null if the\n * user is not available. This is a string having the shape\n * `{user type}/{user id}`. For example `Practitioner/abc` or\n * `Patient/xyz`.\n * @alias client.getFhirUser()\n */\n fhirUser: string | null\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * `Practitioner`, `Patient` or `RelatedPerson`.\n * @alias client.getUserType()\n */\n resourceType: string | null\n };\n\n /**\n * The [FhirJS](https://github.com/FHIR/fhir.js/blob/master/README.md) API.\n * **NOTE:** This will only be available if `fhir.js` is used. Otherwise it\n * will be `undefined`.\n */\n api: Record | undefined;\n\n /**\n * Refers to the refresh task while it is being performed.\n * @see [[refresh]]\n */\n private _refreshTask: Promise | null;\n\n /**\n * Validates the parameters, creates an instance and tries to connect it to\n * FhirJS, if one is available globally.\n */\n constructor(environment: fhirclient.Adapter, state: fhirclient.ClientState | string)\n {\n const _state = typeof state == \"string\" ? { serverUrl: state } : state;\n\n // Valid serverUrl is required!\n assert(\n _state.serverUrl && _state.serverUrl.match(/https?:\\/\\/.+/),\n \"A \\\"serverUrl\\\" option is required and must begin with \\\"http(s)\\\"\"\n );\n\n this.state = _state;\n this.environment = environment;\n this._refreshTask = null;\n\n const client = this;\n\n // patient api ---------------------------------------------------------\n this.patient = {\n get id() { return client.getPatientId(); },\n read: (requestOptions) => {\n const id = this.patient.id;\n return id ?\n this.request({ ...requestOptions, url: `Patient/${id}` }) :\n Promise.reject(new Error(\"Patient is not available\"));\n },\n request: (requestOptions, fhirOptions = {}) => {\n if (this.patient.id) {\n return (async () => {\n const options = await contextualize(requestOptions, this);\n return this.request(options, fhirOptions);\n })();\n } else {\n return Promise.reject(new Error(\"Patient is not available\"));\n }\n }\n };\n\n // encounter api -------------------------------------------------------\n this.encounter = {\n get id() { return client.getEncounterId(); },\n read: requestOptions => {\n const id = this.encounter.id;\n return id ?\n this.request({ ...requestOptions, url: `Encounter/${id}` }) :\n Promise.reject(new Error(\"Encounter is not available\"));\n }\n };\n\n // user api ------------------------------------------------------------\n this.user = {\n get fhirUser() { return client.getFhirUser(); },\n get id() { return client.getUserId(); },\n get resourceType() { return client.getUserType(); },\n read: requestOptions => {\n const fhirUser = this.user.fhirUser;\n return fhirUser ?\n this.request({ ...requestOptions, url: fhirUser }) :\n Promise.reject(new Error(\"User is not available\"));\n }\n };\n\n // fhir.js api (attached automatically in browser)\n // ---------------------------------------------------------------------\n this.connect((environment as BrowserAdapter).fhir);\n }\n\n /**\n * This method is used to make the \"link\" between the `fhirclient` and the\n * `fhir.js`, if one is available.\n * **Note:** This is called by the constructor. If fhir.js is available in\n * the global scope as `fhir`, it will automatically be linked to any [[Client]]\n * instance. You should only use this method to connect to `fhir.js` which\n * is not global.\n */\n connect(fhirJs?: (options: Record) => Record): Client\n {\n if (typeof fhirJs == \"function\") {\n const options: Record = {\n baseUrl: this.state.serverUrl.replace(/\\/$/, \"\")\n };\n\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n options.auth = { token: accessToken };\n }\n else {\n const { username, password } = this.state;\n if (username && password) {\n options.auth = {\n user: username,\n pass: password\n };\n }\n }\n this.api = fhirJs(options);\n\n const patientId = this.getState(\"tokenResponse.patient\");\n if (patientId) {\n this.patient.api = fhirJs({\n ...options,\n patient: patientId\n });\n }\n }\n return this;\n }\n\n /**\n * Returns the ID of the selected patient or null. You should have requested\n * \"launch/patient\" scope. Otherwise this will return null.\n */\n getPatientId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the patient. This should be a scope issue.\n if (!tokenResponse.patient) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/patient)?\\b/)) {\n debug(str.noScopeForId, \"patient\", \"patient\");\n }\n else {\n // The server should have returned the patient!\n debug(\"The ID of the selected patient is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return tokenResponse.patient;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected patient\");\n }\n else {\n debug(str.noFreeContext, \"selected patient\");\n }\n return null;\n }\n\n /**\n * Returns the ID of the selected encounter or null. You should have\n * requested \"launch/encounter\" scope. Otherwise this will return null.\n * Note that not all servers support the \"launch/encounter\" scope so this\n * will be null if they don't.\n */\n getEncounterId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the encounter. This should be a scope issue.\n if (!tokenResponse.encounter) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/encounter)?\\b/)) {\n debug(str.noScopeForId, \"encounter\", \"encounter\");\n }\n else {\n // The server should have returned the encounter!\n debug(\"The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters.\");\n }\n return null;\n }\n return tokenResponse.encounter;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected encounter\");\n }\n else {\n debug(str.noFreeContext, \"selected encounter\");\n }\n return null;\n }\n\n /**\n * Returns the (decoded) id_token if any. You need to request \"openid\" and\n * \"profile\" scopes if you need to receive an id_token (if you need to know\n * who the logged-in user is).\n */\n getIdToken(): fhirclient.IDToken | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n const idToken = tokenResponse.id_token;\n const scope = this.state.scope || \"\";\n\n // We have been authorized against this server but we don't have\n // the id_token. This should be a scope issue.\n if (!idToken) {\n const hasOpenid = scope.match(/\\bopenid\\b/);\n const hasProfile = scope.match(/\\bprofile\\b/);\n const hasFhirUser = scope.match(/\\bfhirUser\\b/);\n if (!hasOpenid || !(hasFhirUser || hasProfile)) {\n debug(\n \"You are trying to get the id_token but you are not \" +\n \"using the right scopes. Please add 'openid' and \" +\n \"'fhirUser' or 'profile' to the scopes you are \" +\n \"requesting.\"\n );\n }\n else {\n // The server should have returned the id_token!\n debug(\"The id_token is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return jwtDecode(idToken, this.environment) as fhirclient.IDToken;\n }\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the id_token\");\n }\n else {\n debug(str.noFreeContext, \"id_token\");\n }\n return null;\n }\n\n /**\n * Returns the profile of the logged_in user (if any). This is a string\n * having the following shape `\"{user type}/{user id}\"`. For example:\n * `\"Practitioner/abc\"` or `\"Patient/xyz\"`.\n */\n getFhirUser(): string | null\n {\n const idToken = this.getIdToken();\n if (idToken) {\n // Epic may return a full url\n // @see https://github.com/smart-on-fhir/client-js/issues/105\n if (idToken.fhirUser) {\n return idToken.fhirUser.split(\"/\").slice(-2).join(\"/\");\n }\n return idToken.profile\n }\n return null;\n }\n\n /**\n * Returns the user ID or null.\n */\n getUserId(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[1];\n }\n return null;\n }\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * \"Practitioner\", \"Patient\" or \"RelatedPerson\".\n */\n getUserType(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[0];\n }\n return null;\n }\n\n /**\n * Builds and returns the value of the `Authorization` header that can be\n * sent to the FHIR server\n */\n getAuthorizationHeader(): string | null\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n return \"Bearer \" + accessToken;\n }\n const { username, password } = this.state;\n if (username && password) {\n return \"Basic \" + this.environment.btoa(username + \":\" + password);\n }\n return null;\n }\n\n /**\n * Used internally to clear the state of the instance and the state in the\n * associated storage.\n */\n private async _clearState() {\n const storage = this.environment.getStorage();\n const key = await storage.get(SMART_KEY);\n if (key) {\n await storage.unset(key);\n }\n await storage.unset(SMART_KEY);\n this.state.tokenResponse = {};\n }\n\n /**\n * Creates a new resource in a server-assigned location\n * @see http://hl7.org/fhir/http.html#create\n * @param resource A FHIR resource to be created\n * @param [requestOptions] Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n create(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}`,\n method: \"POST\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Creates a new current version for an existing resource or creates an\n * initial version if no resource already exists for the given id.\n * @see http://hl7.org/fhir/http.html#update\n * @param resource A FHIR resource to be updated\n * @param requestOptions Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n update(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}/${resource.id}`,\n method: \"PUT\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Removes an existing resource.\n * @see http://hl7.org/fhir/http.html#delete\n * @param url Relative URI of the FHIR resource to be deleted\n * (format: `resourceType/id`)\n * @param requestOptions Any options (except `method` which will be fixed\n * to `DELETE`) to be passed to the fetch call.\n * @category Request\n */\n delete(url: string, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n return this.request({\n ...requestOptions,\n url,\n method: \"DELETE\"\n });\n }\n\n /**\n * Makes a JSON Patch to the given resource\n * @see http://hl7.org/fhir/http.html#patch\n * @param url Relative URI of the FHIR resource to be patched\n * (format: `resourceType/id`)\n * @param patch A JSON Patch array to send to the server, For details\n * see https://datatracker.ietf.org/doc/html/rfc6902\n * @param requestOptions Any options to be passed to the fetch call,\n * except for `method`, `url` and `body` which cannot be overridden.\n * @since 2.4.0\n * @category Request\n * @typeParam ResolveType This method would typically resolve with the\n * patched resource or reject with an OperationOutcome. However, this may\n * depend on the server implementation or even on the request headers.\n * For that reason, if the default resolve type (which is\n * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass\n * in your own resolve type parameter.\n */\n async patch(url: string, patch: fhirclient.JsonPatch, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n assertJsonPatch(patch);\n return this.request({\n ...requestOptions,\n url,\n method: \"PATCH\",\n body: JSON.stringify(patch),\n headers: {\n \"prefer\": \"return=presentation\",\n \"content-type\": \"application/json-patch+json; charset=UTF-8\",\n ...requestOptions.headers,\n }\n });\n }\n\n /**\n * @param requestOptions Can be a string URL (relative to the serviceUrl),\n * or an object which will be passed to fetch()\n * @param fhirOptions Additional options to control the behavior\n * @param _resolvedRefs DO NOT USE! Used internally.\n * @category Request\n */\n async request(\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions: fhirclient.FhirOptions = {},\n _resolvedRefs: fhirclient.JsonObject = {}\n ): Promise\n {\n const debugRequest = _debug.extend(\"client:request\");\n assert(requestOptions, \"request requires an url or request options as argument\");\n\n // url -----------------------------------------------------------------\n let url: string;\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n url = String(requestOptions);\n requestOptions = {} as fhirclient.RequestOptions;\n }\n else {\n url = String(requestOptions.url);\n }\n\n url = absolute(url, this.state.serverUrl);\n\n const options = {\n graph: fhirOptions.graph !== false,\n flat : !!fhirOptions.flat,\n pageLimit: fhirOptions.pageLimit ?? 1,\n resolveReferences: (fhirOptions.resolveReferences || []) as string[],\n useRefreshToken: fhirOptions.useRefreshToken !== false,\n onPage: typeof fhirOptions.onPage == \"function\" ?\n fhirOptions.onPage as (\n data: fhirclient.JsonObject | fhirclient.JsonObject[],\n references?: fhirclient.JsonObject | undefined) => any :\n undefined\n };\n\n const signal = (requestOptions as RequestInit).signal || undefined;\n\n // Refresh the access token if needed\n const job = options.useRefreshToken ?\n this.refreshIfNeeded({ signal }).then(() => requestOptions as fhirclient.RequestOptions) :\n Promise.resolve(requestOptions as fhirclient.RequestOptions);\n\n let response: Response | undefined;\n\n return job\n\n // Add the Authorization header now, after the access token might\n // have been updated\n .then(requestOptions => {\n const authHeader = this.getAuthorizationHeader();\n if (authHeader) {\n requestOptions.headers = {\n ...requestOptions.headers,\n authorization: authHeader\n };\n }\n return requestOptions;\n })\n \n // Make the request\n .then(requestOptions => {\n debugRequest(\n \"%s, options: %O, fhirOptions: %O\",\n url,\n requestOptions,\n options\n );\n return request(url, requestOptions).then(result => {\n if (requestOptions.includeResponse) {\n response = (result as fhirclient.CombinedFetchResult).response;\n return (result as fhirclient.CombinedFetchResult).body;\n }\n return result;\n });\n })\n\n // Handle 401 ------------------------------------------------------\n .catch(async (error: HttpError) => {\n if (error.status == 401) {\n\n // !accessToken -> not authorized -> No session. Need to launch.\n if (!this.getState(\"tokenResponse.access_token\")) {\n error.message += \"\\nThis app cannot be accessed directly. Please launch it as SMART app!\";\n throw error;\n }\n\n // auto-refresh not enabled and Session expired.\n // Need to re-launch. Clear state to start over!\n if (!options.useRefreshToken) {\n debugRequest(\"Your session has expired and the useRefreshToken option is set to false. Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n\n // In rare cases we may have a valid access token and a refresh\n // token and the request might still fail with 401 just because\n // the access token has just been revoked.\n\n // otherwise -> auto-refresh failed. Session expired.\n // Need to re-launch. Clear state to start over!\n debugRequest(\"Auto-refresh failed! Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n throw error;\n })\n\n // Handle 403 ------------------------------------------------------\n .catch((error: HttpError) => {\n if (error.status == 403) {\n debugRequest(\"Permission denied! Please make sure that you have requested the proper scopes.\");\n }\n throw error;\n })\n\n .then((data: any) => {\n\n // At this point we don't know what `data` actually is!\n\n // We might get an empty or falsy result. If so return it as is\n // Also handle raw responses\n if (!data || typeof data == \"string\" || data instanceof Response) {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: data,\n response\n }\n }\n return data;\n }\n \n // Resolve References ------------------------------------------\n return (async (_data: fhirclient.FHIR.Resource) => {\n\n if (_data.resourceType == \"Bundle\") {\n await Promise.all(((_data as fhirclient.FHIR.Bundle).entry || []).map(item => resolveRefs(\n item.resource,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n )));\n }\n else {\n await resolveRefs(\n _data,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n );\n }\n\n return _data;\n })(data)\n\n // Pagination ----------------------------------------------\n .then(async _data => {\n if (_data && _data.resourceType == \"Bundle\") {\n const links = (_data.link || []) as fhirclient.FHIR.BundleLink[];\n\n if (options.flat) {\n _data = (_data.entry || []).map(\n (entry: fhirclient.FHIR.BundleEntry) => entry.resource\n );\n }\n\n if (options.onPage) {\n await options.onPage(_data, { ..._resolvedRefs });\n }\n\n if (--options.pageLimit) {\n const next = links.find(l => l.relation == \"next\");\n _data = makeArray(_data);\n if (next && next.url) {\n const nextPage = await this.request(\n {\n url: next.url,\n\n // Aborting the main request (even after it is complete)\n // must propagate to any child requests and abort them!\n // To do so, just pass the same AbortSignal if one is\n // provided.\n signal\n },\n options,\n _resolvedRefs\n );\n\n if (options.onPage) {\n return null;\n }\n\n if (options.resolveReferences.length) {\n Object.assign(_resolvedRefs, nextPage.references);\n return _data.concat(makeArray(nextPage.data || nextPage));\n }\n return _data.concat(makeArray(nextPage));\n }\n }\n }\n return _data;\n })\n\n // Finalize ------------------------------------------------\n .then(_data => {\n if (options.graph) {\n _resolvedRefs = {};\n }\n else if (!options.onPage && options.resolveReferences.length) {\n return {\n data: _data,\n references: _resolvedRefs\n };\n }\n return _data;\n })\n .then(_data => {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: _data,\n response\n }\n }\n return _data;\n });\n });\n }\n\n /**\n * Checks if access token and refresh token are present. If they are, and if\n * the access token is expired or is about to expire in the next 10 seconds,\n * calls `this.refresh()` to obtain new access token.\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refreshIfNeeded(requestOptions: RequestInit = {}): Promise\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n const refreshToken = this.getState(\"tokenResponse.refresh_token\");\n const expiresAt = this.state.expiresAt || 0;\n\n if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) {\n return this.refresh(requestOptions);\n }\n\n return Promise.resolve(this.state);\n }\n\n /**\n * Use the refresh token to obtain new access token. If the refresh token is\n * expired (or this fails for any other reason) it will be deleted from the\n * state, so that we don't enter into loops trying to re-authorize.\n *\n * This method is typically called internally from [[request]] if\n * certain request fails with 401.\n *\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refresh(requestOptions: RequestInit = {}): Promise\n {\n const debugRefresh = _debug.extend(\"client:refresh\");\n debugRefresh(\"Attempting to refresh with refresh_token...\");\n\n const refreshToken = this.state?.tokenResponse?.refresh_token;\n assert(refreshToken, \"Unable to refresh. No refresh_token found.\");\n\n const tokenUri = this.state.tokenUri;\n assert(tokenUri, \"Unable to refresh. No tokenUri found.\");\n\n const scopes = this.getState(\"tokenResponse.scope\") || \"\";\n const hasOfflineAccess = scopes.search(/\\boffline_access\\b/) > -1;\n const hasOnlineAccess = scopes.search(/\\bonline_access\\b/) > -1;\n assert(hasOfflineAccess || hasOnlineAccess, \"Unable to refresh. No offline_access or online_access scope found.\");\n\n // This method is typically called internally from `request` if certain\n // request fails with 401. However, clients will often run multiple\n // requests in parallel which may result in multiple refresh calls.\n // To avoid that, we keep a reference to the current refresh task (if any).\n if (!this._refreshTask) {\n\n const refreshRequestOptions = {\n credentials: this.environment.options.refreshTokenWithCredentials || \"same-origin\",\n ...requestOptions,\n method : \"POST\",\n mode : \"cors\" as RequestMode,\n headers: {\n ...(requestOptions.headers || {}),\n \"content-type\": \"application/x-www-form-urlencoded\"\n },\n body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(refreshToken)}`\n };\n\n // custom authorization header can be passed on manual calls\n if (!(\"authorization\" in refreshRequestOptions.headers)) {\n const { clientSecret, clientId } = this.state;\n if (clientSecret) {\n // @ts-ignore\n refreshRequestOptions.headers.authorization = \"Basic \" + this.environment.btoa(\n clientId + \":\" + clientSecret\n );\n }\n }\n\n this._refreshTask = request(tokenUri, refreshRequestOptions)\n .then(data => {\n assert(data.access_token, \"No access token received\");\n debugRefresh(\"Received new access token response %O\", data);\n this.state.tokenResponse = { ...this.state.tokenResponse, ...data };\n this.state.expiresAt = getAccessTokenExpiration(data, this.environment);\n return this.state;\n })\n .catch((error: Error) => {\n if (this.state?.tokenResponse?.refresh_token) {\n debugRefresh(\"Deleting the expired or invalid refresh token.\");\n delete this.state.tokenResponse.refresh_token;\n }\n throw error;\n })\n .finally(() => {\n this._refreshTask = null;\n const key = this.state.key;\n if (key) {\n this.environment.getStorage().set(key, this.state);\n } else {\n debugRefresh(\"No 'key' found in Clint.state. Cannot persist the instance.\");\n }\n });\n }\n\n return this._refreshTask;\n }\n\n // utils -------------------------------------------------------------------\n\n /**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): fhirclient.ObservationMap\n {\n return byCode(observations, property);\n }\n\n /**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): (...codes: string[]) => any[]\n {\n return byCodes(observations, property);\n }\n\n /**\n * @category Utility\n */\n units = units;\n\n /**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n getPath(obj: Record, path = \"\"): any {\n return getPath(obj, path);\n }\n\n /**\n * Returns a copy of the client state. Accepts a dot-separated path argument\n * (same as for `getPath`) to allow for selecting specific properties.\n * Examples:\n * ```js\n * client.getState(); // -> the entire state object\n * client.getState(\"serverUrl\"); // -> the URL we are connected to\n * client.getState(\"tokenResponse.patient\"); // -> The selected patient ID (if any)\n * ```\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\n getState(path = \"\") {\n return getPath({ ...this.state }, path);\n }\n\n /**\n * Returns a promise that will be resolved with the fhir version as defined\n * in the CapabilityStatement.\n */\n getFhirVersion(): Promise {\n return fetchConformanceStatement(this.state.serverUrl)\n .then((metadata) => metadata.fhirVersion);\n }\n\n /**\n * Returns a promise that will be resolved with the numeric fhir version\n * - 2 for DSTU2\n * - 3 for STU3\n * - 4 for R4\n * - 0 if the version is not known\n */\n getFhirRelease(): Promise {\n return this.getFhirVersion().then(v => (fhirVersions as any)[v] ?? 0);\n }\n}\n","import { fhirclient } from \"./types\";\n\n\nexport default class HttpError extends Error\n{\n /**\n * The HTTP status code for this error\n */\n statusCode: number;\n\n /**\n * The HTTP status code for this error.\n * Note that this is the same as `status`, i.e. the code is available\n * through any of these.\n */\n status: number;\n\n /**\n * The HTTP status text corresponding to this error\n */\n statusText: string;\n\n /**\n * Reference to the HTTP Response object\n */\n response: Response;\n\n constructor(response: Response) {\n super(`${response.status} ${response.statusText}\\nURL: ${response.url}`);\n this.name = \"HttpError\";\n this.response = response;\n this.statusCode = response.status;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n\n async parse()\n {\n if (!this.response.bodyUsed) {\n try {\n const type = this.response.headers.get(\"content-type\") || \"text/plain\";\n if (type.match(/\\bjson\\b/i)) {\n let body = await this.response.json();\n if (body.error) {\n this.message += \"\\n\" + body.error;\n if (body.error_description) {\n this.message += \": \" + body.error_description;\n }\n }\n else {\n this.message += \"\\n\\n\" + JSON.stringify(body, null, 4);\n }\n }\n else if (type.match(/^text\\//i)) {\n let body = await this.response.text();\n if (body) {\n this.message += \"\\n\\n\" + body;\n }\n }\n } catch {\n // ignore\n }\n }\n\n return this;\n }\n\n toJSON() {\n return {\n name : this.name,\n statusCode: this.statusCode,\n status : this.status,\n statusText: this.statusText,\n message : this.message\n };\n }\n}\n","import { ready, authorize, init } from \"../smart\";\nimport Client from \"../Client\";\nimport BrowserStorage from \"../storage/BrowserStorage\";\nimport { fhirclient } from \"../types\";\nimport * as security from \"../security/browser\"\nimport { encodeURL, decode, fromUint8Array } from \"js-base64\"\n\n/**\n * Browser Adapter\n */\nexport default class BrowserAdapter implements fhirclient.Adapter\n{\n /**\n * Stores the URL instance associated with this adapter\n */\n private _url: URL | null = null;\n\n /**\n * Holds the Storage instance associated with this instance\n */\n private _storage: fhirclient.Storage | null = null;\n\n /**\n * Environment-specific options\n */\n options: fhirclient.BrowserFHIRSettings;\n\n security = security;\n\n /**\n * @param options Environment-specific options\n */\n constructor(options: fhirclient.BrowserFHIRSettings = {})\n {\n this.options = {\n // Replaces the browser's current URL\n // using window.history.replaceState API or by reloading.\n replaceBrowserHistory: true,\n\n // When set to true, this variable will fully utilize\n // HTML5 sessionStorage API.\n // This variable can be overridden to false by setting\n // FHIR.oauth2.settings.fullSessionStorageSupport = false.\n // When set to false, the sessionStorage will be keyed\n // by a state variable. This is to allow the embedded IE browser\n // instances instantiated on a single thread to continue to\n // function without having sessionStorage data shared\n // across the embedded IE instances.\n fullSessionStorageSupport: true,\n\n // Do we want to send cookies while making a request to the token\n // endpoint in order to obtain new access token using existing\n // refresh token. In rare cases the auth server might require the\n // client to send cookies along with those requests. In this case\n // developers will have to change this before initializing the app\n // like so:\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"include\";`\n // or\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"same-origin\";`\n // Can be one of:\n // \"include\" - always send cookies\n // \"same-origin\" - only send cookies if we are on the same domain (default)\n // \"omit\" - do not send cookies\n refreshTokenWithCredentials: \"same-origin\",\n\n ...options\n };\n }\n\n /**\n * Given a relative path, returns an absolute url using the instance base URL\n */\n relative(path: string): string\n {\n return new URL(path, this.getUrl().href).href;\n }\n\n /**\n * In browsers we need to be able to (dynamically) check if fhir.js is\n * included in the page. If it is, it should have created a \"fhir\" variable\n * in the global scope.\n */\n get fhir()\n {\n // @ts-ignore\n return typeof fhir === \"function\" ? fhir : null;\n }\n\n /**\n * Given the current environment, this method must return the current url\n * as URL instance\n */\n getUrl(): URL\n {\n if (!this._url) {\n this._url = new URL(location + \"\");\n }\n return this._url;\n }\n\n /**\n * Given the current environment, this method must redirect to the given\n * path\n */\n redirect(to: string): void\n {\n location.href = to;\n }\n\n /**\n * Returns a BrowserStorage object which is just a wrapper around\n * sessionStorage\n */\n getStorage(): BrowserStorage\n {\n if (!this._storage) {\n this._storage = new BrowserStorage();\n }\n return this._storage;\n }\n\n /**\n * Returns a reference to the AbortController constructor. In browsers,\n * AbortController will always be available as global (native or polyfilled)\n */\n getAbortController()\n {\n return AbortController;\n }\n\n /**\n * ASCII string to Base64\n */\n atob(str: string): string\n {\n return window.atob(str);\n }\n\n /**\n * Base64 to ASCII string\n */\n btoa(str: string): string\n {\n return window.btoa(str);\n }\n\n base64urlencode(input: string | Uint8Array)\n {\n if (typeof input == \"string\") {\n return encodeURL(input)\n }\n return fromUint8Array(input, true)\n }\n\n base64urldecode(input: string)\n {\n return decode(input)\n }\n\n /**\n * Creates and returns adapter-aware SMART api. Not that while the shape of\n * the returned object is well known, the arguments to this function are not.\n * Those who override this method are free to require any environment-specific\n * arguments. For example in node we will need a request, a response and\n * optionally a storage or storage factory function.\n */\n getSmartApi(): fhirclient.SMART\n {\n return {\n ready : (...args: any[]) => ready(this, ...args),\n authorize: options => authorize(this, options),\n init : options => init(this, options),\n client : (state: string | fhirclient.ClientState) => new Client(this, state),\n options : this.options,\n utils: {\n security\n }\n };\n }\n}\n","\n// Note: the following 2 imports appear as unused but they affect how tsc is\n// generating type definitions!\nimport { fhirclient } from \"../types\";\nimport Client from \"../Client\";\n\n// In Browsers we create an adapter, get the SMART api from it and build the\n// global FHIR object\nimport BrowserAdapter from \"../adapters/BrowserAdapter\";\n\nconst adapter = new BrowserAdapter();\nconst { ready, authorize, init, client, options, utils } = adapter.getSmartApi();\n\n// We have two kinds of browser builds - \"pure\" for new browsers and \"legacy\"\n// for old ones. In pure builds we assume that the browser supports everything\n// we need. In legacy mode, the library also acts as a polyfill. Babel will\n// automatically polyfill everything except \"fetch\", which we have to handle\n// manually.\n// @ts-ignore\nif (typeof FHIRCLIENT_PURE == \"undefined\") {\n const fetch = require(\"cross-fetch\");\n require(\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\");\n if (!window.fetch) {\n window.fetch = fetch.default;\n window.Headers = fetch.Headers;\n window.Request = fetch.Request;\n window.Response = fetch.Response;\n }\n}\n\n// $lab:coverage:off$\nconst FHIR = {\n AbortController: window.AbortController,\n client,\n utils,\n oauth2: {\n settings: options,\n ready,\n authorize,\n init\n }\n};\n\nexport = FHIR;\n// $lab:coverage:on$\n","/*\n * This file contains some shared functions. They are used by other modules, but\n * are defined here so that tests can import this library and test them.\n */\n\nimport HttpError from \"./HttpError\";\nimport { patientParams } from \"./settings\";\nimport { fhirclient } from \"./types\";\nconst debug = require(\"debug\");\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { fetch } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst _debug = debug(\"FHIR\");\nexport { _debug as debug };\n\n/**\n * The cache for the `getAndCache` function\n */\nconst cache: Record = {};\n\n/**\n * A namespace with functions for converting between different measurement units\n */\nexport const units = {\n cm({ code, value }: fhirclient.CodeValue) {\n ensureNumerical({ code, value });\n if (code == \"cm\" ) return value;\n if (code == \"m\" ) return value * 100;\n if (code == \"in\" ) return value * 2.54;\n if (code == \"[in_us]\") return value * 2.54;\n if (code == \"[in_i]\" ) return value * 2.54;\n if (code == \"ft\" ) return value * 30.48;\n if (code == \"[ft_us]\") return value * 30.48;\n throw new Error(\"Unrecognized length unit: \" + code);\n },\n kg({ code, value }: fhirclient.CodeValue){\n ensureNumerical({ code, value });\n if (code == \"kg\" ) return value;\n if (code == \"g\" ) return value / 1000;\n if (code.match(/lb/)) return value / 2.20462;\n if (code.match(/oz/)) return value / 35.274;\n throw new Error(\"Unrecognized weight unit: \" + code);\n },\n any(pq: fhirclient.CodeValue){\n ensureNumerical(pq);\n return pq.value;\n }\n};\n\n/**\n * Assertion function to guard arguments for `units` functions\n */\nfunction ensureNumerical({ value, code }: fhirclient.CodeValue) {\n if (typeof value !== \"number\") {\n throw new Error(\"Found a non-numerical unit: \" + value + \" \" + code);\n }\n}\n\n/**\n * Used in fetch Promise chains to reject if the \"ok\" property is not true\n */\nexport async function checkResponse(resp: Response): Promise {\n if (!resp.ok) {\n const error = new HttpError(resp);\n await error.parse();\n throw error;\n }\n return resp;\n}\n\n/**\n * Used in fetch Promise chains to return the JSON version of the response.\n * Note that `resp.json()` will throw on empty body so we use resp.text()\n * instead.\n */\nexport function responseToJSON(resp: Response): Promise {\n return resp.text().then(text => text.length ? JSON.parse(text) : \"\");\n}\n\nexport function loweCaseKeys | any[] | undefined>(obj: T): T {\n \n // Can be undefined to signal that this key should be removed\n if (!obj) {\n return obj as T\n }\n\n // Arrays are valid values in case of recursive calls\n if (Array.isArray(obj)) {\n return obj.map(v => v && typeof v === \"object\" ? loweCaseKeys(v) : v) as unknown as T;\n }\n\n // Plain object\n let out: Record = {};\n Object.keys(obj).forEach(key => {\n const lowerKey = key.toLowerCase()\n const v = (obj as Record)[key]\n out[lowerKey] = v && typeof v == \"object\" ? loweCaseKeys(v) : v;\n });\n return out as T;\n}\n\n/**\n * This is our built-in request function. It does a few things by default\n * (unless told otherwise):\n * - Makes CORS requests\n * - Sets accept header to \"application/json\"\n * - Handles errors\n * - If the response is json return the json object\n * - If the response is text return the result text\n * - Otherwise return the response object on which we call stuff like `.blob()`\n */\nexport function request(\n url: string | Request,\n requestOptions: fhirclient.FetchOptions = {}\n): Promise\n{\n const { includeResponse, ...options } = requestOptions;\n return fetch(url, {\n mode: \"cors\",\n ...options,\n headers: {\n accept: \"application/json\",\n ...loweCaseKeys(options.headers)\n }\n })\n .then(checkResponse)\n .then((res: Response) => {\n const type = res.headers.get(\"content-type\") + \"\";\n if (type.match(/\\bjson\\b/i)) {\n return responseToJSON(res).then(body => ({ res, body }));\n }\n if (type.match(/^text\\//i)) {\n return res.text().then(body => ({ res, body }));\n }\n return { res };\n })\n .then(({res, body}: {res:Response, body?:fhirclient.JsonObject|string}) => {\n\n // Some servers will reply after CREATE with json content type but with\n // empty body. In this case check if a location header is received and\n // fetch that to use it as the final result.\n if (!body && res.status == 201) {\n const location = res.headers.get(\"location\");\n if (location) {\n return request(location, { ...options, method: \"GET\", body: null, includeResponse });\n }\n }\n\n if (includeResponse) {\n return { body, response: res };\n }\n\n // For any non-text and non-json response return the Response object.\n // This to let users decide if they want to call text(), blob() or\n // something else on it\n if (body === undefined) {\n return res;\n }\n\n // Otherwise just return the parsed body (can also be \"\" or null)\n return body;\n });\n}\n\n/**\n * Makes a request using `fetch` and stores the result in internal memory cache.\n * The cache is cleared when the page is unloaded.\n * @param url The URL to request\n * @param requestOptions Request options\n * @param force If true, reload from source and update the cache, even if it has\n * already been cached.\n */\nexport function getAndCache(url: string, requestOptions?: RequestInit, force: boolean = process.env.NODE_ENV === \"test\"): Promise {\n if (force || !cache[url]) {\n cache[url] = request(url, requestOptions);\n return cache[url];\n }\n return Promise.resolve(cache[url]);\n}\n\n/**\n * Fetches the conformance statement from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n * @param [requestOptions] Any options passed to the fetch call\n */\nexport function fetchConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \"metadata\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(\n `Failed to fetch the conformance statement from \"${url}\". ${ex}`\n );\n });\n}\n\n\n/**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\nexport function getPath(obj: Record, path = \"\"): any {\n path = path.trim();\n if (!path) {\n return obj;\n }\n\n let segments = path.split(\".\");\n let result = obj;\n\n while (result && segments.length) {\n const key = segments.shift();\n if (!key && Array.isArray(result)) {\n return result.map(o => getPath(o, segments.join(\".\")));\n } else {\n result = result[key as string];\n }\n }\n\n return result;\n}\n\n/**\n * Like getPath, but if the node is found, its value is set to @value\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @param value The value to set\n * @param createEmpty If true, create missing intermediate objects or arrays\n * @returns The modified object\n */\nexport function setPath(obj: Record, path: string, value: any, createEmpty = false): Record {\n path.trim().split(\".\").reduce(\n (out, key, idx, arr) => {\n if (out && idx === arr.length - 1) {\n out[key] = value;\n }\n else {\n if (out && out[key] === undefined && createEmpty) {\n out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {};\n }\n return out ? out[key] : undefined;\n }\n },\n obj\n );\n return obj;\n}\n\n/**\n * If the argument is an array returns it as is. Otherwise puts it in an array\n * (`[arg]`) and returns the result\n * @param arg The element to test and possibly convert to array\n * @category Utility\n */\nexport function makeArray(arg: any): T[] {\n if (Array.isArray(arg)) {\n return arg;\n }\n return [arg];\n}\n\n/**\n * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl\n * is not provided, the result would be a rooted path (one that starts with `/`).\n * @param path The path to convert\n * @param baseUrl The base URL\n */\nexport function absolute(path: string, baseUrl?: string): string\n{\n if (path.match(/^http/)) return path;\n if (path.match(/^urn/)) return path;\n return String(baseUrl || \"\").replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n}\n\n/**\n * Generates random strings. By default this returns random 8 characters long\n * alphanumeric strings.\n * @param strLength The length of the output string. Defaults to 8.\n * @param charSet A string containing all the possible characters.\n * Defaults to all the upper and lower-case letters plus digits.\n * @category Utility\n */\nexport function randomString(\n strLength = 8,\n charSet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n): string\n{\n const result = [];\n const len = charSet.length;\n while (strLength--) {\n result.push(charSet.charAt(Math.floor(Math.random() * len)));\n }\n return result.join(\"\");\n}\n\n/**\n * Decodes a JWT token and returns it's body.\n * @param token The token to read\n * @param env An `Adapter` or any other object that has an `atob` method\n * @category Utility\n */\nexport function jwtDecode(token: string, env: fhirclient.Adapter): Record | null\n{\n const payload = token.split(\".\")[1];\n return payload ? JSON.parse(env.atob(payload)) : null;\n}\n\n/**\n * Add a supplied number of seconds to the supplied Date, returning\n * an integer number of seconds since the epoch\n * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds)\n * @param from Initial time (defaults to current time)\n */\nexport function getTimeInFuture(secondsAhead: number = 120, from?: Date | number): number {\n return Math.floor(+(from || new Date()) / 1000 + secondsAhead) \n}\n\n/**\n * Given a token response, computes and returns the expiresAt timestamp.\n * Note that this should only be used immediately after an access token is\n * received, otherwise the computed timestamp will be incorrect.\n * @param tokenResponse \n * @param env \n */\nexport function getAccessTokenExpiration(tokenResponse: fhirclient.TokenResponse, env: fhirclient.Adapter): number\n{\n const now = Math.floor(Date.now() / 1000);\n\n // Option 1 - using the expires_in property of the token response\n if (tokenResponse.expires_in) {\n return now + tokenResponse.expires_in;\n }\n\n // Option 2 - using the exp property of JWT tokens (must not assume JWT!)\n if (tokenResponse.access_token) {\n let tokenBody = jwtDecode(tokenResponse.access_token, env);\n if (tokenBody && tokenBody.exp) {\n return tokenBody.exp;\n }\n }\n\n // Option 3 - if none of the above worked set this to 5 minutes after now\n return now + 300;\n}\n\n/**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): fhirclient.ObservationMap\n{\n const ret: fhirclient.ObservationMap = {};\n\n function handleCodeableConcept(concept: fhirclient.FHIR.CodeableConcept, observation: fhirclient.FHIR.Observation) {\n if (concept && Array.isArray(concept.coding)) {\n concept.coding.forEach(({ code }) => {\n if (code) {\n ret[code] = ret[code] || [] as fhirclient.FHIR.Observation[];\n ret[code].push(observation);\n }\n });\n }\n }\n\n makeArray(observations).forEach(o => {\n if (o.resourceType === \"Observation\" && o[property]) {\n if (Array.isArray(o[property])) {\n o[property].forEach((concept: fhirclient.FHIR.CodeableConcept) => handleCodeableConcept(concept, o));\n } else {\n handleCodeableConcept(o[property], o);\n }\n }\n });\n\n return ret;\n}\n\n/**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): (...codes: string[]) => any[]\n{\n const bank = byCode(observations, property);\n return (...codes) => codes\n .filter(code => (code + \"\") in bank)\n .reduce(\n (prev, code) => prev.concat(bank[code + \"\"]),\n [] as fhirclient.FHIR.Observation[]\n );\n}\n\n/**\n * Given a conformance statement and a resource type, returns the name of the\n * URL parameter that can be used to scope the resource type by patient ID.\n */\nexport function getPatientParam(conformance: fhirclient.FHIR.CapabilityStatement, resourceType: string): string\n{\n // Find what resources are supported by this server\n const resources = getPath(conformance, \"rest.0.resource\") || [];\n\n // Check if this resource is supported\n const meta = resources.find((r: any) => r.type === resourceType);\n if (!meta) {\n throw new Error(`Resource \"${resourceType}\" is not supported by this FHIR server`);\n }\n\n // Check if any search parameters are available for this resource\n if (!Array.isArray(meta.searchParam)) {\n throw new Error(`No search parameters supported for \"${resourceType}\" on this FHIR server`);\n }\n\n // This is a rare case but could happen in generic workflows\n if (resourceType == \"Patient\" && meta.searchParam.find((x: any) => x.name == \"_id\")) {\n return \"_id\";\n }\n\n // Now find the first possible parameter name\n const out = patientParams.find(p => meta.searchParam.find((x: any) => x.name == p));\n\n // If there is no match\n if (!out) {\n throw new Error(\"I don't know what param to use for \" + resourceType);\n }\n\n return out;\n}\n\n/**\n * Resolves a reference to target window. It may also open new window or tab if\n * the `target = \"popup\"` or `target = \"_blank\"`.\n * @param target\n * @param width Only used when `target = \"popup\"`\n * @param height Only used when `target = \"popup\"`\n */\nexport async function getTargetWindow(target: fhirclient.WindowTarget, width: number = 800, height: number = 720): Promise\n{\n // The target can be a function that returns the target. This can be\n // used to open a layer pop-up with an iframe and then return a reference\n // to that iframe (or its name)\n if (typeof target == \"function\") {\n target = await target();\n }\n\n // The target can be a window reference\n if (target && typeof target == \"object\") {\n return target;\n }\n\n // At this point target must be a string\n if (typeof target != \"string\") {\n _debug(\"Invalid target type '%s'. Failing back to '_self'.\", typeof target);\n return self;\n }\n\n // Current window\n if (target == \"_self\") {\n return self;\n }\n\n // The parent frame\n if (target == \"_parent\") {\n return parent;\n }\n\n // The top window\n if (target == \"_top\") {\n return top || self;\n }\n\n // New tab or window\n if (target == \"_blank\") {\n let error, targetWindow: Window | null = null;\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\");\n if (!targetWindow) {\n throw new Error(\"Perhaps window.open was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Popup window\n if (target == \"popup\") {\n let error, targetWindow: Window | null = null;\n // if (!targetWindow || targetWindow.closed) {\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\", [\n \"height=\" + height,\n \"width=\" + width,\n \"menubar=0\",\n \"resizable=1\",\n \"status=0\",\n \"top=\" + (screen.height - height) / 2,\n \"left=\" + (screen.width - width) / 2\n ].join(\",\"));\n if (!targetWindow) {\n throw new Error(\"Perhaps the popup window was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Frame or window by name\n const winOrFrame: Window = frames[target as any];\n if (winOrFrame) {\n return winOrFrame;\n }\n\n _debug(\"Unknown target '%s'. Failing back to '_self'.\", target);\n return self;\n}\n\nexport function assert(condition: any, message: string): asserts condition {\n if (!(condition)) {\n throw new Error(message)\n }\n}\n\nexport function assertJsonPatch(patch: fhirclient.JsonPatch): asserts patch {\n assert(Array.isArray(patch), \"The JSON patch must be an array\")\n assert(patch.length > 0, \"The JSON patch array should not be empty\")\n patch.forEach((operation: fhirclient.JsonPatchOperation) => {\n assert(\n [\"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"].indexOf(operation.op) > -1,\n 'Each patch operation must have an \"op\" property which must be one of: \"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"'\n )\n assert(operation.path && typeof operation.path, `Invalid \"${operation.op}\" operation. Missing \"path\" property`)\n \n if (operation.op == \"add\" || operation.op == \"replace\" || operation.op == \"test\") {\n assert(\"value\" in operation, `Invalid \"${operation.op}\" operation. Missing \"value\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else if (operation.op == \"move\" || operation.op == \"copy\") {\n assert(typeof operation.from == \"string\", `Invalid \"${operation.op}\" operation. Requires a string \"from\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else {\n assert(Object.keys(operation).length == 2, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n })\n}\n","import { encodeURL, fromUint8Array } from \"js-base64\"\nimport { fhirclient } from \"../types\"\n\n\nconst crypto: Crypto = typeof globalThis === \"object\" && globalThis.crypto ?\n globalThis.crypto :\n require(\"isomorphic-webcrypto\").default;\n\nconst subtle = () => {\n if (!crypto.subtle) {\n if (!globalThis.isSecureContext) {\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available unless you run this app in secure context (using \" +\n \"HTTPS or running locally). See \" +\n \"https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n )\n }\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available in the current environment (no crypto.subtle)\"\n )\n }\n return crypto.subtle\n}\n\n\ninterface PkcePair {\n codeChallenge: string\n codeVerifier: string\n}\n\nconst ALGS = {\n ES384: {\n name: \"ECDSA\",\n namedCurve: \"P-384\"\n } as EcKeyGenParams,\n RS384: {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 4096,\n publicExponent: new Uint8Array([1, 0, 1]),\n hash: {\n name: 'SHA-384'\n }\n } as RsaHashedKeyGenParams\n};\n\nexport function randomBytes(count: number): Uint8Array {\n return crypto.getRandomValues(new Uint8Array(count));\n}\n\nexport async function digestSha256(payload: string): Promise {\n const prepared = new TextEncoder().encode(payload);\n const hash = await subtle().digest('SHA-256', prepared);\n return new Uint8Array(hash);\n}\n\nexport const generatePKCEChallenge = async (entropy = 96): Promise => {\n const inputBytes = randomBytes(entropy)\n const codeVerifier = fromUint8Array(inputBytes, true)\n const codeChallenge = fromUint8Array(await digestSha256(codeVerifier), true)\n return { codeChallenge, codeVerifier }\n}\n\nexport async function importJWK(jwk: fhirclient.JWK): Promise {\n // alg is optional in JWK but we need it here!\n if (!jwk.alg) {\n throw new Error('The \"alg\" property of the JWK must be set to \"ES384\" or \"RS384\"')\n }\n\n // Use of the \"key_ops\" member is OPTIONAL, unless the application requires its presence.\n // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3\n // \n // In our case the app will only import private keys so we can assume \"sign\"\n if (!Array.isArray(jwk.key_ops)) {\n jwk.key_ops = [\"sign\"]\n }\n\n // In this case the JWK has a \"key_ops\" array and \"sign\" is not listed\n if (!jwk.key_ops.includes(\"sign\")) {\n throw new Error('The \"key_ops\" property of the JWK does not contain \"sign\"')\n }\n\n try {\n return await subtle().importKey(\n \"jwk\",\n jwk,\n ALGS[jwk.alg],\n jwk.ext === true,\n jwk.key_ops// || ['sign']\n )\n } catch (e) {\n throw new Error(`The ${jwk.alg} is not supported by this browser: ${e}`)\n }\n}\n\nexport async function signCompactJws(alg: keyof typeof ALGS, privateKey: CryptoKey, header: any, payload: any): Promise {\n\n const jwtHeader = JSON.stringify({ ...header, alg });\n const jwtPayload = JSON.stringify(payload);\n const jwtAuthenticatedContent = `${encodeURL(jwtHeader)}.${encodeURL(jwtPayload)}`;\n\n const signature = await subtle().sign(\n { ...privateKey.algorithm, hash: 'SHA-384' },\n privateKey,\n new TextEncoder().encode(jwtAuthenticatedContent)\n );\n\n return `${jwtAuthenticatedContent}.${fromUint8Array(new Uint8Array(signature), true)}`\n}\n","/**\n * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4\n */\nexport const patientCompartment = [\n \"Account\",\n \"AdverseEvent\",\n \"AllergyIntolerance\",\n \"Appointment\",\n \"AppointmentResponse\",\n \"AuditEvent\",\n \"Basic\",\n \"BodySite\",\n \"BodyStructure\",\n \"CarePlan\",\n \"CareTeam\",\n \"ChargeItem\",\n \"Claim\",\n \"ClaimResponse\",\n \"ClinicalImpression\",\n \"Communication\",\n \"CommunicationRequest\",\n \"Composition\",\n \"Condition\",\n \"Consent\",\n \"Coverage\",\n \"CoverageEligibilityRequest\",\n \"CoverageEligibilityResponse\",\n \"DetectedIssue\",\n \"DeviceRequest\",\n \"DeviceUseRequest\",\n \"DeviceUseStatement\",\n \"DiagnosticOrder\",\n \"DiagnosticReport\",\n \"DocumentManifest\",\n \"DocumentReference\",\n \"EligibilityRequest\",\n \"Encounter\",\n \"EnrollmentRequest\",\n \"EpisodeOfCare\",\n \"ExplanationOfBenefit\",\n \"FamilyMemberHistory\",\n \"Flag\",\n \"Goal\",\n \"Group\",\n \"ImagingManifest\",\n \"ImagingObjectSelection\",\n \"ImagingStudy\",\n \"Immunization\",\n \"ImmunizationEvaluation\",\n \"ImmunizationRecommendation\",\n \"Invoice\",\n \"List\",\n \"MeasureReport\",\n \"Media\",\n \"MedicationAdministration\",\n \"MedicationDispense\",\n \"MedicationOrder\",\n \"MedicationRequest\",\n \"MedicationStatement\",\n \"MolecularSequence\",\n \"NutritionOrder\",\n \"Observation\",\n \"Order\",\n \"Patient\",\n \"Person\",\n \"Procedure\",\n \"ProcedureRequest\",\n \"Provenance\",\n \"QuestionnaireResponse\",\n \"ReferralRequest\",\n \"RelatedPerson\",\n \"RequestGroup\",\n \"ResearchSubject\",\n \"RiskAssessment\",\n \"Schedule\",\n \"ServiceRequest\",\n \"Specimen\",\n \"SupplyDelivery\",\n \"SupplyRequest\",\n \"VisionPrescription\"\n];\n\n/**\n * Map of FHIR releases and their abstract version as number\n */\nexport const fhirVersions = {\n \"0.4.0\": 2,\n \"0.5.0\": 2,\n \"1.0.0\": 2,\n \"1.0.1\": 2,\n \"1.0.2\": 2,\n \"1.1.0\": 3,\n \"1.4.0\": 3,\n \"1.6.0\": 3,\n \"1.8.0\": 3,\n \"3.0.0\": 3,\n \"3.0.1\": 3,\n \"3.3.0\": 4,\n \"3.5.0\": 4,\n \"4.0.0\": 4,\n \"4.0.1\": 4\n};\n\n/**\n * Combined (FHIR R2-R4) list of search parameters that can be used to scope\n * a request by patient ID.\n */\nexport const patientParams = [\n \"patient\",\n \"subject\",\n \"requester\",\n \"member\",\n \"actor\",\n \"beneficiary\"\n];\n\n/**\n * The name of the sessionStorage entry that contains the current key\n */\nexport const SMART_KEY = \"SMART_KEY\";\n","/* global window */\nimport {\n debug as _debug,\n request,\n getPath,\n getTimeInFuture,\n randomString,\n getAndCache,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n getTargetWindow,\n assert\n} from \"./lib\";\nimport Client from \"./Client\";\nimport { SMART_KEY } from \"./settings\";\nimport { fhirclient } from \"./types\";\n\nconst debug = _debug.extend(\"oauth2\");\n\nexport { SMART_KEY as KEY };\n\nfunction isBrowser() {\n return typeof window === \"object\";\n}\n\n/**\n * Fetches the well-known json file from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n */\nexport function fetchWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \".well-known/smart-configuration\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(`Failed to fetch the well-known json \"${url}\". ${ex.message}`);\n });\n}\n\n/**\n * Fetch a \"WellKnownJson\" and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchWellKnownJson(baseUrl, requestOptions).then(meta => {\n if (!meta.authorization_endpoint || !meta.token_endpoint) {\n throw new Error(\"Invalid wellKnownJson\");\n }\n return {\n registrationUri : meta.registration_endpoint || \"\",\n authorizeUri : meta.authorization_endpoint,\n tokenUri : meta.token_endpoint,\n codeChallengeMethods: meta.code_challenge_methods_supported || []\n };\n });\n}\n\n/**\n * Fetch a `CapabilityStatement` and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchConformanceStatement(baseUrl, requestOptions).then(meta => {\n const nsUri = \"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris\";\n const extensions = ((getPath(meta || {}, \"rest.0.security.extension\") || []) as Array>)\n .filter(e => e.url === nsUri)\n .map(o => o.extension)[0];\n\n const out:fhirclient.OAuthSecurityExtensions = {\n registrationUri : \"\",\n authorizeUri : \"\",\n tokenUri : \"\",\n codeChallengeMethods: [],\n };\n\n if (extensions) {\n extensions.forEach(ext => {\n if (ext.url === \"register\") {\n out.registrationUri = ext.valueUri;\n }\n if (ext.url === \"authorize\") {\n out.authorizeUri = ext.valueUri;\n }\n if (ext.url === \"token\") {\n out.tokenUri = ext.valueUri;\n }\n });\n }\n\n return out;\n });\n}\n\n\n/**\n * Given a FHIR server, returns an object with it's Oauth security endpoints\n * that we are interested in. This will try to find the info in both the\n * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever\n * Arrives first will be used and the other request will be aborted.\n * @param [baseUrl = \"/\"] Fhir server base URL\n */\nexport function getSecurityExtensions(baseUrl = \"/\"): Promise\n{\n return getSecurityExtensionsFromWellKnownJson(baseUrl)\n .catch(() => getSecurityExtensionsFromConformanceStatement(baseUrl));\n}\n\n/**\n * Starts the SMART Launch Sequence.\n * > **IMPORTANT**:\n * `authorize()` will end up redirecting you to the authorization server.\n * This means that you should not add anything to the returned promise chain.\n * Any code written directly after the authorize() call might not be executed\n * due to that redirect!\n * @param env\n * @param [params]\n */\nexport async function authorize(\n env: fhirclient.Adapter,\n params: fhirclient.AuthorizeParams | fhirclient.AuthorizeParams[] = {}\n): Promise\n{\n const url = env.getUrl();\n\n // Multiple config for EHR launches ---------------------------------------\n if (Array.isArray(params)) {\n const urlISS = url.searchParams.get(\"iss\") || url.searchParams.get(\"fhirServiceUrl\");\n if (!urlISS) {\n throw new Error(\n 'Passing in an \"iss\" url parameter is required if authorize ' +\n 'uses multiple configurations'\n );\n }\n // pick the right config\n const cfg = params.find(x => {\n if (x.issMatch) {\n if (typeof x.issMatch === \"function\") {\n return !!x.issMatch(urlISS);\n }\n if (typeof x.issMatch === \"string\") {\n return x.issMatch === urlISS;\n }\n if (x.issMatch instanceof RegExp) {\n return x.issMatch.test(urlISS);\n }\n }\n return false;\n });\n assert(cfg, `No configuration found matching the current \"iss\" parameter \"${urlISS}\"`);\n return await authorize(env, cfg);\n }\n // ------------------------------------------------------------------------\n\n // Obtain input\n const {\n clientSecret,\n fakeTokenResponse,\n encounterId,\n target,\n width,\n height,\n pkceMode,\n clientPublicKeySetUrl,\n // Two deprecated values to use as fall-back values later\n redirect_uri,\n client_id,\n } = params;\n \n let {\n iss,\n launch,\n patientId,\n fhirServiceUrl,\n redirectUri,\n noRedirect,\n scope = \"\",\n clientId,\n completeInTarget,\n clientPrivateJwk\n } = params;\n\n const storage = env.getStorage();\n\n // For these, a url param takes precedence over inline option\n iss = url.searchParams.get(\"iss\") || iss;\n fhirServiceUrl = url.searchParams.get(\"fhirServiceUrl\") || fhirServiceUrl;\n launch = url.searchParams.get(\"launch\") || launch;\n patientId = url.searchParams.get(\"patientId\") || patientId;\n clientId = url.searchParams.get(\"clientId\") || clientId;\n\n // If there's still no clientId or redirectUri, check deprecated params \n if (!clientId) {\n clientId = client_id;\n }\n if (!redirectUri) {\n redirectUri = redirect_uri;\n }\n\n if (!redirectUri) {\n redirectUri = env.relative(\".\");\n } else if (!redirectUri.match(/^https?\\:\\/\\//)) {\n redirectUri = env.relative(redirectUri);\n }\n\n const serverUrl = String(iss || fhirServiceUrl || \"\");\n\n // Validate input\n if (!serverUrl) {\n throw new Error(\n \"No server url found. It must be specified as `iss` or as \" +\n \"`fhirServiceUrl` parameter\"\n );\n }\n\n if (iss) {\n debug(\"Making %s launch...\", launch ? \"EHR\" : \"standalone\");\n }\n\n // append launch scope if needed\n if (launch && !scope.match(/launch/)) {\n scope += \" launch\";\n }\n\n if (isBrowser()) {\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) {\n \n // completeInTarget will default to true if authorize is called from\n // within an iframe. This is to avoid issues when the entire app\n // happens to be rendered in an iframe (including in some EHRs),\n // even though that was not how the app developer's intention.\n completeInTarget = inFrame;\n\n // In this case we can't always make the best decision so ask devs\n // to be explicit in their configuration.\n console.warn(\n 'Your app is being authorized from within an iframe or popup ' +\n 'window. Please be explicit and provide a \"completeInTarget\" ' +\n 'option. Use \"true\" to complete the authorization in the ' +\n 'same window, or \"false\" to try to complete it in the parent ' +\n 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html'\n );\n }\n }\n\n // If `authorize` is called, make sure we clear any previous state (in case\n // this is a re-authorize)\n const oldKey = await storage.get(SMART_KEY);\n await storage.unset(oldKey);\n\n // create initial state\n const stateKey = randomString(16);\n const state: fhirclient.ClientState = {\n clientId,\n scope,\n redirectUri,\n serverUrl,\n clientSecret,\n clientPrivateJwk,\n tokenResponse: {},\n key: stateKey,\n completeInTarget,\n clientPublicKeySetUrl\n };\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n if (fullSessionStorageSupport) {\n await storage.set(SMART_KEY, stateKey);\n }\n\n // fakeTokenResponse to override stuff (useful in development)\n if (fakeTokenResponse) {\n Object.assign(state.tokenResponse!, fakeTokenResponse);\n }\n\n // Fixed patientId (useful in development)\n if (patientId) {\n Object.assign(state.tokenResponse!, { patient: patientId });\n }\n\n // Fixed encounterId (useful in development)\n if (encounterId) {\n Object.assign(state.tokenResponse!, { encounter: encounterId });\n }\n\n let redirectUrl = redirectUri + \"?state=\" + encodeURIComponent(stateKey);\n\n // bypass oauth if fhirServiceUrl is used (but iss takes precedence)\n if (fhirServiceUrl && !iss) {\n debug(\"Making fake launch...\");\n await storage.set(stateKey, state);\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // Get oauth endpoints and add them to the state\n const extensions = await getSecurityExtensions(serverUrl);\n Object.assign(state, extensions);\n await storage.set(stateKey, state);\n\n // If this happens to be an open server and there is no authorizeUri\n if (!state.authorizeUri) {\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // build the redirect uri\n const redirectParams = [\n \"response_type=code\",\n \"client_id=\" + encodeURIComponent(clientId || \"\"),\n \"scope=\" + encodeURIComponent(scope),\n \"redirect_uri=\" + encodeURIComponent(redirectUri),\n \"aud=\" + encodeURIComponent(serverUrl),\n \"state=\" + encodeURIComponent(stateKey)\n ];\n\n // also pass this in case of EHR launch\n if (launch) {\n redirectParams.push(\"launch=\" + encodeURIComponent(launch));\n }\n\n if (shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) {\n let codes = await env.security.generatePKCEChallenge()\n Object.assign(state, codes);\n await storage.set(stateKey, state);\n redirectParams.push(\"code_challenge=\" + state.codeChallenge);// note that the challenge is ALREADY encoded properly\n redirectParams.push(\"code_challenge_method=S256\");\n }\n \n redirectUrl = state.authorizeUri + \"?\" + redirectParams.join(\"&\");\n\n if (noRedirect) {\n return redirectUrl;\n }\n\n if (target && isBrowser()) {\n let win: Window;\n\n win = await getTargetWindow(target, width, height);\n\n if (win !== self) {\n try {\n // Also remove any old state from the target window and then\n // transfer the current state there\n win.sessionStorage.removeItem(oldKey);\n win.sessionStorage.setItem(stateKey, JSON.stringify(state));\n } catch (ex) {\n _debug(`Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n win = self;\n }\n }\n\n if (win !== self) {\n try {\n win.location.href = redirectUrl;\n self.addEventListener(\"message\", onMessage);\n } catch (ex) {\n _debug(`Failed to modify window.location. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n self.location.href = redirectUrl;\n }\n } else {\n self.location.href = redirectUrl;\n }\n\n return;\n }\n else {\n return await env.redirect(redirectUrl);\n }\n}\n\nfunction shouldIncludeChallenge(S256supported: boolean, pkceMode?: string) {\n if (pkceMode === \"disabled\") {\n return false;\n }\n if (pkceMode === \"unsafeV1\") {\n return true;\n }\n if (pkceMode === \"required\") {\n if (!S256supported) {\n throw new Error(\"Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration.\");\n }\n return true;\n }\n return S256supported;\n}\n\n/**\n * Checks if called within a frame. Only works in browsers!\n * If the current window has a `parent` or `top` properties that refer to\n * another window, returns true. If trying to access `top` or `parent` throws an\n * error, returns true. Otherwise returns `false`.\n */\nexport function isInFrame() {\n try {\n return self !== top && parent !== self;\n } catch (e) {\n return true;\n }\n}\n\n/**\n * Checks if called within another window (popup or tab). Only works in browsers!\n * To consider itself called in a new window, this function verifies that:\n * 1. `self === top` (not in frame)\n * 2. `!!opener && opener !== self` The window has an opener\n * 3. `!!window.name` The window has a `name` set\n */\nexport function isInPopUp() {\n try {\n return self === top &&\n !!opener &&\n opener !== self &&\n !!window.name;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Another window can send a \"completeAuth\" message to this one, making it to\n * navigate to e.data.url\n * @param e The message event\n */\nexport function onMessage(e: MessageEvent) {\n if (e.data.type == \"completeAuth\" && e.origin === new URL(self.location.href).origin) {\n window.removeEventListener(\"message\", onMessage);\n window.location.href = e.data.url;\n }\n}\n\n/**\n * The ready function should only be called on the page that represents\n * the redirectUri. We typically land there after a redirect from the\n * authorization server, but this code will also be executed upon subsequent\n * navigation or page refresh.\n */\nexport async function ready(env: fhirclient.Adapter, options: fhirclient.ReadyOptions = {}): Promise\n{\n const url = env.getUrl();\n const Storage = env.getStorage();\n const params = url.searchParams;\n\n let key = params.get(\"state\");\n const code = params.get(\"code\");\n const authError = params.get(\"error\");\n const authErrorDescription = params.get(\"error_description\");\n\n if (!key) {\n key = await Storage.get(SMART_KEY);\n }\n\n // Start by checking the url for `error` and `error_description` parameters.\n // This happens when the auth server rejects our authorization attempt. In\n // this case it has no other way to tell us what the error was, other than\n // appending these parameters to the redirect url.\n // From client's point of view, this is not very reliable (because we can't\n // know how we have landed on this page - was it a redirect or was it loaded\n // manually). However, if `ready()` is being called, we can assume\n // that the url comes from the auth server (otherwise the app won't work\n // anyway).\n if (authError || authErrorDescription) {\n throw new Error([\n authError,\n authErrorDescription\n ].filter(Boolean).join(\": \"));\n }\n\n debug(\"key: %s, code: %s\", key, code);\n\n // key might be coming from the page url so it might be empty or missing\n assert(key, \"No 'state' parameter found. Please (re)launch the app.\");\n\n // Check if we have a previous state\n let state = (await Storage.get(key)) as fhirclient.ClientState;\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n // If we are in a popup window or an iframe and the authorization is\n // complete, send the location back to our opener and exit.\n if (isBrowser() && state && !state.completeInTarget) {\n\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n // we are about to return to the opener/parent where completeAuth will\n // be called again. In rare cases the opener or parent might also be\n // a frame or popup. Then inFrame or inPopUp will be true but we still\n // have to stop going up the chain. To guard against that weird form of\n // recursion we pass one additional parameter to the url which we later\n // remove.\n if ((inFrame || inPopUp) && !url.searchParams.get(\"complete\")) {\n url.searchParams.set(\"complete\", \"1\");\n const { href, origin } = url;\n if (inFrame) {\n parent.postMessage({ type: \"completeAuth\", url: href }, origin);\n }\n if (inPopUp) {\n opener.postMessage({ type: \"completeAuth\", url: href }, origin);\n window.close();\n }\n\n return new Promise(() => { /* leave it pending!!! */ });\n }\n }\n\n url.searchParams.delete(\"complete\");\n\n // Do we have to remove the `code` and `state` params from the URL?\n const hasState = params.has(\"state\");\n\n if (isBrowser() && getPath(env, \"options.replaceBrowserHistory\") && (code || hasState)) {\n // `code` is the flag that tell us to request an access token.\n // We have to remove it, otherwise the page will authorize on\n // every load!\n if (code) {\n params.delete(\"code\");\n debug(\"Removed code parameter from the url.\");\n }\n\n // If we have `fullSessionStorageSupport` it means we no longer\n // need the `state` key. It will be stored to a well know\n // location - sessionStorage[SMART_KEY]. However, no\n // fullSessionStorageSupport means that this \"well know location\"\n // might be shared between windows and tabs. In this case we\n // MUST keep the `state` url parameter.\n if (hasState && fullSessionStorageSupport) {\n params.delete(\"state\");\n debug(\"Removed state parameter from the url.\");\n }\n\n // If the browser does not support the replaceState method for the\n // History Web API, the \"code\" parameter cannot be removed. As a\n // consequence, the page will (re)authorize on every load. The\n // workaround is to reload the page to new location without those\n // parameters. If that is not acceptable replaceBrowserHistory\n // should be set to false.\n if (window.history.replaceState) {\n window.history.replaceState({}, \"\", url.href);\n }\n }\n\n // If the state does not exist, it means the page has been loaded directly.\n assert(state, \"No state found! Please (re)launch the app.\");\n\n // Assume the client has already completed a token exchange when\n // there is no code (but we have a state) or access token is found in state\n const authorized = !code || state.tokenResponse?.access_token;\n\n // If we are authorized already, then this is just a reload.\n // Otherwise, we have to complete the code flow\n if (!authorized && state.tokenUri) {\n\n assert(code, \"'code' url parameter is required\");\n\n debug(\"Preparing to exchange the code for access token...\");\n const requestOptions = await buildTokenRequest(env, {\n code,\n state,\n clientPublicKeySetUrl: options.clientPublicKeySetUrl,\n privateKey: options.privateKey || state.clientPrivateJwk\n });\n debug(\"Token request options: %O\", requestOptions);\n\n // The EHR authorization server SHALL return a JSON structure that\n // includes an access token or a message indicating that the\n // authorization request has been denied.\n const tokenResponse = await request(state.tokenUri, requestOptions);\n debug(\"Token response: %O\", tokenResponse);\n assert(tokenResponse.access_token, \"Failed to obtain access token.\");\n\n // Now we need to determine when is this authorization going to expire\n state.expiresAt = getAccessTokenExpiration(tokenResponse, env);\n\n // save the tokenResponse so that we don't have to re-authorize on\n // every page reload\n state = { ...state, tokenResponse };\n await Storage.set(key, state);\n debug(\"Authorization successful!\");\n }\n else {\n debug(state.tokenResponse?.access_token ?\n \"Already authorized\" :\n \"No authorization needed\"\n );\n }\n\n if (fullSessionStorageSupport) {\n await Storage.set(SMART_KEY, key);\n }\n\n const client = new Client(env, state);\n debug(\"Created client instance: %O\", client);\n return client;\n}\n\n/**\n * Builds the token request options. Does not make the request, just\n * creates it's configuration and returns it in a Promise.\n */\nexport async function buildTokenRequest(\n env: fhirclient.Adapter,\n {\n code,\n state,\n clientPublicKeySetUrl,\n privateKey\n }: {\n /**\n * The `code` URL parameter received from the auth redirect\n */\n code: string,\n \n /**\n * The app state\n */\n state: fhirclient.ClientState\n\n /**\n * If provided overrides the `clientPublicKeySetUrl` from the authorize\n * options (if any). Used for `jku` token header in case of asymmetric auth.\n */\n clientPublicKeySetUrl?: string\n\n /**\n * Can be a private JWK, or an object with alg, kid and key properties,\n * where `key` is an un-extractable private CryptoKey object.\n */\n privateKey?: fhirclient.JWK | {\n key: CryptoKey\n alg: \"RS384\" | \"ES384\"\n kid: string\n }\n }\n): Promise\n{\n const { redirectUri, clientSecret, tokenUri, clientId, codeVerifier } = state;\n\n assert(redirectUri, \"Missing state.redirectUri\");\n assert(tokenUri, \"Missing state.tokenUri\");\n assert(clientId, \"Missing state.clientId\");\n\n const requestOptions: Record = {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: `code=${code}&grant_type=authorization_code&redirect_uri=${\n encodeURIComponent(redirectUri)}`\n };\n\n // For public apps, authentication is not possible (and thus not required),\n // since a client with no secret cannot prove its identity when it issues a\n // call. (The end-to-end system can still be secure because the client comes\n // from a known, https protected endpoint specified and enforced by the\n // redirect uri.) For confidential apps, an Authorization header using HTTP\n // Basic authentication is required, where the username is the app’s\n // client_id and the password is the app’s client_secret (see example).\n if (clientSecret) {\n requestOptions.headers.authorization = \"Basic \" + env.btoa(\n clientId + \":\" + clientSecret\n );\n debug(\n \"Using state.clientSecret to construct the authorization header: %s\",\n requestOptions.headers.authorization\n );\n }\n \n // Asymmetric auth\n else if (privateKey) {\n\n const pk = \"key\" in privateKey ?\n privateKey.key as CryptoKey:\n await env.security.importJWK(privateKey as fhirclient.JWK)\n\n const jwtHeaders = {\n typ: \"JWT\",\n kid: privateKey.kid,\n jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl\n };\n\n const jwtClaims = {\n iss: clientId,\n sub: clientId,\n aud: tokenUri,\n jti: env.base64urlencode(env.security.randomBytes(32)),\n exp: getTimeInFuture(120) // two minutes in the future\n };\n \n const clientAssertion = await env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims);\n requestOptions.body += `&client_assertion_type=${encodeURIComponent(\"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\")}`;\n requestOptions.body += `&client_assertion=${encodeURIComponent(clientAssertion)}`;\n debug(\"Using state.clientPrivateJwk to add a client_assertion to the POST body\")\n }\n \n // Public client\n else {\n debug(\"Public client detected; adding state.clientId to the POST body\");\n requestOptions.body += `&client_id=${encodeURIComponent(clientId)}`;\n }\n\n if (codeVerifier) {\n debug(\"Found state.codeVerifier, adding to the POST body\")\n // Note that the codeVerifier is ALREADY encoded properly \n requestOptions.body += \"&code_verifier=\" + codeVerifier;\n }\n \n return requestOptions as RequestInit;\n}\n\n/**\n * This function can be used when you want to handle everything in one page\n * (no launch endpoint needed). You can think of it as if it does:\n * ```js\n * authorize(options).then(ready)\n * ```\n *\n * **Be careful with init()!** There are some details you need to be aware of:\n *\n * 1. It will only work if your launch_uri is the same as your redirect_uri.\n * While this should be valid, we can’t promise that every EHR will allow you\n * to register client with such settings.\n * 2. Internally, `init()` will be called twice. First it will redirect to the\n * EHR, then the EHR will redirect back to the page where init() will be\n * called again to complete the authorization. This is generally fine,\n * because the returned promise will only be resolved once, after the second\n * execution, but please also consider the following:\n * - You should wrap all your app’s code in a function that is only executed\n * after `init()` resolves!\n * - Since the page will be loaded twice, you must be careful if your code\n * has global side effects that can persist between page reloads\n * (for example writing to localStorage).\n * 3. For standalone launch, only use init in combination with offline_access\n * scope. Once the access_token expires, if you don’t have a refresh_token\n * there is no way to re-authorize properly. We detect that and delete the\n * expired access token, but it still means that the user will have to\n * refresh the page twice to re-authorize.\n * @param env The adapter\n * @param authorizeOptions The authorize options\n */\nexport async function init(\n env: fhirclient.Adapter,\n authorizeOptions: fhirclient.AuthorizeParams,\n readyOptions?: fhirclient.ReadyOptions\n): Promise\n{\n const url = env.getUrl();\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n // if `code` and `state` params are present we need to complete the auth flow\n if (code && state) {\n return ready(env, readyOptions);\n }\n\n // Check for existing client state. If state is found, it means a client\n // instance have already been created in this session and we should try to\n // \"revive\" it.\n const storage = env.getStorage();\n const key = state || await storage.get(SMART_KEY);\n const cached = await storage.get(key);\n if (cached) {\n return new Client(env, cached);\n }\n\n // Otherwise try to launch\n return authorize(env, authorizeOptions).then(() => {\n // `init` promises a Client but that cannot happen in this case. The\n // browser will be redirected (unload the page and be redirected back\n // to it later and the same init function will be called again). On\n // success, authorize will resolve with the redirect url but we don't\n // want to return that from this promise chain because it is not a\n // Client instance. At the same time, if authorize fails, we do want to\n // pass the error to those waiting for a client instance.\n return new Promise(() => { /* leave it pending!!! */ });\n });\n}\n","export default class Storage\n{\n /**\n * Gets the value at `key`. Returns a promise that will be resolved\n * with that value (or undefined for missing keys).\n */\n async get(key: string): Promise\n {\n const value = sessionStorage[key];\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /**\n * Sets the `value` on `key` and returns a promise that will be resolved\n * with the value that was set.\n */\n async set(key: string, value: any): Promise\n {\n sessionStorage[key] = JSON.stringify(value);\n return value;\n }\n\n /**\n * Deletes the value at `key`. Returns a promise that will be resolved\n * with true if the key was deleted or with false if it was not (eg. if\n * did not exist).\n */\n async unset(key: string): Promise\n {\n if (key in sessionStorage) {\n delete sessionStorage[key];\n return true;\n }\n return false;\n }\n\n}\n","// This map contains reusable debug messages (only those used in multiple places)\nexport default {\n expired : \"Session expired! Please re-launch the app\",\n noScopeForId : \"Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.\",\n noIfNoAuth : \"You are trying to get %s but the app is not authorized yet.\",\n noFreeContext: \"Please don't use open fhir servers if you need to access launch context items like the %S.\"\n};\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.7';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = typeof btoa === 'function' ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = typeof atob === 'function' ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar fround = require('../internals/math-fround');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = globalThis[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = globalThis[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = globalThis.Array;\nvar RangeError = globalThis.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(fround(number), 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var pack = conversion(+value);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n type: ARRAY_BUFFER,\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) {\n this.byteLength = byteLength;\n this.detached = false;\n }\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferState = getInternalArrayBufferState(buffer);\n var bufferLength = bufferState.byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);\n setInternalState(this, {\n type: DATA_VIEW,\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset,\n bytes: bufferState.bytes\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n addGetter($DataView, 'buffer', getInternalDataViewState);\n addGetter($DataView, 'byteLength', getInternalDataViewState);\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new, sonar/inconsistent-function-call -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new, sonar/inconsistent-function-call -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer);\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n\n copyConstructorProperties($ArrayBuffer, NativeArrayBuffer);\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n result = IS_CONSTRUCTOR ? new this() : [];\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return -1;\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n aCallable(callbackfn);\n if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw new $TypeError(REDUCE_EMPTY);\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar arraySlice = require('../internals/array-slice');\n\nvar floor = Math.floor;\n\nvar sort = function (array, comparefn) {\n var length = array.length;\n\n if (length < 8) {\n // insertion sort\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n }\n } else {\n // merge sort\n var middle = floor(length / 2);\n var left = sort(arraySlice(array, 0, middle), comparefn);\n var right = sort(arraySlice(array, middle), comparefn);\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n }\n }\n\n return array;\n};\n\nmodule.exports = sort;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n try {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","'use strict';\nvar UA = require('../internals/environment-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegExp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) !== 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () {\n execCalled = true;\n return null;\n };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n }\n return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n var list = [];\n var i = 0;\n for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nmodule.exports = function (a, b) {\n try {\n // eslint-disable-next-line no-console -- safe\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number !== number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number !== number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent += eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[index - 1] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa += pow(2, mantissaLength);\n exponent -= eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n }\n\n return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\n\nvar EPSILON = 2.220446049250313e-16; // Number.EPSILON\nvar INVERSE_EPSILON = 1 / EPSILON;\n\nvar roundTiesToEven = function (n) {\n return n + INVERSE_EPSILON - INVERSE_EPSILON;\n};\n\nmodule.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) {\n var n = +x;\n var absolute = abs(n);\n var s = sign(n);\n if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON;\n var a = (1 + FLOAT_EPSILON / EPSILON) * absolute;\n var result = a - (a - absolute);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity;\n return s * result;\n};\n","'use strict';\nvar floatRound = require('../internals/math-float-round');\n\nvar FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23;\nvar FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104\nvar FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126;\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE);\n};\n","'use strict';\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n var n = +x;\n // eslint-disable-next-line no-self-compare -- NaN check\n return n === 0 || n !== n ? n : n < 0 ? -1 : 1;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n var queue = new Queue();\n\n var flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (fn = queue.get()) try {\n fn();\n } catch (error) {\n if (queue.head) notify();\n throw error;\n }\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // `webpack` dev server bug on IE global methods - use bind(fn, global)\n macrotask = bind(macrotask, globalThis);\n notify = function () {\n macrotask(flush);\n };\n }\n\n microtask = function (fn) {\n if (!queue.head) notify();\n queue.add(fn);\n };\n}\n\nmodule.exports = microtask;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw new $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol('assign detection');\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","'use strict';\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n var tail = this.tail;\n if (tail) tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n var next = this.head = entry.next;\n if (next === null) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') !== null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n if (!DESCRIPTORS) return globalThis[name];\n var descriptor = getOwnPropertyDescriptor(globalThis, name);\n return descriptor && descriptor.value;\n};\n","'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineBuiltInAccessor(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.38.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw new $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw new $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue === n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = globalThis.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n globalThis.addEventListener &&\n isCallable(globalThis.postMessage) &&\n !globalThis.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n globalThis.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw new $RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar round = Math.round;\n\nmodule.exports = function (it) {\n var value = round(it);\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toUint8Clamped = require('../internals/to-uint8-clamped');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = globalThis.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar addGetter = function (it, key) {\n defineBuiltInAccessor(it, key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = globalThis[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw new RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw new RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return arrayFromConstructorAndList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return arrayFromConstructorAndList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\n/* eslint-disable no-new, sonar/inconsistent-function-call -- required for testing */\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar Int8Array = globalThis.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","'use strict';\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'https://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'https://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('https://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('https://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('https://x', undefined).host !== 'x';\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = globalThis[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n switch (state.kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n join: function join(separator) {\n return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return nativeSlice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n setArrayLength(O, len - actualDeleteCount + insertCount);\n return A;\n }\n});\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineBuiltInAccessor(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: globalThis.globalThis !== globalThis }, {\n globalThis: globalThis\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = globalThis[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = globalThis.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n // fast equal of /^0b[01]+$/i\n case 66:\n case 98:\n radix = 2;\n maxCode = 49;\n break;\n // fast equal of /^0o[0-7]+$/i\n case 79:\n case 111:\n radix = 8;\n maxCode = 55;\n break;\n default:\n return +it;\n }\n digits = stringSlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n // includes check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n","'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state === FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(new TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n globalThis.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, globalThis, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, globalThis, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: null\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state === PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n var capabilityReject = capability.reject;\n capabilityReject(r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target === newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = globalThis.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = globalThis.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n // eslint-disable-next-line sonar/inconsistent-function-call -- required for testing\n return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = create(null);\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr += charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n result += chr;\n // ignore non-capturing groups\n if (stringSlice(string, index + 1, index + 3) === '?:') {\n continue;\n }\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(globalThis, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');\n elements[i] = code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n } return join(elements, '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n var fullUnicode;\n if (global) {\n fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n\n var results = [];\n var result;\n while (true) {\n result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n var replacement;\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length !== 4 ||\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n } : nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (!BUGGY) {\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n }\n\n var C = speciesConstructor(rx, RegExp);\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n var $this = this === undefined ? globalThis : this;\n if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor($this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty($this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = globalThis.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n && TypedArrayPrototype.values\n && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = globalThis.RangeError;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw new RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = globalThis.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = globalThis.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = globalThis.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.from-code-point');\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar TypeError = globalThis.TypeError;\nvar encodeURIComponent = globalThis.encodeURIComponent;\nvar fromCharCode = String.fromCharCode;\nvar fromCodePoint = getBuiltIn('String', 'fromCodePoint');\nvar $parseInt = parseInt;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar plus = /\\+/g;\nvar FALLBACK_REPLACER = '\\uFFFD';\nvar VALID_HEX = /^[0-9a-f]+$/i;\n\nvar parseHexOctet = function (string, start) {\n var substr = stringSlice(string, start, start + 2);\n if (!exec(VALID_HEX, substr)) return NaN;\n\n return $parseInt(substr, 16);\n};\n\nvar getLeadingOnes = function (octet) {\n var count = 0;\n for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {\n count++;\n }\n return count;\n};\n\nvar utf8Decode = function (octets) {\n var codePoint = null;\n\n switch (octets.length) {\n case 1:\n codePoint = octets[0];\n break;\n case 2:\n codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);\n break;\n case 3:\n codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);\n break;\n case 4:\n codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);\n break;\n }\n\n return codePoint > 0x10FFFF ? null : codePoint;\n};\n\nvar decode = function (input) {\n input = replace(input, plus, ' ');\n var length = input.length;\n var result = '';\n var i = 0;\n\n while (i < length) {\n var decodedChar = charAt(input, i);\n\n if (decodedChar === '%') {\n if (charAt(input, i + 1) === '%' || i + 3 > length) {\n result += '%';\n i++;\n continue;\n }\n\n var octet = parseHexOctet(input, i + 1);\n\n // eslint-disable-next-line no-self-compare -- NaN check\n if (octet !== octet) {\n result += decodedChar;\n i++;\n continue;\n }\n\n i += 2;\n var byteSequenceLength = getLeadingOnes(octet);\n\n if (byteSequenceLength === 0) {\n decodedChar = fromCharCode(octet);\n } else {\n if (byteSequenceLength === 1 || byteSequenceLength > 4) {\n result += FALLBACK_REPLACER;\n i++;\n continue;\n }\n\n var octets = [octet];\n var sequenceIndex = 1;\n\n while (sequenceIndex < byteSequenceLength) {\n i++;\n if (i + 3 > length || charAt(input, i) !== '%') break;\n\n var nextByte = parseHexOctet(input, i + 1);\n\n // eslint-disable-next-line no-self-compare -- NaN check\n if (nextByte !== nextByte) {\n i += 3;\n break;\n }\n if (nextByte > 191 || nextByte < 128) break;\n\n push(octets, nextByte);\n i += 2;\n sequenceIndex++;\n }\n\n if (octets.length !== byteSequenceLength) {\n result += FALLBACK_REPLACER;\n continue;\n }\n\n var codePoint = utf8Decode(octets);\n if (codePoint === null) {\n result += FALLBACK_REPLACER;\n } else {\n decodedChar = fromCodePoint(codePoint);\n }\n }\n }\n\n result += decodedChar;\n i++;\n }\n\n return result;\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n target: getInternalParamsState(params).entries,\n index: 0,\n kind: kind\n });\n}, URL_SEARCH_PARAMS, function next() {\n var state = getInternalIteratorState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n var entry = target[index];\n switch (state.kind) {\n case 'keys': return createIterResultObject(entry.key, false);\n case 'values': return createIterResultObject(entry.value, false);\n } return createIterResultObject([entry.key, entry.value], false);\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var entries = this.entries;\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw new TypeError('Expected sequence with length 2');\n push(entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var entries = this.entries;\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(entries, {\n key: decode(shift(entry)),\n value: decode(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var state = setInternalState(this, new URLSearchParamsState(init));\n if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 2);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n if (!DESCRIPTORS) this.length++;\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name /* , value */) {\n var state = getInternalParamsState(this);\n var length = validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index];\n if (entry.key === key && (value === undefined || entry.value === value)) {\n splice(entries, index, 1);\n if (value !== undefined) break;\n } else index++;\n }\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name /* , value */) {\n var entries = getInternalParamsState(this).entries;\n var length = validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index++];\n if (entry.key === key && (value === undefined || entry.value === value)) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n return getInternalParamsState(this).entries.length;\n },\n configurable: true,\n enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar globalThis = require('../internals/global-this');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = globalThis.URL;\nvar TypeError = globalThis.TypeError;\nvar parseInt = globalThis.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] === '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part === '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) === '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix === 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index === partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() === ':') {\n if (charAt(input, 1) !== ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex === 8) return;\n if (chr() === ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() === '.') {\n if (length === 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() === '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece === 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;\n }\n if (numbersSeen !== 4) return;\n break;\n } else if (chr() === ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex !== 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n return currLength > maxLength ? currStart : maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n }\n return join(result, '.');\n }\n\n // ipv6\n if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n }\n\n return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length === 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length === 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw new TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw new TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {\n buffer += toLowerCase(chr);\n } else if (chr === ':') {\n if (stateOverride && (\n (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||\n (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme === 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme === 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme === url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] === '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr === '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme === 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr === '/' && codePoints[pointer + 1] === '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr === '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr === EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr === '/' || (chr === '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr === '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr === '/' || chr === '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr === '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr !== '/' && chr !== '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr === '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint === ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer === '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme === 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr === ':' && !seenBracket) {\n if (buffer === '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride === HOSTNAME) return;\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer === '') return INVALID_HOST;\n if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr === '[') seenBracket = true;\n else if (chr === ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer !== '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr === '/' || chr === '\\\\') state = FILE_SLASH;\n else if (base && base.scheme === 'file') {\n switch (chr) {\n case EOF:\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n break;\n case '?':\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n break;\n case '#':\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n break;\n default:\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr === '/' || chr === '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr === EOF || chr === '/' || chr === '\\\\' || chr === '?' || chr === '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer === '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host === 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr !== '/' && chr !== '\\\\') continue;\n } else if (!stateOverride && chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n state = PATH;\n if (chr !== '/') continue;\n } break;\n\n case PATH:\n if (\n chr === EOF || chr === '/' ||\n (chr === '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr === '?' || chr === '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr === '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) === '[') {\n if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme === 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username !== '' || this.password !== '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme === 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw new TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme === 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme === 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port === '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search === '') {\n this.query = null;\n } else {\n if (charAt(search, 0) === '?') search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash === '') {\n this.fragment = null;\n return;\n }\n if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return call(URL.prototype.toString, this);\n }\n});\n","import './webcrypto-shim.mjs'\nexport default window.crypto\n","/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov \n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empy input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empy input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n\n export default {} // section modified by isomorphic-webcrypto build \n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/entry/browser.ts\");\n",""],"names":["exports","formatArgs","save","load","useColors","storage","localstorage","destroy","warned","console","warn","colors","window","process","type","__nwjs","navigator","userAgent","toLowerCase","match","m","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","args","namespace","module","humanize","diff","c","color","splice","index","lastC","replace","log","debug","namespaces","setItem","removeItem","error","r","getItem","env","DEBUG","localStorage","require","formatters","j","v","JSON","stringify","message","setup","createDebug","default","coerce","disable","enable","enabled","Object","keys","forEach","key","names","skips","selectColor","hash","i","length","charCodeAt","Math","abs","prevTime","enableOverride","namespacesCache","enabledCache","_len","arguments","Array","_key","self","curr","Number","Date","ms","prev","unshift","format","formatter","val","call","logFn","apply","extend","defineProperty","enumerable","configurable","get","set","init","delimiter","newDebug","split","len","push","RegExp","slice","concat","_toConsumableArray2","map","toNamespace","join","name","test","regexp","toString","substring","Error","stack","lib_1","strings_1","settings_1","_ref","FHIRCLIENT_PURE","Response","contextualize","_x","_x2","_contextualize","_asyncToGenerator2","_regenerator","mark","_callee9","requestOptions","client","base","contextualURL","_contextualURL","wrap","_callee9$","_context9","next","_contextualURL3","_callee8","_url","resourceType","conformance","searchParam","_callee8$","_context8","pathname","pop","assert","patientCompartment","indexOf","fetchConformanceStatement","state","serverUrl","sent","getPatientParam","searchParams","patient","id","abrupt","href","stop","_contextualURL2","_x9","absolute","URL","t0","url","getRef","refId","cache","signal","headers","request","then","res","Promise","resolve","resolveRef","obj","path","graph","node","getPath","isArray","all","makeArray","filter","Boolean","item","ref","reference","sub","setPath","catch","ex","status","resolveRefs","fhirOptions","paths","resolveReferences","String","trim","p","groups","task","sort","group","Client","environment","_this","_classCallCheck2","units","_state","_refreshTask","getPatientId","read","_objectSpread","reject","undefined","_callee","options","_callee$","_context","encounter","getEncounterId","user","fhirUser","getFhirUser","getUserId","getUserType","connect","fhir","_createClass2","value","fhirJs","baseUrl","accessToken","getState","auth","token","_this$state","username","password","pass","api","patientId","tokenResponse","scope","noScopeForId","authorizeUri","noIfNoAuth","noFreeContext","getIdToken","idToken","id_token","hasOpenid","hasProfile","hasFhirUser","jwtDecode","profile","getAuthorizationHeader","_this$state2","btoa","_clearState2","_callee2","_callee2$","_context2","getStorage","SMART_KEY","unset","_clearState","create","resource","method","body","update","delete","_patch2","_callee3","patch","_args3","_callee3$","_context3","assertJsonPatch","_x3","_x4","_request","_callee7","_this2","_resolvedRefs","_a","debugRequest","job","response","_args7","_callee7$","_context7","flat","pageLimit","useRefreshToken","onPage","refreshIfNeeded","authHeader","authorization","result","includeResponse","_ref3","_callee4","_callee4$","_context4","expired","_x6","data","_ref4","_callee5","_data","_callee5$","_context5","entry","_x7","_ref5","_callee6","links","nextPage","_callee6$","_context6","link","find","l","relation","assign","references","_x8","_x5","refreshToken","expiresAt","now","refresh","_this3","debugRefresh","_b","refresh_token","tokenUri","scopes","hasOfflineAccess","search","hasOnlineAccess","refreshRequestOptions","credentials","refreshTokenWithCredentials","mode","encodeURIComponent","_this$state3","clientSecret","clientId","access_token","getAccessTokenExpiration","finally","byCode","observations","property","byCodes","getFhirVersion","metadata","fhirVersion","getFhirRelease","fhirVersions","HttpError","_Error","_callSuper","statusText","statusCode","_inherits2","_parse","_body","bodyUsed","json","error_description","text","parse","toJSON","_wrapNativeSuper2","smart_1","Client_1","BrowserStorage_1","security","js_base64_1","BrowserAdapter","_storage","replaceBrowserHistory","fullSessionStorageSupport","relative","getUrl","location","redirect","to","getAbortController","AbortController","atob","str","base64urlencode","input","encodeURL","fromUint8Array","base64urldecode","decode","getSmartApi","ready","authorize","utils","BrowserAdapter_1","adapter","_adapter$getSmartApi","fetch","Headers","Request","FHIR","oauth2","settings","_interopRequireDefault","_defineProperty2","_objectWithoutProperties2","_typeof2","_excluded","ownKeys","e","t","getOwnPropertySymbols","o","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","HttpError_1","_debug","cm","_ref2","code","ensureNumerical","kg","any","pq","checkResponse","_checkResponse","resp","ok","responseToJSON","loweCaseKeys","out","lowerKey","accept","getAndCache","force","NODE_ENV","segments","shift","createEmpty","reduce","idx","arr","arg","randomString","strLength","charSet","charAt","floor","random","payload","getTimeInFuture","secondsAhead","from","expires_in","tokenBody","exp","ret","handleCodeableConcept","concept","observation","coding","_ref6","bank","codes","resources","meta","x","patientParams","getTargetWindow","_getTargetWindow","target","width","height","targetWindow","_error","_targetWindow","winOrFrame","_args2","parent","top","open","screen","t1","frames","condition","operation","op","crypto","globalThis","subtle","isSecureContext","ALGS","ES384","namedCurve","RS384","modulusLength","publicExponent","Uint8Array","randomBytes","count","getRandomValues","digestSha256","_digestSha","prepared","TextEncoder","encode","digest","generatePKCEChallenge","entropy","inputBytes","codeVerifier","codeChallenge","_args","importJWK","_importJWK","jwk","alg","key_ops","includes","importKey","ext","signCompactJws","_signCompactJws","privateKey","header","jwtHeader","jwtPayload","jwtAuthenticatedContent","signature","sign","algorithm","isBrowser","fetchWellKnownJson","getSecurityExtensionsFromWellKnownJson","authorization_endpoint","token_endpoint","registrationUri","registration_endpoint","codeChallengeMethods","code_challenge_methods_supported","getSecurityExtensionsFromConformanceStatement","nsUri","extensions","extension","valueUri","getSecurityExtensions","_authorize","params","urlISS","cfg","fakeTokenResponse","encounterId","pkceMode","clientPublicKeySetUrl","redirect_uri","client_id","iss","launch","fhirServiceUrl","redirectUri","noRedirect","_params$scope","completeInTarget","clientPrivateJwk","inFrame","inPopUp","oldKey","stateKey","redirectUrl","redirectParams","win","issMatch","isInFrame","isInPopUp","shouldIncludeChallenge","sessionStorage","addEventListener","onMessage","S256supported","opener","origin","removeEventListener","_ready","Storage","authError","authErrorDescription","hasState","authorized","postMessage","close","has","history","replaceState","buildTokenRequest","_buildTokenRequest","pk","jwtHeaders","jwtClaims","clientAssertion","typ","kid","jku","aud","jti","_init","authorizeOptions","readyOptions","cached","_get","_set","_unset"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/build/fhir-client.min.js b/dist/build/fhir-client.min.js new file mode 100644 index 00000000..ce637ca5 --- /dev/null +++ b/dist/build/fhir-client.min.js @@ -0,0 +1,3 @@ +/*! For license information please see fhir-client.min.js.LICENSE.txt */ +!function(){var t={7847:function(t,e,r){var n,o;n=function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var r=0;r=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));var t},e.storage=function(){try{return localStorage}catch(t){}}(),e.destroy=(n=!1,function(){n||(n=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.log=console.debug||console.log||function(){},t.exports=r(9507)(e),t.exports.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}},9507:function(t,e,r){"use strict";var n=r(4994)(r(1132));r(8706),r(8598),r(2062),r(4782),r(4554),r(8130),r(9432),r(6099),r(4864),r(7495),r(8781),r(5440),r(744),r(3500),t.exports=function(t){function e(t){var r,n,i,a=null;function s(){for(var t=arguments.length,n=new Array(t),o=0;o-1,'Cannot filter "'.concat(n,'" resources by patient')),t.next=5,(0,l.fetchConformanceStatement)(r.state.serverUrl);case 5:return i=t.sent,a=(0,l.getPatientParam)(i,n),e.searchParams.set(a,r.patient.id),t.abrupt("return",e.href);case 9:case"end":return t.stop()}}),t)})))).apply(this,arguments)},i=function(t){return a.apply(this,arguments)},n=(0,l.absolute)("/",r.state.serverUrl),!("string"==typeof e||e instanceof URL)){t.next=8;break}return t.next=6,i(new URL(e+"",n));case 6:return t.t0=t.sent,t.abrupt("return",{url:t.t0});case 8:return t.next=10,i(new URL(e.url+"",n));case 10:return e.url=t.sent,t.abrupt("return",e);case 12:case"end":return t.stop()}}),t)}))),g.apply(this,arguments)}function b(t,e,r,n,o){var i=(0,l.makeArray)(e.resolveReferences).filter(Boolean).map((function(t){return String(t).trim()})).filter(Boolean);if(!(i=i.filter((function(t,e){return!(i.indexOf(t,e+1)>-1&&(v('Duplicated reference path "%s"',t),1))}))).length)return Promise.resolve();var a={};i.forEach((function(t){var e=t.split(".").length;a[e]||(a[e]=[]),a[e].push(t)}));var s=Promise.resolve();return Object.keys(a).sort().forEach((function(i){var u=a[i];s=s.then((function(){return Promise.all(u.map((function(i){return function(t,e,r,n,o,i){var a=(0,l.getPath)(t,e);if(a){var s=Array.isArray(a);return Promise.all((0,l.makeArray)(a).filter(Boolean).map((function(a,u){var c=a.reference;if(c)return function(t,e,r,n){if(!e[t]){var o=n.signal,i=n.headers;e[t]=r.request({url:t,headers:i,signal:o}).then((function(r){return e[t]=r,r}),(function(r){throw delete e[t],r}))}return Promise.resolve(e[t])}(c,n,o,i).then((function(n){r&&(s?e.indexOf("..")>-1?(0,l.setPath)(t,"".concat(e.replace("..",".".concat(u,"."))),n):(0,l.setPath)(t,"".concat(e,".").concat(u),n):(0,l.setPath)(t,e,n))})).catch((function(t){if(404!==t.status)throw t}))})))}}(t,i,!!e.graph,r,n,o)})))}))})),s}var m=function(){return(0,s.default)((function t(e,r){var n=this;(0,a.default)(this,t),this.units=l.units;var i="string"==typeof r?{serverUrl:r}:r;(0,l.assert)(i.serverUrl&&i.serverUrl.match(/https?:\/\/.+/),'A "serverUrl" option is required and must begin with "http(s)"'),this.state=i,this.environment=e,this._refreshTask=null;var s=this;this.patient={get id(){return s.getPatientId()},read:function(t){var e=n.patient.id;return e?n.request(f(f({},t),{},{url:"Patient/".concat(e)})):Promise.reject(new Error("Patient is not available"))},request:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n.patient.id?(0,u.default)(o.default.mark((function r(){var i;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,y(t,n);case 2:return i=r.sent,r.abrupt("return",n.request(i,e));case 4:case"end":return r.stop()}}),r)})))():Promise.reject(new Error("Patient is not available"))}},this.encounter={get id(){return s.getEncounterId()},read:function(t){var e=n.encounter.id;return e?n.request(f(f({},t),{},{url:"Encounter/".concat(e)})):Promise.reject(new Error("Encounter is not available"))}},this.user={get fhirUser(){return s.getFhirUser()},get id(){return s.getUserId()},get resourceType(){return s.getUserType()},read:function(t){var e=n.user.fhirUser;return e?n.request(f(f({},t),{},{url:e})):Promise.reject(new Error("User is not available"))}},this.connect(e.fhir)}),[{key:"connect",value:function(t){if("function"==typeof t){var e={baseUrl:this.state.serverUrl.replace(/\/$/,"")},r=this.getState("tokenResponse.access_token");if(r)e.auth={token:r};else{var n=this.state,o=n.username,i=n.password;o&&i&&(e.auth={user:o,pass:i})}this.api=t(e);var a=this.getState("tokenResponse.patient");a&&(this.patient.api=t(f(f({},e),{},{patient:a})))}return this}},{key:"getPatientId",value:function(){var t=this.state.tokenResponse;return t?t.patient?t.patient:((this.state.scope||"").match(/\blaunch(\/patient)?\b/)?v("The ID of the selected patient is not available. Please check if your server supports that."):v(p.default.noScopeForId,"patient","patient"),null):(this.state.authorizeUri?v(p.default.noIfNoAuth,"the ID of the selected patient"):v(p.default.noFreeContext,"selected patient"),null)}},{key:"getEncounterId",value:function(){var t=this.state.tokenResponse;return t?t.encounter?t.encounter:((this.state.scope||"").match(/\blaunch(\/encounter)?\b/)?v("The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters."):v(p.default.noScopeForId,"encounter","encounter"),null):(this.state.authorizeUri?v(p.default.noIfNoAuth,"the ID of the selected encounter"):v(p.default.noFreeContext,"selected encounter"),null)}},{key:"getIdToken",value:function(){var t=this.state.tokenResponse;if(t){var e=t.id_token,r=this.state.scope||"";if(!e){var n=r.match(/\bopenid\b/),o=r.match(/\bprofile\b/),i=r.match(/\bfhirUser\b/);return v(n&&(i||o)?"The id_token is not available. Please check if your server supports that.":"You are trying to get the id_token but you are not using the right scopes. Please add 'openid' and 'fhirUser' or 'profile' to the scopes you are requesting."),null}return(0,l.jwtDecode)(e,this.environment)}return this.state.authorizeUri?v(p.default.noIfNoAuth,"the id_token"):v(p.default.noFreeContext,"id_token"),null}},{key:"getFhirUser",value:function(){var t=this.getIdToken();return t?t.fhirUser?t.fhirUser.split("/").slice(-2).join("/"):t.profile:null}},{key:"getUserId",value:function(){var t=this.getFhirUser();return t?t.split("/")[1]:null}},{key:"getUserType",value:function(){var t=this.getFhirUser();return t?t.split("/")[0]:null}},{key:"getAuthorizationHeader",value:function(){var t=this.getState("tokenResponse.access_token");if(t)return"Bearer "+t;var e=this.state,r=e.username,n=e.password;return r&&n?"Basic "+this.environment.btoa(r+":"+n):null}},{key:"_clearState",value:(r=(0,u.default)(o.default.mark((function t(){var e,r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=this.environment.getStorage(),t.next=3,e.get(h.SMART_KEY);case 3:if(!(r=t.sent)){t.next=7;break}return t.next=7,e.unset(r);case 7:return t.next=9,e.unset(h.SMART_KEY);case 9:this.state.tokenResponse={};case 10:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"create",value:function(t,e){return this.request(f(f({},e),{},{url:"".concat(t.resourceType),method:"POST",body:JSON.stringify(t),headers:f({"content-type":"application/json"},(e||{}).headers)}))}},{key:"update",value:function(t,e){return this.request(f(f({},e),{},{url:"".concat(t.resourceType,"/").concat(t.id),method:"PUT",body:JSON.stringify(t),headers:f({"content-type":"application/json"},(e||{}).headers)}))}},{key:"delete",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.request(f(f({},e),{},{url:t,method:"DELETE"}))}},{key:"patch",value:(e=(0,u.default)(o.default.mark((function t(e,r){var n,i=arguments;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=i.length>2&&void 0!==i[2]?i[2]:{},(0,l.assertJsonPatch)(r),t.abrupt("return",this.request(f(f({},n),{},{url:e,method:"PATCH",body:JSON.stringify(r),headers:f({prefer:"return=presentation","content-type":"application/json-patch+json; charset=UTF-8"},n.headers)})));case 3:case"end":return t.stop()}}),t,this)}))),function(t,r){return e.apply(this,arguments)})},{key:"request",value:(t=(0,u.default)(o.default.mark((function t(e){var r,n,i,a,s,c,h,v,y,g=this,m=arguments;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=m.length>1&&void 0!==m[1]?m[1]:{},n=m.length>2&&void 0!==m[2]?m[2]:{},a=l.debug.extend("client:request"),(0,l.assert)(e,"request requires an url or request options as argument"),"string"==typeof e||e instanceof URL?(s=String(e),e={}):s=String(e.url),s=(0,l.absolute)(s,this.state.serverUrl),c={graph:!1!==r.graph,flat:!!r.flat,pageLimit:null!==(i=r.pageLimit)&&void 0!==i?i:1,resolveReferences:r.resolveReferences||[],useRefreshToken:!1!==r.useRefreshToken,onPage:"function"==typeof r.onPage?r.onPage:void 0},h=e.signal||void 0,v=c.useRefreshToken?this.refreshIfNeeded({signal:h}).then((function(){return e})):Promise.resolve(e),t.abrupt("return",v.then((function(t){var e=g.getAuthorizationHeader();return e&&(t.headers=f(f({},t.headers),{},{authorization:e})),t})).then((function(t){return a("%s, options: %O, fhirOptions: %O",s,t,c),(0,l.request)(s,t).then((function(e){return t.includeResponse?(y=e.response,e.body):e}))})).catch(function(){var t=(0,u.default)(o.default.mark((function t(e){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!=e.status){t.next=15;break}if(g.getState("tokenResponse.access_token")){t.next=4;break}throw e.message+="\nThis app cannot be accessed directly. Please launch it as SMART app!",e;case 4:if(c.useRefreshToken){t.next=10;break}return a("Your session has expired and the useRefreshToken option is set to false. Please re-launch the app."),t.next=8,g._clearState();case 8:case 13:throw e.message+="\n"+p.default.expired,e;case 10:return a("Auto-refresh failed! Please re-launch the app."),t.next=13,g._clearState();case 15:throw e;case 16:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){throw 403==t.status&&a("Permission denied! Please make sure that you have requested the proper scopes."),t})).then((function(t){return!t||"string"==typeof t||t instanceof d?e.includeResponse?{body:t,response:y}:t:(r=(0,u.default)(o.default.mark((function t(r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("Bundle"!=r.resourceType){t.next=5;break}return t.next=3,Promise.all((r.entry||[]).map((function(t){return b(t.resource,c,n,g,e)})));case 3:t.next=7;break;case 5:return t.next=7,b(r,c,n,g,e);case 7:return t.abrupt("return",r);case 8:case"end":return t.stop()}}),t)}))),function(t){return r.apply(this,arguments)})(t).then(function(){var t=(0,u.default)(o.default.mark((function t(e){var r,i,a;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||"Bundle"!=e.resourceType){t.next=19;break}if(r=e.link||[],c.flat&&(e=(e.entry||[]).map((function(t){return t.resource}))),!c.onPage){t.next=6;break}return t.next=6,c.onPage(e,f({},n));case 6:if(! --c.pageLimit){t.next=19;break}if(i=r.find((function(t){return"next"==t.relation})),e=(0,l.makeArray)(e),!i||!i.url){t.next=19;break}return t.next=12,g.request({url:i.url,signal:h},c,n);case 12:if(a=t.sent,!c.onPage){t.next=15;break}return t.abrupt("return",null);case 15:if(!c.resolveReferences.length){t.next=18;break}return Object.assign(n,a.references),t.abrupt("return",e.concat((0,l.makeArray)(a.data||a)));case 18:return t.abrupt("return",e.concat((0,l.makeArray)(a)));case 19:return t.abrupt("return",e);case 20:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).then((function(t){if(c.graph)n={};else if(!c.onPage&&c.resolveReferences.length)return{data:t,references:n};return t})).then((function(t){return e.includeResponse?{body:t,response:y}:t}));var r})));case 10:case"end":return t.stop()}}),t,this)}))),function(e){return t.apply(this,arguments)})},{key:"refreshIfNeeded",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getState("tokenResponse.access_token"),r=this.getState("tokenResponse.refresh_token"),n=this.state.expiresAt||0;return e&&r&&n-100&&void 0!==arguments[0]?arguments[0]:{},o=l.debug.extend("client:refresh");o("Attempting to refresh with refresh_token...");var i=null===(e=null===(t=this.state)||void 0===t?void 0:t.tokenResponse)||void 0===e?void 0:e.refresh_token;(0,l.assert)(i,"Unable to refresh. No refresh_token found.");var a=this.state.tokenUri;(0,l.assert)(a,"Unable to refresh. No tokenUri found.");var s=this.getState("tokenResponse.scope")||"",u=s.search(/\boffline_access\b/)>-1,c=s.search(/\bonline_access\b/)>-1;if((0,l.assert)(u||c,"Unable to refresh. No offline_access or online_access scope found."),!this._refreshTask){var p=f(f({credentials:this.environment.options.refreshTokenWithCredentials||"same-origin"},n),{},{method:"POST",mode:"cors",headers:f(f({},n.headers||{}),{},{"content-type":"application/x-www-form-urlencoded"}),body:"grant_type=refresh_token&refresh_token=".concat(encodeURIComponent(i))});if(!("authorization"in p.headers)){var h=this.state,d=h.clientSecret,v=h.clientId;d&&(p.headers.authorization="Basic "+this.environment.btoa(v+":"+d))}this._refreshTask=(0,l.request)(a,p).then((function(t){return(0,l.assert)(t.access_token,"No access token received"),o("Received new access token response %O",t),r.state.tokenResponse=f(f({},r.state.tokenResponse),t),r.state.expiresAt=(0,l.getAccessTokenExpiration)(t,r.environment),r.state})).catch((function(t){var e,n;throw(null===(n=null===(e=r.state)||void 0===e?void 0:e.tokenResponse)||void 0===n?void 0:n.refresh_token)&&(o("Deleting the expired or invalid refresh token."),delete r.state.tokenResponse.refresh_token),t})).finally((function(){r._refreshTask=null;var t=r.state.key;t?r.environment.getStorage().set(t,r.state):o("No 'key' found in Clint.state. Cannot persist the instance.")}))}return this._refreshTask}},{key:"byCode",value:function(t,e){return(0,l.byCode)(t,e)}},{key:"byCodes",value:function(t,e){return(0,l.byCodes)(t,e)}},{key:"getPath",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return(0,l.getPath)(t,e)}},{key:"getState",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return(0,l.getPath)(f({},this.state),t)}},{key:"getFhirVersion",value:function(){return(0,l.fetchConformanceStatement)(this.state.serverUrl).then((function(t){return t.fhirVersion}))}},{key:"getFhirRelease",value:function(){return this.getFhirVersion().then((function(t){var e;return null!==(e=h.fhirVersions[t])&&void 0!==e?e:0}))}}]);var t,e,r}();e.default=m},1829:function(t,e,r){"use strict";r(825);var n=r(4994),o=n(r(4756));r(8706),r(2010),r(7495),r(1761);var i=n(r(9293)),a=n(r(7383)),s=n(r(4579)),u=n(r(8452)),c=n(r(3072)),f=n(r(9511)),l=n(r(1837));function p(t,e,r){return e=(0,c.default)(e),(0,u.default)(t,h()?Reflect.construct(e,r||[],(0,c.default)(t).constructor):e.apply(t,r))}function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}Object.defineProperty(e,"__esModule",{value:!0});var d=function(t){function e(t){var r;return(0,a.default)(this,e),(r=p(this,e,["".concat(t.status," ").concat(t.statusText,"\nURL: ").concat(t.url)])).name="HttpError",r.response=t,r.statusCode=t.status,r.status=t.status,r.statusText=t.statusText,r}return(0,f.default)(e,t),(0,s.default)(e,[{key:"parse",value:(r=(0,i.default)(o.default.mark((function t(){var e,r,n;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.response.bodyUsed){t.next=19;break}if(t.prev=1,!(e=this.response.headers.get("content-type")||"text/plain").match(/\bjson\b/i)){t.next=10;break}return t.next=6,this.response.json();case 6:(r=t.sent).error?(this.message+="\n"+r.error,r.error_description&&(this.message+=": "+r.error_description)):this.message+="\n\n"+JSON.stringify(r,null,4),t.next=15;break;case 10:if(!e.match(/^text\//i)){t.next=15;break}return t.next=13,this.response.text();case 13:(n=t.sent)&&(this.message+="\n\n"+n);case 15:t.next=19;break;case 17:t.prev=17,t.t0=t.catch(1);case 19:return t.abrupt("return",this);case 20:case"end":return t.stop()}}),t,this,[[1,17]])}))),function(){return r.apply(this,arguments)})},{key:"toJSON",value:function(){return{name:this.name,statusCode:this.statusCode,status:this.status,statusText:this.statusText,message:this.message}}}]);var r}((0,l.default)(Error));e.default=d},7129:function(t,e,r){"use strict";r(2675),r(2008),r(3851),r(1278),r(9432),r(3500);var n=r(4994);r(8706),r(3792),r(6099),r(7764),r(2953),r(3296),r(7208),r(8408);var o=n(r(3693)),i=n(r(7383)),a=n(r(4579));function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}Object.defineProperty(e,"__esModule",{value:!0});var u=r(438),c=r(7024),f=r(4944),l=r(4818),p=r(8127),h=function(){return(0,a.default)((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,i.default)(this,t),this._url=null,this._storage=null,this.security=l,this.options=function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=e.includeResponse,n=(0,a.default)(e,c);return v(t,l(l({mode:"cors"},n),{},{headers:l({accept:"application/json"},S(n.headers))})).then(m).then((function(t){var e=t.headers.get("content-type")+"";return e.match(/\bjson\b/i)?x(t).then((function(e){return{res:t,body:e}})):e.match(/^text\//i)?t.text().then((function(e){return{res:t,body:e}})):{res:t}})).then((function(t){var e=t.res,o=t.body;if(!o&&201==e.status){var i=e.headers.get("location");if(i)return A(i,l(l({},n),{},{method:"GET",body:null,includeResponse:r}))}return r?{body:o,response:e}:void 0===o?e:o}))}function k(t,e){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]||!g[t]?(g[t]=A(t,e),g[t]):Promise.resolve(g[t])}function O(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!(e=e.trim()))return t;for(var r=e.split("."),n=t;n&&r.length;){var o=r.shift();if(!o&&Array.isArray(n))return n.map((function(t){return O(t,r.join("."))}));n=n[o]}return n}function E(t){return Array.isArray(t)?t:[t]}function P(t,e){var r=t.split(".")[1];return r?JSON.parse(e.atob(r)):null}function C(t,e){var r={};function n(t,e){t&&Array.isArray(t.coding)&&t.coding.forEach((function(t){var n=t.code;n&&(r[n]=r[n]||[],r[n].push(e))}))}return E(t).forEach((function(t){"Observation"===t.resourceType&&t[e]&&(Array.isArray(t[e])?t[e].forEach((function(e){return n(e,t)})):n(t[e],t))})),r}function R(){return R=(0,u.default)(o.default.mark((function t(e){var r,n,i,a,u,c,f,l=arguments;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=l.length>1&&void 0!==l[1]?l[1]:800,n=l.length>2&&void 0!==l[2]?l[2]:720,"function"!=typeof e){t.next=6;break}return t.next=5,e();case 5:e=t.sent;case 6:if(!e||"object"!=(0,s.default)(e)){t.next=8;break}return t.abrupt("return",e);case 8:if("string"==typeof e){t.next=11;break}return y("Invalid target type '%s'. Failing back to '_self'.",(0,s.default)(e)),t.abrupt("return",self);case 11:if("_self"!=e){t.next=13;break}return t.abrupt("return",self);case 13:if("_parent"!=e){t.next=15;break}return t.abrupt("return",parent);case 15:if("_top"!=e){t.next=17;break}return t.abrupt("return",top||self);case 17:if("_blank"!=e){t.next=34;break}if(a=null,t.prev=19,a=window.open("","SMARTAuthPopup")){t.next=23;break}throw new Error("Perhaps window.open was blocked");case 23:t.next=28;break;case 25:t.prev=25,t.t0=t.catch(19),i=t.t0;case 28:if(a){t.next=33;break}return y("Cannot open window. Failing back to '_self'. %s",i),t.abrupt("return",self);case 33:return t.abrupt("return",a);case 34:if("popup"!=e){t.next=51;break}if(c=null,t.prev=36,c=window.open("","SMARTAuthPopup",["height="+n,"width="+r,"menubar=0","resizable=1","status=0","top="+(screen.height-n)/2,"left="+(screen.width-r)/2].join(","))){t.next=40;break}throw new Error("Perhaps the popup window was blocked");case 40:t.next=45;break;case 42:t.prev=42,t.t1=t.catch(36),u=t.t1;case 45:if(c){t.next=50;break}return y("Cannot open window. Failing back to '_self'. %s",u),t.abrupt("return",self);case 50:return t.abrupt("return",c);case 51:if(!(f=frames[e])){t.next=54;break}return t.abrupt("return",f);case 54:return y("Unknown target '%s'. Failing back to '_self'.",e),t.abrupt("return",self);case 56:case"end":return t.stop()}}),t,null,[[19,25],[36,42]])}))),R.apply(this,arguments)}function _(t,e){if(!t)throw new Error(e)}e.units={cm:function(t){var e=t.code,r=t.value;if(b({code:e,value:r}),"cm"==e)return r;if("m"==e)return 100*r;if("in"==e)return 2.54*r;if("[in_us]"==e)return 2.54*r;if("[in_i]"==e)return 2.54*r;if("ft"==e)return 30.48*r;if("[ft_us]"==e)return 30.48*r;throw new Error("Unrecognized length unit: "+e)},kg:function(t){var e=t.code,r=t.value;if(b({code:e,value:r}),"kg"==e)return r;if("g"==e)return r/1e3;if(e.match(/lb/))return r/2.20462;if(e.match(/oz/))return r/35.274;throw new Error("Unrecognized weight unit: "+e)},any:function(t){return b(t),t.value}},e.checkResponse=m,e.responseToJSON=x,e.loweCaseKeys=S,e.request=A,e.getAndCache=k,e.fetchConformanceStatement=function(){var t=arguments.length>1?arguments[1]:void 0,e=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/").replace(/\/*$/,"/")+"metadata";return k(e,t).catch((function(t){throw new Error('Failed to fetch the conformance statement from "'.concat(e,'". ').concat(t))}))},e.getPath=O,e.setPath=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return e.trim().split(".").reduce((function(t,e,o,i){if(!t||o!==i.length-1)return t&&void 0===t[e]&&n&&(t[e]=i[o+1].match(/^[0-9]+$/)?[]:{}),t?t[e]:void 0;t[e]=r}),t),t},e.makeArray=E,e.absolute=function(t,e){return t.match(/^http/)||t.match(/^urn/)?t:String(e||"").replace(/\/+$/,"")+"/"+t.replace(/^\/+/,"")},e.randomString=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=[],n=e.length;t--;)r.push(e.charAt(Math.floor(Math.random()*n)));return r.join("")},e.jwtDecode=P,e.getTimeInFuture=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:120,e=arguments.length>1?arguments[1]:void 0;return Math.floor(+(e||new Date)/1e3+t)},e.getAccessTokenExpiration=function(t,e){var r=Math.floor(Date.now()/1e3);if(t.expires_in)return r+t.expires_in;if(t.access_token){var n=P(t.access_token,e);if(n&&n.exp)return n.exp}return r+300},e.byCode=C,e.byCodes=function(t,e){var r=C(t,e);return function(){for(var t=arguments.length,e=new Array(t),n=0;n0,"The JSON patch array should not be empty"),t.forEach((function(t){_(["add","replace","test","move","copy","remove"].indexOf(t.op)>-1,'Each patch operation must have an "op" property which must be one of: "add", "replace", "test", "move", "copy", "remove"'),_(t.path&&(0,s.default)(t.path),'Invalid "'.concat(t.op,'" operation. Missing "path" property')),"add"==t.op||"replace"==t.op||"test"==t.op?(_("value"in t,'Invalid "'.concat(t.op,'" operation. Missing "value" property')),_(3==Object.keys(t).length,'Invalid "'.concat(t.op,'" operation. Contains unknown properties'))):"move"==t.op||"copy"==t.op?(_("string"==typeof t.from,'Invalid "'.concat(t.op,'" operation. Requires a string "from" property')),_(3==Object.keys(t).length,'Invalid "'.concat(t.op,'" operation. Contains unknown properties'))):_(2==Object.keys(t).length,'Invalid "'.concat(t.op,'" operation. Contains unknown properties'))}))}},4818:function(t,e,r){"use strict";r(2675),r(2008),r(3851),r(1278),r(9432),r(3500);var n=r(4994),o=n(r(4756));r(8706),r(4423),r(3792),r(4743),r(6099),r(1699),r(1489),r(1630),r(2170),r(5044),r(1920),r(1694),r(9955),r(3206),r(4496),r(6651),r(2887),r(9369),r(6812),r(8995),r(1575),r(6072),r(8747),r(8845),r(9423),r(7301),r(373),r(6614),r(1405),r(3684),r(2480);var i=n(r(3693)),a=n(r(9293)),s=n(r(3738));function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e0&&void 0!==i[0]?i[0]:96),r=(0,f.fromUint8Array)(e,!0),t.t0=f.fromUint8Array,t.next=6,v(r);case 6:return t.t1=t.sent,n=(0,t.t0)(t.t1,!0),t.abrupt("return",{codeChallenge:n,codeVerifier:r});case 9:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();function b(){return(b=(0,a.default)(o.default.mark((function t(e){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.alg){t.next=2;break}throw new Error('The "alg" property of the JWK must be set to "ES384" or "RS384"');case 2:if(Array.isArray(e.key_ops)||(e.key_ops=["sign"]),e.key_ops.includes("sign")){t.next=5;break}throw new Error('The "key_ops" property of the JWK does not contain "sign"');case 5:return t.prev=5,t.next=8,p().importKey("jwk",e,h[e.alg],!0===e.ext,e.key_ops);case 8:return t.abrupt("return",t.sent);case 11:throw t.prev=11,t.t0=t.catch(5),new Error("The ".concat(e.alg," is not supported by this browser: ").concat(t.t0));case 14:case"end":return t.stop()}}),t,null,[[5,11]])})))).apply(this,arguments)}function m(){return(m=(0,a.default)(o.default.mark((function t(e,r,n,i){var a,s,u,l;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=JSON.stringify(c(c({},n),{},{alg:e})),s=JSON.stringify(i),u="".concat((0,f.encodeURL)(a),".").concat((0,f.encodeURL)(s)),t.next=5,p().sign(c(c({},r.algorithm),{},{hash:"SHA-384"}),r,(new TextEncoder).encode(u));case 5:return l=t.sent,t.abrupt("return","".concat(u,".").concat((0,f.fromUint8Array)(new Uint8Array(l),!0)));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}e.generatePKCEChallenge=g,e.importJWK=function(t){return b.apply(this,arguments)},e.signCompactJws=function(t,e,r,n){return m.apply(this,arguments)}},9830:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SMART_KEY=e.patientParams=e.fhirVersions=e.patientCompartment=void 0,e.patientCompartment=["Account","AdverseEvent","AllergyIntolerance","Appointment","AppointmentResponse","AuditEvent","Basic","BodySite","BodyStructure","CarePlan","CareTeam","ChargeItem","Claim","ClaimResponse","ClinicalImpression","Communication","CommunicationRequest","Composition","Condition","Consent","Coverage","CoverageEligibilityRequest","CoverageEligibilityResponse","DetectedIssue","DeviceRequest","DeviceUseRequest","DeviceUseStatement","DiagnosticOrder","DiagnosticReport","DocumentManifest","DocumentReference","EligibilityRequest","Encounter","EnrollmentRequest","EpisodeOfCare","ExplanationOfBenefit","FamilyMemberHistory","Flag","Goal","Group","ImagingManifest","ImagingObjectSelection","ImagingStudy","Immunization","ImmunizationEvaluation","ImmunizationRecommendation","Invoice","List","MeasureReport","Media","MedicationAdministration","MedicationDispense","MedicationOrder","MedicationRequest","MedicationStatement","MolecularSequence","NutritionOrder","Observation","Order","Patient","Person","Procedure","ProcedureRequest","Provenance","QuestionnaireResponse","ReferralRequest","RelatedPerson","RequestGroup","ResearchSubject","RiskAssessment","Schedule","ServiceRequest","Specimen","SupplyDelivery","SupplyRequest","VisionPrescription"],e.fhirVersions={"0.4.0":2,"0.5.0":2,"1.0.0":2,"1.0.1":2,"1.0.2":2,"1.1.0":3,"1.4.0":3,"1.6.0":3,"1.8.0":3,"3.0.0":3,"3.0.1":3,"3.3.0":4,"3.5.0":4,"4.0.0":4,"4.0.1":4},e.patientParams=["patient","subject","requester","member","actor","beneficiary"],e.SMART_KEY="SMART_KEY"},438:function(t,e,r){"use strict";r(2675),r(3851),r(1278),r(9432);var n=r(4994),o=n(r(4756));r(8706),r(2008),r(113),r(4423),r(3792),r(8598),r(2062),r(2010),r(9085),r(6099),r(3362),r(4864),r(7495),r(8781),r(1699),r(7764),r(1761),r(5440),r(3500),r(2953),r(3296),r(7208),r(8408);var i=n(r(3693)),a=n(r(9293)),s=n(r(3738));function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e1?arguments[1]:void 0,e=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/").replace(/\/*$/,"/")+".well-known/smart-configuration";return(0,f.getAndCache)(e,t).catch((function(t){throw new Error('Failed to fetch the well-known json "'.concat(e,'". ').concat(t.message))}))}function y(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";return function(){return v(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",arguments.length>1?arguments[1]:void 0).then((function(t){if(!t.authorization_endpoint||!t.token_endpoint)throw new Error("Invalid wellKnownJson");return{registrationUri:t.registration_endpoint||"",authorizeUri:t.authorization_endpoint,tokenUri:t.token_endpoint,codeChallengeMethods:t.code_challenge_methods_supported||[]}}))}(t).catch((function(){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",e=arguments.length>1?arguments[1]:void 0;return(0,f.fetchConformanceStatement)(t,e).then((function(t){var e=((0,f.getPath)(t||{},"rest.0.security.extension")||[]).filter((function(t){return"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"===t.url})).map((function(t){return t.extension}))[0],r={registrationUri:"",authorizeUri:"",tokenUri:"",codeChallengeMethods:[]};return e&&e.forEach((function(t){"register"===t.url&&(r.registrationUri=t.valueUri),"authorize"===t.url&&(r.authorizeUri=t.valueUri),"token"===t.url&&(r.tokenUri=t.valueUri)})),r}))}(t)}))}function g(t){return b.apply(this,arguments)}function b(){return b=(0,a.default)(o.default.mark((function t(e){var r,n,i,a,s,u,c,l,v,b,A,k,O,E,P,C,R,_,T,j,U,I,F,M,L,B,N,D,K,q,H,z,G,J,V,W,Y,$=arguments;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=$.length>1&&void 0!==$[1]?$[1]:{},n=e.getUrl(),!Array.isArray(r)){t.next=11;break}if(i=n.searchParams.get("iss")||n.searchParams.get("fhirServiceUrl")){t.next=6;break}throw new Error('Passing in an "iss" url parameter is required if authorize uses multiple configurations');case 6:return a=r.find((function(t){if(t.issMatch){if("function"==typeof t.issMatch)return!!t.issMatch(i);if("string"==typeof t.issMatch)return t.issMatch===i;if(t.issMatch instanceof RegExp)return t.issMatch.test(i)}return!1})),(0,f.assert)(a,'No configuration found matching the current "iss" parameter "'.concat(i,'"')),t.next=10,g(e,a);case 10:return t.abrupt("return",t.sent);case 11:if(s=r.clientSecret,u=r.fakeTokenResponse,c=r.encounterId,l=r.target,v=r.width,b=r.height,A=r.pkceMode,k=r.clientPublicKeySetUrl,O=r.redirect_uri,E=r.client_id,P=r.iss,C=r.launch,R=r.patientId,_=r.fhirServiceUrl,T=r.redirectUri,j=r.noRedirect,U=r.scope,I=void 0===U?"":U,F=r.clientId,M=r.completeInTarget,L=r.clientPrivateJwk,B=e.getStorage(),P=n.searchParams.get("iss")||P,_=n.searchParams.get("fhirServiceUrl")||_,C=n.searchParams.get("launch")||C,R=n.searchParams.get("patientId")||R,(F=n.searchParams.get("clientId")||F)||(F=E),T||(T=O),T?T.match(/^https?\:\/\//)||(T=e.relative(T)):T=e.relative("."),N=String(P||_||"")){t.next=25;break}throw new Error("No server url found. It must be specified as `iss` or as `fhirServiceUrl` parameter");case 25:return P&&h("Making %s launch...",C?"EHR":"standalone"),C&&!I.match(/launch/)&&(I+=" launch"),d()&&(D=w(),K=x(),(D||K)&&!0!==M&&!1!==M&&(M=D,console.warn('Your app is being authorized from within an iframe or popup window. Please be explicit and provide a "completeInTarget" option. Use "true" to complete the authorization in the same window, or "false" to try to complete it in the parent or the opener window. See http://docs.smarthealthit.org/client-js/api.html'))),t.next=30,B.get(p.SMART_KEY);case 30:return q=t.sent,t.next=33,B.unset(q);case 33:if(H=(0,f.randomString)(16),z={clientId:F,scope:I,redirectUri:T,serverUrl:N,clientSecret:s,clientPrivateJwk:L,tokenResponse:{},key:H,completeInTarget:M,clientPublicKeySetUrl:k},d()&&!(0,f.getPath)(e,"options.fullSessionStorageSupport")){t.next=39;break}return t.next=39,B.set(p.SMART_KEY,H);case 39:if(u&&Object.assign(z.tokenResponse,u),R&&Object.assign(z.tokenResponse,{patient:R}),c&&Object.assign(z.tokenResponse,{encounter:c}),G=T+"?state="+encodeURIComponent(H),!_||P){t.next=52;break}return h("Making fake launch..."),t.next=47,B.set(H,z);case 47:if(!j){t.next=49;break}return t.abrupt("return",G);case 49:return t.next=51,e.redirect(G);case 51:return t.abrupt("return",t.sent);case 52:return t.next=54,y(N);case 54:return J=t.sent,Object.assign(z,J),t.next=58,B.set(H,z);case 58:if(z.authorizeUri){t.next=64;break}if(!j){t.next=61;break}return t.abrupt("return",G);case 61:return t.next=63,e.redirect(G);case 63:return t.abrupt("return",t.sent);case 64:if(V=["response_type=code","client_id="+encodeURIComponent(F||""),"scope="+encodeURIComponent(I),"redirect_uri="+encodeURIComponent(T),"aud="+encodeURIComponent(N),"state="+encodeURIComponent(H)],C&&V.push("launch="+encodeURIComponent(C)),!m(J.codeChallengeMethods.includes("S256"),A)){t.next=75;break}return t.next=69,e.security.generatePKCEChallenge();case 69:return W=t.sent,Object.assign(z,W),t.next=73,B.set(H,z);case 73:V.push("code_challenge="+z.codeChallenge),V.push("code_challenge_method=S256");case 75:if(G=z.authorizeUri+"?"+V.join("&"),!j){t.next=78;break}return t.abrupt("return",G);case 78:if(!l||!d()){t.next=87;break}return t.next=81,(0,f.getTargetWindow)(l,v,b);case 81:if((Y=t.sent)!==self)try{Y.sessionStorage.removeItem(q),Y.sessionStorage.setItem(H,JSON.stringify(z))}catch(t){(0,f.debug)('Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to "_self". %s',t),Y=self}if(Y!==self)try{Y.location.href=G,self.addEventListener("message",S)}catch(t){(0,f.debug)('Failed to modify window.location. Perhaps it is from different origin?. Failing back to "_self". %s',t),self.location.href=G}else self.location.href=G;return t.abrupt("return");case 87:return t.next=89,e.redirect(G);case 89:return t.abrupt("return",t.sent);case 90:case"end":return t.stop()}}),t)}))),b.apply(this,arguments)}function m(t,e){if("disabled"===e)return!1;if("unsafeV1"===e)return!0;if("required"===e){if(!t)throw new Error("Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration.");return!0}return t}function w(){try{return self!==top&&parent!==self}catch(t){return!0}}function x(){try{return self===top&&!!opener&&opener!==self&&!!window.name}catch(t){return!1}}function S(t){"completeAuth"==t.data.type&&t.origin===new URL(self.location.href).origin&&(window.removeEventListener("message",S),window.location.href=t.data.url)}function A(t){return k.apply(this,arguments)}function k(){return k=(0,a.default)(o.default.mark((function t(e){var r,n,i,a,s,u,v,y,g,b,m,S,A,k,E,P,C,R,_,T,j=arguments;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=j.length>1&&void 0!==j[1]?j[1]:{},a=e.getUrl(),s=e.getStorage(),u=a.searchParams,v=u.get("state"),y=u.get("code"),g=u.get("error"),b=u.get("error_description"),v){t.next=12;break}return t.next=11,s.get(p.SMART_KEY);case 11:v=t.sent;case 12:if(!g&&!b){t.next=14;break}throw new Error([g,b].filter(Boolean).join(": "));case 14:return h("key: %s, code: %s",v,y),(0,f.assert)(v,"No 'state' parameter found. Please (re)launch the app."),t.next=18,s.get(v);case 18:if(m=t.sent,S=!d()||(0,f.getPath)(e,"options.fullSessionStorageSupport"),!d()||!m||m.completeInTarget){t.next=29;break}if(A=w(),k=x(),!A&&!k||a.searchParams.get("complete")){t.next=29;break}return a.searchParams.set("complete","1"),E=a.href,P=a.origin,A&&parent.postMessage({type:"completeAuth",url:E},P),k&&(opener.postMessage({type:"completeAuth",url:E},P),window.close()),t.abrupt("return",new Promise((function(){})));case 29:if(a.searchParams.delete("complete"),C=u.has("state"),d()&&(0,f.getPath)(e,"options.replaceBrowserHistory")&&(y||C)&&(y&&(u.delete("code"),h("Removed code parameter from the url.")),C&&S&&(u.delete("state"),h("Removed state parameter from the url.")),window.history.replaceState&&window.history.replaceState({},"",a.href)),(0,f.assert)(m,"No state found! Please (re)launch the app."),!y||(null===(n=m.tokenResponse)||void 0===n?void 0:n.access_token)||!m.tokenUri){t.next=53;break}return(0,f.assert)(y,"'code' url parameter is required"),h("Preparing to exchange the code for access token..."),t.next=39,O(e,{code:y,state:m,clientPublicKeySetUrl:r.clientPublicKeySetUrl,privateKey:r.privateKey||m.clientPrivateJwk});case 39:return R=t.sent,h("Token request options: %O",R),t.next=43,(0,f.request)(m.tokenUri,R);case 43:return _=t.sent,h("Token response: %O",_),(0,f.assert)(_.access_token,"Failed to obtain access token."),m.expiresAt=(0,f.getAccessTokenExpiration)(_,e),m=c(c({},m),{},{tokenResponse:_}),t.next=50,s.set(v,m);case 50:h("Authorization successful!"),t.next=54;break;case 53:h((null===(i=m.tokenResponse)||void 0===i?void 0:i.access_token)?"Already authorized":"No authorization needed");case 54:if(!S){t.next=57;break}return t.next=57,s.set(p.SMART_KEY,v);case 57:return T=new l.default(e,m),h("Created client instance: %O",T),t.abrupt("return",T);case 60:case"end":return t.stop()}}),t)}))),k.apply(this,arguments)}function O(t,e){return E.apply(this,arguments)}function E(){return(E=(0,a.default)(o.default.mark((function t(e,r){var n,i,a,s,u,c,l,p,d,v,y,g,b,m;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.code,i=r.state,a=r.clientPublicKeySetUrl,s=r.privateKey,u=i.redirectUri,c=i.clientSecret,l=i.tokenUri,p=i.clientId,d=i.codeVerifier,(0,f.assert)(u,"Missing state.redirectUri"),(0,f.assert)(l,"Missing state.tokenUri"),(0,f.assert)(p,"Missing state.clientId"),v={method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:"code=".concat(n,"&grant_type=authorization_code&redirect_uri=").concat(encodeURIComponent(u))},!c){t.next=11;break}v.headers.authorization="Basic "+e.btoa(p+":"+c),h("Using state.clientSecret to construct the authorization header: %s",v.headers.authorization),t.next=32;break;case 11:if(!s){t.next=30;break}if(!("key"in s)){t.next=16;break}t.t0=s.key,t.next=19;break;case 16:return t.next=18,e.security.importJWK(s);case 18:t.t0=t.sent;case 19:return y=t.t0,g={typ:"JWT",kid:s.kid,jku:a||i.clientPublicKeySetUrl},b={iss:p,sub:p,aud:l,jti:e.base64urlencode(e.security.randomBytes(32)),exp:(0,f.getTimeInFuture)(120)},t.next=24,e.security.signCompactJws(s.alg,y,g,b);case 24:m=t.sent,v.body+="&client_assertion_type=".concat(encodeURIComponent("urn:ietf:params:oauth:client-assertion-type:jwt-bearer")),v.body+="&client_assertion=".concat(encodeURIComponent(m)),h("Using state.clientPrivateJwk to add a client_assertion to the POST body"),t.next=32;break;case 30:h("Public client detected; adding state.clientId to the POST body"),v.body+="&client_id=".concat(encodeURIComponent(p));case 32:return d&&(h("Found state.codeVerifier, adding to the POST body"),v.body+="&code_verifier="+d),t.abrupt("return",v);case 34:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function P(){return(P=(0,a.default)(o.default.mark((function t(e,r,n){var i,a,s,u,c,f;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=e.getUrl(),a=i.searchParams.get("code"),s=i.searchParams.get("state"),!a||!s){t.next=5;break}return t.abrupt("return",A(e,n));case 5:if(u=e.getStorage(),t.t0=s,t.t0){t.next=11;break}return t.next=10,u.get(p.SMART_KEY);case 10:t.t0=t.sent;case 11:return c=t.t0,t.next=14,u.get(c);case 14:if(!(f=t.sent)){t.next=17;break}return t.abrupt("return",new l.default(e,f));case 17:return t.abrupt("return",g(e,r).then((function(){return new Promise((function(){}))})));case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}e.fetchWellKnownJson=v,e.getSecurityExtensions=y,e.authorize=g,e.isInFrame=w,e.isInPopUp=x,e.onMessage=S,e.ready=A,e.buildTokenRequest=O,e.init=function(t,e,r){return P.apply(this,arguments)}},4944:function(t,e,r){"use strict";var n=r(4994),o=n(r(4756));r(9432);var i=n(r(9293)),a=n(r(7383)),s=n(r(4579));Object.defineProperty(e,"__esModule",{value:!0});var u=function(){return(0,s.default)((function t(){(0,a.default)(this,t)}),[{key:"get",value:(r=(0,i.default)(o.default.mark((function t(e){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=sessionStorage[e])){t.next=3;break}return t.abrupt("return",JSON.parse(r));case 3:return t.abrupt("return",null);case 4:case"end":return t.stop()}}),t)}))),function(t){return r.apply(this,arguments)})},{key:"set",value:(e=(0,i.default)(o.default.mark((function t(e,r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return sessionStorage[e]=JSON.stringify(r),t.abrupt("return",r);case 2:case"end":return t.stop()}}),t)}))),function(t,r){return e.apply(this,arguments)})},{key:"unset",value:(t=(0,i.default)(o.default.mark((function t(e){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e in sessionStorage)){t.next=3;break}return delete sessionStorage[e],t.abrupt("return",!0);case 3:return t.abrupt("return",!1);case 4:case"end":return t.stop()}}),t)}))),function(e){return t.apply(this,arguments)})}]);var t,e,r}();e.default=u},945:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={expired:"Session expired! Please re-launch the app",noScopeForId:"Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.",noIfNoAuth:"You are trying to get %s but the app is not authorized yet.",noFreeContext:"Please don't use open fhir servers if you need to access launch context items like the %S."}},4945:function(t,e){var r="undefined"!=typeof self?self:this,n=function(){function t(){this.fetch=!1,this.DOMException=r.DOMException}return t.prototype=r,new t}();!function(t){!function(e){var r="URLSearchParams"in t,n="Symbol"in t&&"iterator"in Symbol,o="FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),i="FormData"in t,a="ArrayBuffer"in t;if(a)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(t){return t&&s.indexOf(Object.prototype.toString.call(t))>-1};function c(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function f(t){return"string"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n&&(e[Symbol.iterator]=function(){return e}),e}function p(t){this.map={},t instanceof p?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function h(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function d(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function v(t){var e=new FileReader,r=d(e);return e.readAsArrayBuffer(t),r}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function g(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:o&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:i&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:r&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():a&&o&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):a&&(ArrayBuffer.prototype.isPrototypeOf(t)||u(t))?this._bodyArrayBuffer=y(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},o&&(this.blob=function(){var t=h(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(v)}),this.text=function(){var t,e,r,n=h(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,r=d(e=new FileReader),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?n:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}function w(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}})),e}function x(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new p(e.headers),this.url=e.url||"",this._initBody(t)}m.prototype.clone=function(){return new m(this,{body:this._bodyInit})},g.call(m.prototype),g.call(x.prototype),x.prototype.clone=function(){return new x(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},x.error=function(){var t=new x(null,{status:0,statusText:""});return t.type="error",t};var S=[301,302,303,307,308];x.redirect=function(t,e){if(-1===S.indexOf(e))throw new RangeError("Invalid status code");return new x(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function A(t,r){return new Promise((function(n,i){var a=new m(t,r);if(a.signal&&a.signal.aborted)return i(new e.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function u(){s.abort()}s.onload=function(){var t,e,r={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||"",e=new p,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}})),e)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var o="response"in s?s.response:s.responseText;n(new x(o,r))},s.onerror=function(){i(new TypeError("Network request failed"))},s.ontimeout=function(){i(new TypeError("Network request failed"))},s.onabort=function(){i(new e.DOMException("Aborted","AbortError"))},s.open(a.method,a.url,!0),"include"===a.credentials?s.withCredentials=!0:"omit"===a.credentials&&(s.withCredentials=!1),"responseType"in s&&o&&(s.responseType="blob"),a.headers.forEach((function(t,e){s.setRequestHeader(e,t)})),a.signal&&(a.signal.addEventListener("abort",u),s.onreadystatechange=function(){4===s.readyState&&a.signal.removeEventListener("abort",u)}),s.send(void 0===a._bodyInit?null:a._bodyInit)}))}A.polyfill=!0,t.fetch||(t.fetch=A,t.Headers=p,t.Request=m,t.Response=x),e.Headers=p,e.Request=m,e.Response=x,e.fetch=A,Object.defineProperty(e,"__esModule",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var o=n;(e=o.fetch).default=o.fetch,e.fetch=o.fetch,e.Headers=o.Headers,e.Request=o.Request,e.Response=o.Response,t.exports=e},8127:function(t,e,r){"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r.g&&r.g,t.exports=function(){"use strict";var t,e="3.7.7",r=e,n="function"==typeof Buffer,o="function"==typeof TextDecoder?new TextDecoder:void 0,i="function"==typeof TextEncoder?new TextEncoder:void 0,a=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),s=(t={},a.forEach((function(e,r){return t[e]=r})),t),u=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,c=String.fromCharCode.bind(String),f="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(t){return new Uint8Array(Array.prototype.slice.call(t,0))},l=function(t){return t.replace(/=/g,"").replace(/[+\/]/g,(function(t){return"+"==t?"-":"_"}))},p=function(t){return t.replace(/[^A-Za-z0-9\+\/]/g,"")},h=function(t){for(var e,r,n,o,i="",s=t.length%3,u=0;u255||(n=t.charCodeAt(u++))>255||(o=t.charCodeAt(u++))>255)throw new TypeError("invalid character found");i+=a[(e=r<<16|n<<8|o)>>18&63]+a[e>>12&63]+a[e>>6&63]+a[63&e]}return s?i.slice(0,s-3)+"===".substring(s):i},d="function"==typeof btoa?function(t){return btoa(t)}:n?function(t){return Buffer.from(t,"binary").toString("base64")}:h,v=n?function(t){return Buffer.from(t).toString("base64")}:function(t){for(var e=[],r=0,n=t.length;r>>6)+c(128|63&e):c(224|e>>>12&15)+c(128|e>>>6&63)+c(128|63&e);var e=65536+1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320);return c(240|e>>>18&7)+c(128|e>>>12&63)+c(128|e>>>6&63)+c(128|63&e)},b=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,m=function(t){return t.replace(b,g)},w=n?function(t){return Buffer.from(t,"utf8").toString("base64")}:i?function(t){return v(i.encode(t))}:function(t){return d(m(t))},x=function(t,e){return void 0===e&&(e=!1),e?l(w(t)):w(t)},S=function(t){return x(t,!0)},A=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,k=function(t){switch(t.length){case 4:var e=((7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3))-65536;return c(55296+(e>>>10))+c(56320+(1023&e));case 3:return c((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return c((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},O=function(t){return t.replace(A,k)},E=function(t){if(t=t.replace(/\s+/g,""),!u.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(3&t.length));for(var e,r,n,o="",i=0;i>16&255):64===n?c(e>>16&255,e>>8&255):c(e>>16&255,e>>8&255,255&e);return o},P="function"==typeof atob?function(t){return atob(p(t))}:n?function(t){return Buffer.from(t,"base64").toString("binary")}:E,C=n?function(t){return f(Buffer.from(t,"base64"))}:function(t){return f(P(t).split("").map((function(t){return t.charCodeAt(0)})))},R=function(t){return C(T(t))},_=n?function(t){return Buffer.from(t,"base64").toString("utf8")}:o?function(t){return o.decode(C(t))}:function(t){return O(P(t))},T=function(t){return p(t.replace(/[-_]/g,(function(t){return"-"==t?"+":"/"})))},j=function(t){return _(T(t))},U=function(t){return{value:t,enumerable:!1,writable:!0,configurable:!0}},I=function(){var t=function(t,e){return Object.defineProperty(String.prototype,t,U(e))};t("fromBase64",(function(){return j(this)})),t("toBase64",(function(t){return x(this,t)})),t("toBase64URI",(function(){return x(this,!0)})),t("toBase64URL",(function(){return x(this,!0)})),t("toUint8Array",(function(){return R(this)}))},F=function(){var t=function(t,e){return Object.defineProperty(Uint8Array.prototype,t,U(e))};t("toBase64",(function(t){return y(this,t)})),t("toBase64URI",(function(){return y(this,!0)})),t("toBase64URL",(function(){return y(this,!0)}))},M={version:e,VERSION:r,atob:P,atobPolyfill:E,btoa:d,btoaPolyfill:h,fromBase64:j,toBase64:x,encode:x,encodeURI:S,encodeURL:S,utob:m,btou:O,decode:j,isValid:function(t){if("string"!=typeof t)return!1;var e=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},fromUint8Array:y,toUint8Array:R,extendString:I,extendUint8Array:F,extendBuiltins:function(){I(),F()},Base64:{}};return Object.keys(M).forEach((function(t){return M.Base64[t]=M[t]})),M}()},6585:function(t){var e=1e3,r=60*e,n=60*r,o=24*n,i=7*o;function a(t,e,r,n){var o=e>=1.5*r;return Math.round(t/r)+" "+n+(o?"s":"")}t.exports=function(t,s){s=s||{};var u,c,f=typeof t;if("string"===f&&t.length>0)return function(t){if(!((t=String(t)).length>100)){var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(a){var s=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*s;case"weeks":case"week":case"w":return s*i;case"days":case"day":case"d":return s*o;case"hours":case"hour":case"hrs":case"hr":case"h":return s*n;case"minutes":case"minute":case"mins":case"min":case"m":return s*r;case"seconds":case"second":case"secs":case"sec":case"s":return s*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}}}(t);if("number"===f&&isFinite(t))return s.long?(u=t,(c=Math.abs(u))>=o?a(u,c,o,"day"):c>=n?a(u,c,n,"hour"):c>=r?a(u,c,r,"minute"):c>=e?a(u,c,e,"second"):u+" ms"):function(t){var i=Math.abs(t);return i>=o?Math.round(t/o)+"d":i>=n?Math.round(t/n)+"h":i>=r?Math.round(t/r)+"m":i>=e?Math.round(t/e)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},79:function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),c=a.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:I(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},r}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},5636:function(t){function e(r,n){return t.exports=e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r,n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},1132:function(t,e,r){var n=r(5901),o=r(9291),i=r(7122),a=r(1869);t.exports=function(t){return n(t)||o(t)||i(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},9045:function(t,e,r){var n=r(3738).default;t.exports=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},7736:function(t,e,r){var n=r(3738).default,o=r(9045);t.exports=function(t){var e=o(t,"string");return"symbol"==n(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},3738:function(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},7122:function(t,e,r){var n=r(79);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}},t.exports.__esModule=!0,t.exports.default=t.exports},1837:function(t,e,r){var n=r(3072),o=r(5636),i=r(691),a=r(9646);function s(e){var r="function"==typeof Map?new Map:void 0;return t.exports=s=function(t){if(null===t||!i(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,e)}function e(){return a(t,arguments,n(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),o(e,t)},t.exports.__esModule=!0,t.exports.default=t.exports,s(e)}t.exports=s,t.exports.__esModule=!0,t.exports.default=t.exports},4756:function(t,e,r){var n=r(4633)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},9306:function(t,e,r){"use strict";var n=r(4901),o=r(6823),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a function")}},5548:function(t,e,r){"use strict";var n=r(3517),o=r(6823),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a constructor")}},3506:function(t,e,r){"use strict";var n=r(3925),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},6469:function(t,e,r){"use strict";var n=r(8227),o=r(2360),i=r(4913).f,a=n("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:o(null)}),t.exports=function(t){s[a][t]=!0}},7829:function(t,e,r){"use strict";var n=r(8183).charAt;t.exports=function(t,e,r){return e+(r?n(t,e).length:1)}},679:function(t,e,r){"use strict";var n=r(1625),o=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw new o("Incorrect invocation")}},8551:function(t,e,r){"use strict";var n=r(34),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not an object")}},7811:function(t){"use strict";t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},4644:function(t,e,r){"use strict";var n,o,i,a=r(7811),s=r(3724),u=r(4576),c=r(4901),f=r(34),l=r(9297),p=r(6955),h=r(6823),d=r(6699),v=r(6840),y=r(2106),g=r(1625),b=r(2787),m=r(2967),w=r(8227),x=r(3392),S=r(1181),A=S.enforce,k=S.get,O=u.Int8Array,E=O&&O.prototype,P=u.Uint8ClampedArray,C=P&&P.prototype,R=O&&b(O),_=E&&b(E),T=Object.prototype,j=u.TypeError,U=w("toStringTag"),I=x("TYPED_ARRAY_TAG"),F="TypedArrayConstructor",M=a&&!!m&&"Opera"!==p(u.opera),L=!1,B={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},N={BigInt64Array:8,BigUint64Array:8},D=function(t){var e=b(t);if(f(e)){var r=k(e);return r&&l(r,F)?r[F]:D(e)}},K=function(t){if(!f(t))return!1;var e=p(t);return l(B,e)||l(N,e)};for(n in B)(i=(o=u[n])&&o.prototype)?A(i)[F]=o:M=!1;for(n in N)(i=(o=u[n])&&o.prototype)&&(A(i)[F]=o);if((!M||!c(R)||R===Function.prototype)&&(R=function(){throw new j("Incorrect invocation")},M))for(n in B)u[n]&&m(u[n],R);if((!M||!_||_===T)&&(_=R.prototype,M))for(n in B)u[n]&&m(u[n].prototype,_);if(M&&b(C)!==_&&m(C,_),s&&!l(_,U))for(n in L=!0,y(_,U,{configurable:!0,get:function(){return f(this)?this[I]:void 0}}),B)u[n]&&d(u[n],I,n);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:M,TYPED_ARRAY_TAG:L&&I,aTypedArray:function(t){if(K(t))return t;throw new j("Target is not a typed array")},aTypedArrayConstructor:function(t){if(c(t)&&(!m||g(R,t)))return t;throw new j(h(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,r,n){if(s){if(r)for(var o in B){var i=u[o];if(i&&l(i.prototype,t))try{delete i.prototype[t]}catch(r){try{i.prototype[t]=e}catch(t){}}}_[t]&&!r||v(_,t,r?e:M&&E[t]||e,n)}},exportTypedArrayStaticMethod:function(t,e,r){var n,o;if(s){if(m){if(r)for(n in B)if((o=u[n])&&l(o,t))try{delete o[t]}catch(t){}if(R[t]&&!r)return;try{return v(R,t,r?e:M&&R[t]||e)}catch(t){}}for(n in B)!(o=u[n])||o[t]&&!r||v(o,t,e)}},getTypedArrayConstructor:D,isView:function(t){if(!f(t))return!1;var e=p(t);return"DataView"===e||l(B,e)||l(N,e)},isTypedArray:K,TypedArray:R,TypedArrayPrototype:_}},6346:function(t,e,r){"use strict";var n=r(4576),o=r(9504),i=r(3724),a=r(7811),s=r(350),u=r(6699),c=r(2106),f=r(6279),l=r(9039),p=r(679),h=r(1291),d=r(8014),v=r(7696),y=r(5617),g=r(8490),b=r(2787),m=r(2967),w=r(4373),x=r(7680),S=r(3167),A=r(7740),k=r(687),O=r(1181),E=s.PROPER,P=s.CONFIGURABLE,C="ArrayBuffer",R="DataView",_="prototype",T="Wrong index",j=O.getterFor(C),U=O.getterFor(R),I=O.set,F=n[C],M=F,L=M&&M[_],B=n[R],N=B&&B[_],D=Object.prototype,K=n.Array,q=n.RangeError,H=o(w),z=o([].reverse),G=g.pack,J=g.unpack,V=function(t){return[255&t]},W=function(t){return[255&t,t>>8&255]},Y=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},$=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},Z=function(t){return G(y(t),23,4)},Q=function(t){return G(t,52,8)},X=function(t,e,r){c(t[_],e,{configurable:!0,get:function(){return r(this)[e]}})},tt=function(t,e,r,n){var o=U(t),i=v(r),a=!!n;if(i+e>o.byteLength)throw new q(T);var s=o.bytes,u=i+o.byteOffset,c=x(s,u,u+e);return a?c:z(c)},et=function(t,e,r,n,o,i){var a=U(t),s=v(r),u=n(+o),c=!!i;if(s+e>a.byteLength)throw new q(T);for(var f=a.bytes,l=s+a.byteOffset,p=0;p>24)},setUint8:function(t,e){ot(this,t,e<<24>>24)}},{unsafe:!0})}else L=(M=function(t){p(this,L);var e=v(t);I(this,{type:C,bytes:H(K(e),0),byteLength:e}),i||(this.byteLength=e,this.detached=!1)})[_],N=(B=function(t,e,r){p(this,N),p(t,L);var n=j(t),o=n.byteLength,a=h(e);if(a<0||a>o)throw new q("Wrong offset");if(a+(r=void 0===r?o-a:d(r))>o)throw new q("Wrong length");I(this,{type:R,buffer:t,byteLength:r,byteOffset:a,bytes:n.bytes}),i||(this.buffer=t,this.byteLength=r,this.byteOffset=a)})[_],i&&(X(M,"byteLength",j),X(B,"buffer",U),X(B,"byteLength",U),X(B,"byteOffset",U)),f(N,{getInt8:function(t){return tt(this,1,t)[0]<<24>>24},getUint8:function(t){return tt(this,1,t)[0]},getInt16:function(t){var e=tt(this,2,t,arguments.length>1&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=tt(this,2,t,arguments.length>1&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return $(tt(this,4,t,arguments.length>1&&arguments[1]))},getUint32:function(t){return $(tt(this,4,t,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(t){return J(tt(this,4,t,arguments.length>1&&arguments[1]),23)},getFloat64:function(t){return J(tt(this,8,t,arguments.length>1&&arguments[1]),52)},setInt8:function(t,e){et(this,1,t,V,e)},setUint8:function(t,e){et(this,1,t,V,e)},setInt16:function(t,e){et(this,2,t,W,e,arguments.length>2&&arguments[2])},setUint16:function(t,e){et(this,2,t,W,e,arguments.length>2&&arguments[2])},setInt32:function(t,e){et(this,4,t,Y,e,arguments.length>2&&arguments[2])},setUint32:function(t,e){et(this,4,t,Y,e,arguments.length>2&&arguments[2])},setFloat32:function(t,e){et(this,4,t,Z,e,arguments.length>2&&arguments[2])},setFloat64:function(t,e){et(this,8,t,Q,e,arguments.length>2&&arguments[2])}});k(M,C),k(B,R),t.exports={ArrayBuffer:M,DataView:B}},7029:function(t,e,r){"use strict";var n=r(8981),o=r(5610),i=r(6198),a=r(4606),s=Math.min;t.exports=[].copyWithin||function(t,e){var r=n(this),u=i(r),c=o(t,u),f=o(e,u),l=arguments.length>2?arguments[2]:void 0,p=s((void 0===l?u:o(l,u))-f,u-c),h=1;for(f0;)f in r?r[c]=r[f]:a(r,c),c+=h,f+=h;return r}},4373:function(t,e,r){"use strict";var n=r(8981),o=r(5610),i=r(6198);t.exports=function(t){for(var e=n(this),r=i(e),a=arguments.length,s=o(a>1?arguments[1]:void 0,r),u=a>2?arguments[2]:void 0,c=void 0===u?r:o(u,r);c>s;)e[s++]=t;return e}},235:function(t,e,r){"use strict";var n=r(9213).forEach,o=r(4598)("forEach");t.exports=o?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},5370:function(t,e,r){"use strict";var n=r(6198);t.exports=function(t,e,r){for(var o=0,i=arguments.length>2?r:n(e),a=new t(i);i>o;)a[o]=e[o++];return a}},7916:function(t,e,r){"use strict";var n=r(6080),o=r(9565),i=r(8981),a=r(6319),s=r(4209),u=r(3517),c=r(6198),f=r(4659),l=r(81),p=r(851),h=Array;t.exports=function(t){var e=i(t),r=u(this),d=arguments.length,v=d>1?arguments[1]:void 0,y=void 0!==v;y&&(v=n(v,d>2?arguments[2]:void 0));var g,b,m,w,x,S,A=p(e),k=0;if(!A||this===h&&s(A))for(g=c(e),b=r?new this(g):h(g);g>k;k++)S=y?v(e[k],k):e[k],f(b,k,S);else for(b=r?new this:[],x=(w=l(e,A)).next;!(m=o(x,w)).done;k++)S=y?a(w,v,[m.value,k],!0):m.value,f(b,k,S);return b.length=k,b}},9617:function(t,e,r){"use strict";var n=r(5397),o=r(5610),i=r(6198),a=function(t){return function(e,r,a){var s=n(e),u=i(s);if(0===u)return!t&&-1;var c,f=o(a,u);if(t&&r!=r){for(;u>f;)if((c=s[f++])!=c)return!0}else for(;u>f;f++)if((t||f in s)&&s[f]===r)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},9213:function(t,e,r){"use strict";var n=r(6080),o=r(9504),i=r(7055),a=r(8981),s=r(6198),u=r(1469),c=o([].push),f=function(t){var e=1===t,r=2===t,o=3===t,f=4===t,l=6===t,p=7===t,h=5===t||l;return function(d,v,y,g){for(var b,m,w=a(d),x=i(w),S=s(x),A=n(v,y),k=0,O=g||u,E=e?O(d,S):r||p?O(d,0):void 0;S>k;k++)if((h||k in x)&&(m=A(b=x[k],k,w),t))if(e)E[k]=m;else if(m)switch(t){case 3:return!0;case 5:return b;case 6:return k;case 2:c(E,b)}else switch(t){case 4:return!1;case 7:c(E,b)}return l?-1:o||f?f:E}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},8379:function(t,e,r){"use strict";var n=r(8745),o=r(5397),i=r(1291),a=r(6198),s=r(4598),u=Math.min,c=[].lastIndexOf,f=!!c&&1/[1].lastIndexOf(1,-0)<0,l=s("lastIndexOf"),p=f||!l;t.exports=p?function(t){if(f)return n(c,this,arguments)||0;var e=o(this),r=a(e);if(0===r)return-1;var s=r-1;for(arguments.length>1&&(s=u(s,i(arguments[1]))),s<0&&(s=r+s);s>=0;s--)if(s in e&&e[s]===t)return s||0;return-1}:c},597:function(t,e,r){"use strict";var n=r(9039),o=r(8227),i=r(9519),a=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},4598:function(t,e,r){"use strict";var n=r(9039);t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){return 1},1)}))}},926:function(t,e,r){"use strict";var n=r(9306),o=r(8981),i=r(7055),a=r(6198),s=TypeError,u="Reduce of empty array with no initial value",c=function(t){return function(e,r,c,f){var l=o(e),p=i(l),h=a(l);if(n(r),0===h&&c<2)throw new s(u);var d=t?h-1:0,v=t?-1:1;if(c<2)for(;;){if(d in p){f=p[d],d+=v;break}if(d+=v,t?d<0:h<=d)throw new s(u)}for(;t?d>=0:h>d;d+=v)d in p&&(f=r(f,p[d],d,l));return f}};t.exports={left:c(!1),right:c(!0)}},4527:function(t,e,r){"use strict";var n=r(3724),o=r(4376),i=TypeError,a=Object.getOwnPropertyDescriptor,s=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(o(t)&&!a(t,"length").writable)throw new i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},7680:function(t,e,r){"use strict";var n=r(9504);t.exports=n([].slice)},4488:function(t,e,r){"use strict";var n=r(7680),o=Math.floor,i=function(t,e){var r=t.length;if(r<8)for(var a,s,u=1;u0;)t[s]=t[--s];s!==u++&&(t[s]=a)}else for(var c=o(r/2),f=i(n(t,0,c),e),l=i(n(t,c),e),p=f.length,h=l.length,d=0,v=0;d"+u+""}},2529:function(t){"use strict";t.exports=function(t,e){return{value:t,done:e}}},6699:function(t,e,r){"use strict";var n=r(3724),o=r(4913),i=r(6980);t.exports=n?function(t,e,r){return o.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},6980:function(t){"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},4659:function(t,e,r){"use strict";var n=r(3724),o=r(4913),i=r(6980);t.exports=function(t,e,r){n?o.f(t,e,i(0,r)):t[e]=r}},2106:function(t,e,r){"use strict";var n=r(283),o=r(4913);t.exports=function(t,e,r){return r.get&&n(r.get,e,{getter:!0}),r.set&&n(r.set,e,{setter:!0}),o.f(t,e,r)}},6840:function(t,e,r){"use strict";var n=r(4901),o=r(4913),i=r(283),a=r(9433);t.exports=function(t,e,r,s){s||(s={});var u=s.enumerable,c=void 0!==s.name?s.name:e;if(n(r)&&i(r,c,s),s.global)u?t[e]=r:a(e,r);else{try{s.unsafe?t[e]&&(u=!0):delete t[e]}catch(t){}u?t[e]=r:o.f(t,e,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},6279:function(t,e,r){"use strict";var n=r(6840);t.exports=function(t,e,r){for(var o in e)n(t,o,e[o],r);return t}},9433:function(t,e,r){"use strict";var n=r(4576),o=Object.defineProperty;t.exports=function(t,e){try{o(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},4606:function(t,e,r){"use strict";var n=r(6823),o=TypeError;t.exports=function(t,e){if(!delete t[e])throw new o("Cannot delete property "+n(e)+" of "+n(t))}},3724:function(t,e,r){"use strict";var n=r(9039);t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:function(t,e,r){"use strict";var n=r(4576),o=r(34),i=n.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},6837:function(t){"use strict";var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},7400:function(t){"use strict";t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},9296:function(t,e,r){"use strict";var n=r(4055)("span").classList,o=n&&n.constructor&&n.constructor.prototype;t.exports=o===Object.prototype?void 0:o},8727:function(t){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},3709:function(t,e,r){"use strict";var n=r(2839).match(/firefox\/(\d+)/i);t.exports=!!n&&+n[1]},3763:function(t,e,r){"use strict";var n=r(2839);t.exports=/MSIE|Trident/.test(n)},4265:function(t,e,r){"use strict";var n=r(2839);t.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},9544:function(t,e,r){"use strict";var n=r(2839);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},6193:function(t,e,r){"use strict";var n=r(4215);t.exports="NODE"===n},7860:function(t,e,r){"use strict";var n=r(2839);t.exports=/web0s(?!.*chrome)/i.test(n)},2839:function(t,e,r){"use strict";var n=r(4576).navigator,o=n&&n.userAgent;t.exports=o?String(o):""},9519:function(t,e,r){"use strict";var n,o,i=r(4576),a=r(2839),s=i.process,u=i.Deno,c=s&&s.versions||u&&u.version,f=c&&c.v8;f&&(o=(n=f.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=+n[1]),t.exports=o},3607:function(t,e,r){"use strict";var n=r(2839).match(/AppleWebKit\/(\d+)\./);t.exports=!!n&&+n[1]},4215:function(t,e,r){"use strict";var n=r(4576),o=r(2839),i=r(2195),a=function(t){return o.slice(0,t.length)===t};t.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},6518:function(t,e,r){"use strict";var n=r(4576),o=r(7347).f,i=r(6699),a=r(6840),s=r(9433),u=r(7740),c=r(2796);t.exports=function(t,e){var r,f,l,p,h,d=t.target,v=t.global,y=t.stat;if(r=v?n:y?n[d]||s(d,{}):n[d]&&n[d].prototype)for(f in e){if(p=e[f],l=t.dontCallGetSet?(h=o(r,f))&&h.value:r[f],!c(v?f:d+(y?".":"#")+f,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;u(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),a(r,f,p,t)}}},9039:function(t){"use strict";t.exports=function(t){try{return!!t()}catch(t){return!0}}},9228:function(t,e,r){"use strict";r(7495);var n=r(9565),o=r(6840),i=r(7323),a=r(9039),s=r(8227),u=r(6699),c=s("species"),f=RegExp.prototype;t.exports=function(t,e,r,l){var p=s(t),h=!a((function(){var e={};return e[p]=function(){return 7},7!==""[t](e)})),d=h&&!a((function(){var e=!1,r=/a/;return"split"===t&&((r={}).constructor={},r.constructor[c]=function(){return r},r.flags="",r[p]=/./[p]),r.exec=function(){return e=!0,null},r[p](""),!e}));if(!h||!d||r){var v=/./[p],y=e(p,""[t],(function(t,e,r,o,a){var s=e.exec;return s===i||s===f.exec?h&&!a?{done:!0,value:n(v,e,r,o)}:{done:!0,value:n(t,r,e,o)}:{done:!1}}));o(String.prototype,t,y[0]),o(f,p,y[1])}l&&u(f[p],"sham",!0)}},259:function(t,e,r){"use strict";var n=r(4376),o=r(6198),i=r(6837),a=r(6080),s=function(t,e,r,u,c,f,l,p){for(var h,d,v=c,y=0,g=!!l&&a(l,p);y0&&n(h)?(d=o(h),v=s(t,e,h,d,v,f-1)-1):(i(v+1),t[v]=h),v++),y++;return v};t.exports=s},8745:function(t,e,r){"use strict";var n=r(616),o=Function.prototype,i=o.apply,a=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(i):function(){return a.apply(i,arguments)})},6080:function(t,e,r){"use strict";var n=r(7476),o=r(9306),i=r(616),a=n(n.bind);t.exports=function(t,e){return o(t),void 0===e?t:i?a(t,e):function(){return t.apply(e,arguments)}}},616:function(t,e,r){"use strict";var n=r(9039);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},566:function(t,e,r){"use strict";var n=r(9504),o=r(9306),i=r(34),a=r(9297),s=r(7680),u=r(616),c=Function,f=n([].concat),l=n([].join),p={};t.exports=u?c.bind:function(t){var e=o(this),r=e.prototype,n=s(arguments,1),u=function(){var r=f(n,s(arguments));return this instanceof u?function(t,e,r){if(!a(p,e)){for(var n=[],o=0;o]*>)/g,f=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,r,n,l,p){var h=r+t.length,d=n.length,v=f;return void 0!==l&&(l=o(l),v=c),s(p,v,(function(o,s){var c;switch(a(s,0)){case"$":return"$";case"&":return t;case"`":return u(e,0,r);case"'":return u(e,h);case"<":c=l[u(s,1,-1)];break;default:var f=+s;if(0===f)return o;if(f>d){var p=i(f/10);return 0===p?o:p<=d?void 0===n[p-1]?a(s,1):n[p-1]+a(s,1):o}c=n[f-1]}return void 0===c?"":c}))}},4576:function(t,e,r){"use strict";var n=function(t){return t&&t.Math===Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:function(t,e,r){"use strict";var n=r(9504),o=r(8981),i=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(o(t),e)}},421:function(t){"use strict";t.exports={}},3138:function(t){"use strict";t.exports=function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}},397:function(t,e,r){"use strict";var n=r(7751);t.exports=n("document","documentElement")},5917:function(t,e,r){"use strict";var n=r(3724),o=r(9039),i=r(4055);t.exports=!n&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8490:function(t){"use strict";var e=Array,r=Math.abs,n=Math.pow,o=Math.floor,i=Math.log,a=Math.LN2;t.exports={pack:function(t,s,u){var c,f,l,p=e(u),h=8*u-s-1,d=(1<>1,y=23===s?n(2,-24)-n(2,-77):0,g=t<0||0===t&&1/t<0?1:0,b=0;for((t=r(t))!=t||t===1/0?(f=t!=t?1:0,c=d):(c=o(i(t)/a),t*(l=n(2,-c))<1&&(c--,l*=2),(t+=c+v>=1?y/l:y*n(2,1-v))*l>=2&&(c++,l/=2),c+v>=d?(f=0,c=d):c+v>=1?(f=(t*l-1)*n(2,s),c+=v):(f=t*n(2,v-1)*n(2,s),c=0));s>=8;)p[b++]=255&f,f/=256,s-=8;for(c=c<0;)p[b++]=255&c,c/=256,h-=8;return p[b-1]|=128*g,p},unpack:function(t,e){var r,o=t.length,i=8*o-e-1,a=(1<>1,u=i-7,c=o-1,f=t[c--],l=127&f;for(f>>=7;u>0;)l=256*l+t[c--],u-=8;for(r=l&(1<<-u)-1,l>>=-u,u+=e;u>0;)r=256*r+t[c--],u-=8;if(0===l)l=1-s;else{if(l===a)return r?NaN:f?-1/0:1/0;r+=n(2,e),l-=s}return(f?-1:1)*r*n(2,l-e)}}},7055:function(t,e,r){"use strict";var n=r(9504),o=r(9039),i=r(2195),a=Object,s=n("".split);t.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"===i(t)?s(t,""):a(t)}:a},3167:function(t,e,r){"use strict";var n=r(4901),o=r(34),i=r(2967);t.exports=function(t,e,r){var a,s;return i&&n(a=e.constructor)&&a!==r&&o(s=a.prototype)&&s!==r.prototype&&i(t,s),t}},3706:function(t,e,r){"use strict";var n=r(9504),o=r(4901),i=r(7629),a=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},1181:function(t,e,r){"use strict";var n,o,i,a=r(8622),s=r(4576),u=r(34),c=r(6699),f=r(9297),l=r(7629),p=r(6119),h=r(421),d="Object already initialized",v=s.TypeError,y=s.WeakMap;if(a||l.state){var g=l.state||(l.state=new y);g.get=g.get,g.has=g.has,g.set=g.set,n=function(t,e){if(g.has(t))throw new v(d);return e.facade=t,g.set(t,e),e},o=function(t){return g.get(t)||{}},i=function(t){return g.has(t)}}else{var b=p("state");h[b]=!0,n=function(t,e){if(f(t,b))throw new v(d);return e.facade=t,c(t,b,e),e},o=function(t){return f(t,b)?t[b]:{}},i=function(t){return f(t,b)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!u(e)||(r=o(e)).type!==t)throw new v("Incompatible receiver, "+t+" required");return r}}}},4209:function(t,e,r){"use strict";var n=r(8227),o=r(6269),i=n("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},4376:function(t,e,r){"use strict";var n=r(2195);t.exports=Array.isArray||function(t){return"Array"===n(t)}},1108:function(t,e,r){"use strict";var n=r(6955);t.exports=function(t){var e=n(t);return"BigInt64Array"===e||"BigUint64Array"===e}},4901:function(t){"use strict";var e="object"==typeof document&&document.all;t.exports=void 0===e&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},3517:function(t,e,r){"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(6955),s=r(7751),u=r(3706),c=function(){},f=s("Reflect","construct"),l=/^\s*(?:class|function)\b/,p=n(l.exec),h=!l.test(c),d=function(t){if(!i(t))return!1;try{return f(c,[],t),!0}catch(t){return!1}},v=function(t){if(!i(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!p(l,u(t))}catch(t){return!0}};v.sham=!0,t.exports=!f||o((function(){var t;return d(d.call)||!d(Object)||!d((function(){t=!0}))||t}))?v:d},2796:function(t,e,r){"use strict";var n=r(9039),o=r(4901),i=/#|\.prototype\./,a=function(t,e){var r=u[s(t)];return r===f||r!==c&&(o(e)?n(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},u=a.data={},c=a.NATIVE="N",f=a.POLYFILL="P";t.exports=a},2087:function(t,e,r){"use strict";var n=r(34),o=Math.floor;t.exports=Number.isInteger||function(t){return!n(t)&&isFinite(t)&&o(t)===t}},4117:function(t){"use strict";t.exports=function(t){return null==t}},34:function(t,e,r){"use strict";var n=r(4901);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},3925:function(t,e,r){"use strict";var n=r(34);t.exports=function(t){return n(t)||null===t}},6395:function(t){"use strict";t.exports=!1},788:function(t,e,r){"use strict";var n=r(34),o=r(2195),i=r(8227)("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[i])?!!e:"RegExp"===o(t))}},757:function(t,e,r){"use strict";var n=r(7751),o=r(4901),i=r(1625),a=r(7040),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return o(e)&&i(e.prototype,s(t))}},2652:function(t,e,r){"use strict";var n=r(6080),o=r(9565),i=r(8551),a=r(6823),s=r(4209),u=r(6198),c=r(1625),f=r(81),l=r(851),p=r(9539),h=TypeError,d=function(t,e){this.stopped=t,this.result=e},v=d.prototype;t.exports=function(t,e,r){var y,g,b,m,w,x,S,A=r&&r.that,k=!(!r||!r.AS_ENTRIES),O=!(!r||!r.IS_RECORD),E=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),C=n(e,A),R=function(t){return y&&p(y,"normal",t),new d(!0,t)},_=function(t){return k?(i(t),P?C(t[0],t[1],R):C(t[0],t[1])):P?C(t,R):C(t)};if(O)y=t.iterator;else if(E)y=t;else{if(!(g=l(t)))throw new h(a(t)+" is not iterable");if(s(g)){for(b=0,m=u(t);m>b;b++)if((w=_(t[b]))&&c(v,w))return w;return new d(!1)}y=f(t,g)}for(x=O?t.next:y.next;!(S=o(x,y)).done;){try{w=_(S.value)}catch(t){p(y,"throw",t)}if("object"==typeof w&&w&&c(v,w))return w}return new d(!1)}},9539:function(t,e,r){"use strict";var n=r(9565),o=r(8551),i=r(5966);t.exports=function(t,e,r){var a,s;o(t);try{if(!(a=i(t,"return"))){if("throw"===e)throw r;return r}a=n(a,t)}catch(t){s=!0,a=t}if("throw"===e)throw r;if(s)throw a;return o(a),r}},3994:function(t,e,r){"use strict";var n=r(7657).IteratorPrototype,o=r(2360),i=r(6980),a=r(687),s=r(6269),u=function(){return this};t.exports=function(t,e,r,c){var f=e+" Iterator";return t.prototype=o(n,{next:i(+!c,r)}),a(t,f,!1,!0),s[f]=u,t}},1088:function(t,e,r){"use strict";var n=r(6518),o=r(9565),i=r(6395),a=r(350),s=r(4901),u=r(3994),c=r(2787),f=r(2967),l=r(687),p=r(6699),h=r(6840),d=r(8227),v=r(6269),y=r(7657),g=a.PROPER,b=a.CONFIGURABLE,m=y.IteratorPrototype,w=y.BUGGY_SAFARI_ITERATORS,x=d("iterator"),S="keys",A="values",k="entries",O=function(){return this};t.exports=function(t,e,r,a,d,y,E){u(r,e,a);var P,C,R,_=function(t){if(t===d&&F)return F;if(!w&&t&&t in U)return U[t];switch(t){case S:case A:case k:return function(){return new r(this,t)}}return function(){return new r(this)}},T=e+" Iterator",j=!1,U=t.prototype,I=U[x]||U["@@iterator"]||d&&U[d],F=!w&&I||_(d),M="Array"===e&&U.entries||I;if(M&&(P=c(M.call(new t)))!==Object.prototype&&P.next&&(i||c(P)===m||(f?f(P,m):s(P[x])||h(P,x,O)),l(P,T,!0,!0),i&&(v[T]=O)),g&&d===A&&I&&I.name!==A&&(!i&&b?p(U,"name",A):(j=!0,F=function(){return o(I,this)})),d)if(C={values:_(A),keys:y?F:_(S),entries:_(k)},E)for(R in C)(w||j||!(R in U))&&h(U,R,C[R]);else n({target:e,proto:!0,forced:w||j},C);return i&&!E||U[x]===F||h(U,x,F,{name:d}),v[e]=F,C}},7657:function(t,e,r){"use strict";var n,o,i,a=r(9039),s=r(4901),u=r(34),c=r(2360),f=r(2787),l=r(6840),p=r(8227),h=r(6395),d=p("iterator"),v=!1;[].keys&&("next"in(i=[].keys())?(o=f(f(i)))!==Object.prototype&&(n=o):v=!0),!u(n)||a((function(){var t={};return n[d].call(t)!==t}))?n={}:h&&(n=c(n)),s(n[d])||l(n,d,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},6269:function(t){"use strict";t.exports={}},6198:function(t,e,r){"use strict";var n=r(8014);t.exports=function(t){return n(t.length)}},283:function(t,e,r){"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(9297),s=r(3724),u=r(350).CONFIGURABLE,c=r(3706),f=r(1181),l=f.enforce,p=f.get,h=String,d=Object.defineProperty,v=n("".slice),y=n("".replace),g=n([].join),b=s&&!o((function(){return 8!==d((function(){}),"length",{value:8}).length})),m=String(String).split("String"),w=t.exports=function(t,e,r){"Symbol("===v(h(e),0,7)&&(e="["+y(h(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!a(t,"name")||u&&t.name!==e)&&(s?d(t,"name",{value:e,configurable:!0}):t.name=e),b&&r&&a(r,"arity")&&t.length!==r.arity&&d(t,"length",{value:r.arity});try{r&&a(r,"constructor")&&r.constructor?s&&d(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=l(t);return a(n,"source")||(n.source=g(m,"string"==typeof e?e:"")),t};Function.prototype.toString=w((function(){return i(this)&&p(this).source||c(this)}),"toString")},3164:function(t,e,r){"use strict";var n=r(7782),o=Math.abs,i=2220446049250313e-31,a=1/i;t.exports=function(t,e,r,s){var u=+t,c=o(u),f=n(u);if(cr||p!=p?f*(1/0):f*p}},5617:function(t,e,r){"use strict";var n=r(3164);t.exports=Math.fround||function(t){return n(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},7782:function(t){"use strict";t.exports=Math.sign||function(t){var e=+t;return 0===e||e!=e?e:e<0?-1:1}},741:function(t){"use strict";var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var n=+t;return(n>0?r:e)(n)}},1955:function(t,e,r){"use strict";var n,o,i,a,s,u=r(4576),c=r(3389),f=r(6080),l=r(9225).set,p=r(8265),h=r(9544),d=r(4265),v=r(7860),y=r(6193),g=u.MutationObserver||u.WebKitMutationObserver,b=u.document,m=u.process,w=u.Promise,x=c("queueMicrotask");if(!x){var S=new p,A=function(){var t,e;for(y&&(t=m.domain)&&t.exit();e=S.get();)try{e()}catch(t){throw S.head&&n(),t}t&&t.enter()};h||y||v||!g||!b?!d&&w&&w.resolve?((a=w.resolve(void 0)).constructor=w,s=f(a.then,a),n=function(){s(A)}):y?n=function(){m.nextTick(A)}:(l=f(l,u),n=function(){l(A)}):(o=!0,i=b.createTextNode(""),new g(A).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),x=function(t){S.head||n(),S.add(t)}}t.exports=x},6043:function(t,e,r){"use strict";var n=r(9306),o=TypeError,i=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw new o("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new i(t)}},2892:function(t,e,r){"use strict";var n=r(788),o=TypeError;t.exports=function(t){if(n(t))throw new o("The method doesn't accept regular expressions");return t}},4213:function(t,e,r){"use strict";var n=r(3724),o=r(9504),i=r(9565),a=r(9039),s=r(1072),u=r(3717),c=r(8773),f=r(8981),l=r(7055),p=Object.assign,h=Object.defineProperty,d=o([].concat);t.exports=!p||a((function(){if(n&&1!==p({b:1},p(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return t[r]=7,o.split("").forEach((function(t){e[t]=t})),7!==p({},t)[r]||s(p({},e)).join("")!==o}))?function(t,e){for(var r=f(t),o=arguments.length,a=1,p=u.f,h=c.f;o>a;)for(var v,y=l(arguments[a++]),g=p?d(s(y),p(y)):s(y),b=g.length,m=0;b>m;)v=g[m++],n&&!i(h,y,v)||(r[v]=y[v]);return r}:p},2360:function(t,e,r){"use strict";var n,o=r(8551),i=r(6801),a=r(8727),s=r(421),u=r(397),c=r(4055),f=r(6119),l="prototype",p="script",h=f("IE_PROTO"),d=function(){},v=function(t){return"<"+p+">"+t+""},y=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;g="undefined"!=typeof document?document.domain&&n?y(n):(e=c("iframe"),r="java"+p+":",e.style.display="none",u.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F):y(n);for(var o=a.length;o--;)delete g[l][a[o]];return g()};s[h]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(d[l]=o(t),r=new d,d[l]=null,r[h]=t):r=g(),void 0===e?r:i.f(r,e)}},6801:function(t,e,r){"use strict";var n=r(3724),o=r(8686),i=r(4913),a=r(8551),s=r(5397),u=r(1072);e.f=n&&!o?Object.defineProperties:function(t,e){a(t);for(var r,n=s(e),o=u(e),c=o.length,f=0;c>f;)i.f(t,r=o[f++],n[r]);return t}},4913:function(t,e,r){"use strict";var n=r(3724),o=r(5917),i=r(8686),a=r(8551),s=r(6969),u=TypeError,c=Object.defineProperty,f=Object.getOwnPropertyDescriptor,l="enumerable",p="configurable",h="writable";e.f=n?i?function(t,e,r){if(a(t),e=s(e),a(r),"function"==typeof t&&"prototype"===e&&"value"in r&&h in r&&!r[h]){var n=f(t,e);n&&n[h]&&(t[e]=r.value,r={configurable:p in r?r[p]:n[p],enumerable:l in r?r[l]:n[l],writable:!1})}return c(t,e,r)}:c:function(t,e,r){if(a(t),e=s(e),a(r),o)try{return c(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new u("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},7347:function(t,e,r){"use strict";var n=r(3724),o=r(9565),i=r(8773),a=r(6980),s=r(5397),u=r(6969),c=r(9297),f=r(5917),l=Object.getOwnPropertyDescriptor;e.f=n?l:function(t,e){if(t=s(t),e=u(e),f)try{return l(t,e)}catch(t){}if(c(t,e))return a(!o(i.f,t,e),t[e])}},298:function(t,e,r){"use strict";var n=r(2195),o=r(5397),i=r(8480).f,a=r(7680),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return s&&"Window"===n(t)?function(t){try{return i(t)}catch(t){return a(s)}}(t):i(o(t))}},8480:function(t,e,r){"use strict";var n=r(1828),o=r(8727).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},3717:function(t,e){"use strict";e.f=Object.getOwnPropertySymbols},2787:function(t,e,r){"use strict";var n=r(9297),o=r(4901),i=r(8981),a=r(6119),s=r(2211),u=a("IE_PROTO"),c=Object,f=c.prototype;t.exports=s?c.getPrototypeOf:function(t){var e=i(t);if(n(e,u))return e[u];var r=e.constructor;return o(r)&&e instanceof r?r.prototype:e instanceof c?f:null}},1625:function(t,e,r){"use strict";var n=r(9504);t.exports=n({}.isPrototypeOf)},1828:function(t,e,r){"use strict";var n=r(9504),o=r(9297),i=r(5397),a=r(9617).indexOf,s=r(421),u=n([].push);t.exports=function(t,e){var r,n=i(t),c=0,f=[];for(r in n)!o(s,r)&&o(n,r)&&u(f,r);for(;e.length>c;)o(n,r=e[c++])&&(~a(f,r)||u(f,r));return f}},1072:function(t,e,r){"use strict";var n=r(1828),o=r(8727);t.exports=Object.keys||function(t){return n(t,o)}},8773:function(t,e){"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,o=n&&!r.call({1:2},1);e.f=o?function(t){var e=n(this,t);return!!e&&e.enumerable}:r},2967:function(t,e,r){"use strict";var n=r(6706),o=r(34),i=r(7750),a=r(3506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return i(r),a(n),o(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0)},3179:function(t,e,r){"use strict";var n=r(2140),o=r(6955);t.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},4270:function(t,e,r){"use strict";var n=r(9565),o=r(4901),i=r(34),a=TypeError;t.exports=function(t,e){var r,s;if("string"===e&&o(r=t.toString)&&!i(s=n(r,t)))return s;if(o(r=t.valueOf)&&!i(s=n(r,t)))return s;if("string"!==e&&o(r=t.toString)&&!i(s=n(r,t)))return s;throw new a("Can't convert object to primitive value")}},5031:function(t,e,r){"use strict";var n=r(7751),o=r(9504),i=r(8480),a=r(3717),s=r(8551),u=o([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=i.f(s(t)),r=a.f;return r?u(e,r(t)):e}},9167:function(t,e,r){"use strict";var n=r(4576);t.exports=n},1103:function(t){"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},916:function(t,e,r){"use strict";var n=r(4576),o=r(550),i=r(4901),a=r(2796),s=r(3706),u=r(8227),c=r(4215),f=r(6395),l=r(9519),p=o&&o.prototype,h=u("species"),d=!1,v=i(n.PromiseRejectionEvent),y=a("Promise",(function(){var t=s(o),e=t!==String(o);if(!e&&66===l)return!0;if(f&&(!p.catch||!p.finally))return!0;if(!l||l<51||!/native code/.test(t)){var r=new o((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))};if((r.constructor={})[h]=n,!(d=r.then((function(){}))instanceof n))return!0}return!(e||"BROWSER"!==c&&"DENO"!==c||v)}));t.exports={CONSTRUCTOR:y,REJECTION_EVENT:v,SUBCLASSING:d}},550:function(t,e,r){"use strict";var n=r(4576);t.exports=n.Promise},3438:function(t,e,r){"use strict";var n=r(8551),o=r(34),i=r(6043);t.exports=function(t,e){if(n(t),o(e)&&e.constructor===t)return e;var r=i.f(t);return(0,r.resolve)(e),r.promise}},537:function(t,e,r){"use strict";var n=r(550),o=r(4428),i=r(916).CONSTRUCTOR;t.exports=i||!o((function(t){n.all(t).then(void 0,(function(){}))}))},1056:function(t,e,r){"use strict";var n=r(4913).f;t.exports=function(t,e,r){r in t||n(t,r,{configurable:!0,get:function(){return e[r]},set:function(t){e[r]=t}})}},8265:function(t){"use strict";var e=function(){this.head=null,this.tail=null};e.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=e},6682:function(t,e,r){"use strict";var n=r(9565),o=r(8551),i=r(4901),a=r(2195),s=r(7323),u=TypeError;t.exports=function(t,e){var r=t.exec;if(i(r)){var c=n(r,t,e);return null!==c&&o(c),c}if("RegExp"===a(t))return n(s,t,e);throw new u("RegExp#exec called on incompatible receiver")}},7323:function(t,e,r){"use strict";var n,o,i=r(9565),a=r(9504),s=r(655),u=r(7979),c=r(8429),f=r(5745),l=r(2360),p=r(1181).get,h=r(3635),d=r(8814),v=f("native-string-replace",String.prototype.replace),y=RegExp.prototype.exec,g=y,b=a("".charAt),m=a("".indexOf),w=a("".replace),x=a("".slice),S=(o=/b*/g,i(y,n=/a/,"a"),i(y,o,"a"),0!==n.lastIndex||0!==o.lastIndex),A=c.BROKEN_CARET,k=void 0!==/()??/.exec("")[1];(S||k||A||h||d)&&(g=function(t){var e,r,n,o,a,c,f,h=this,d=p(h),O=s(t),E=d.raw;if(E)return E.lastIndex=h.lastIndex,e=i(g,E,O),h.lastIndex=E.lastIndex,e;var P=d.groups,C=A&&h.sticky,R=i(u,h),_=h.source,T=0,j=O;if(C&&(R=w(R,"y",""),-1===m(R,"g")&&(R+="g"),j=x(O,h.lastIndex),h.lastIndex>0&&(!h.multiline||h.multiline&&"\n"!==b(O,h.lastIndex-1))&&(_="(?: "+_+")",j=" "+j,T++),r=new RegExp("^(?:"+_+")",R)),k&&(r=new RegExp("^"+_+"$(?!\\s)",R)),S&&(n=h.lastIndex),o=i(y,C?r:h,j),C?o?(o.input=x(o.input,T),o[0]=x(o[0],T),o.index=h.lastIndex,h.lastIndex+=o[0].length):h.lastIndex=0:S&&o&&(h.lastIndex=h.global?o.index+o[0].length:n),k&&o&&o.length>1&&i(v,o[0],r,(function(){for(a=1;ab)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}))},7750:function(t,e,r){"use strict";var n=r(4117),o=TypeError;t.exports=function(t){if(n(t))throw new o("Can't call method on "+t);return t}},3389:function(t,e,r){"use strict";var n=r(4576),o=r(3724),i=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!o)return n[t];var e=i(n,t);return e&&e.value}},3470:function(t){"use strict";t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},7633:function(t,e,r){"use strict";var n=r(7751),o=r(2106),i=r(8227),a=r(3724),s=i("species");t.exports=function(t){var e=n(t);a&&e&&!e[s]&&o(e,s,{configurable:!0,get:function(){return this}})}},687:function(t,e,r){"use strict";var n=r(4913).f,o=r(9297),i=r(8227)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!o(t,i)&&n(t,i,{configurable:!0,value:e})}},6119:function(t,e,r){"use strict";var n=r(5745),o=r(3392),i=n("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},7629:function(t,e,r){"use strict";var n=r(6395),o=r(4576),i=r(9433),a="__core-js_shared__",s=t.exports=o[a]||i(a,{});(s.versions||(s.versions=[])).push({version:"3.38.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:function(t,e,r){"use strict";var n=r(7629);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},2293:function(t,e,r){"use strict";var n=r(8551),o=r(5548),i=r(4117),a=r(8227)("species");t.exports=function(t,e){var r,s=n(t).constructor;return void 0===s||i(r=n(s)[a])?e:o(r)}},3061:function(t,e,r){"use strict";var n=r(9039);t.exports=function(t){return n((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},8183:function(t,e,r){"use strict";var n=r(9504),o=r(1291),i=r(655),a=r(7750),s=n("".charAt),u=n("".charCodeAt),c=n("".slice),f=function(t){return function(e,r){var n,f,l=i(a(e)),p=o(r),h=l.length;return p<0||p>=h?t?"":void 0:(n=u(l,p))<55296||n>56319||p+1===h||(f=u(l,p+1))<56320||f>57343?t?s(l,p):n:t?c(l,p,p+2):f-56320+(n-55296<<10)+65536}};t.exports={codeAt:f(!1),charAt:f(!0)}},6098:function(t,e,r){"use strict";var n=r(9504),o=2147483647,i=/[^\0-\u007E]/,a=/[.\u3002\uFF0E\uFF61]/g,s="Overflow: input needs wider integers to process",u=RangeError,c=n(a.exec),f=Math.floor,l=String.fromCharCode,p=n("".charCodeAt),h=n([].join),d=n([].push),v=n("".replace),y=n("".split),g=n("".toLowerCase),b=function(t){return t+22+75*(t<26)},m=function(t,e,r){var n=0;for(t=r?f(t/700):t>>1,t+=f(t/e);t>455;)t=f(t/35),n+=36;return f(n+36*t/(t+38))},w=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&o<=56319&&r=a&&nf((o-c)/x))throw new u(s);for(c+=(w-a)*x,a=w,r=0;ro)throw new u(s);if(n===a){for(var S=c,A=36;;){var k=A<=v?1:A>=v+26?26:A-v;if(S0?o(e,9007199254740991):0}},8981:function(t,e,r){"use strict";var n=r(7750),o=Object;t.exports=function(t){return o(n(t))}},8229:function(t,e,r){"use strict";var n=r(9590),o=RangeError;t.exports=function(t,e){var r=n(t);if(r%e)throw new o("Wrong offset");return r}},9590:function(t,e,r){"use strict";var n=r(1291),o=RangeError;t.exports=function(t){var e=n(t);if(e<0)throw new o("The argument can't be less than 0");return e}},2777:function(t,e,r){"use strict";var n=r(9565),o=r(34),i=r(757),a=r(5966),s=r(4270),u=r(8227),c=TypeError,f=u("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var r,u=a(t,f);if(u){if(void 0===e&&(e="default"),r=n(u,t,e),!o(r)||i(r))return r;throw new c("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},6969:function(t,e,r){"use strict";var n=r(2777),o=r(757);t.exports=function(t){var e=n(t,"string");return o(e)?e:e+""}},2140:function(t,e,r){"use strict";var n={};n[r(8227)("toStringTag")]="z",t.exports="[object z]"===String(n)},655:function(t,e,r){"use strict";var n=r(6955),o=String;t.exports=function(t){if("Symbol"===n(t))throw new TypeError("Cannot convert a Symbol value to a string");return o(t)}},8319:function(t){"use strict";var e=Math.round;t.exports=function(t){var r=e(t);return r<0?0:r>255?255:255&r}},6823:function(t){"use strict";var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},5823:function(t,e,r){"use strict";var n=r(6518),o=r(4576),i=r(9565),a=r(3724),s=r(2805),u=r(4644),c=r(6346),f=r(679),l=r(6980),p=r(6699),h=r(2087),d=r(8014),v=r(7696),y=r(8229),g=r(8319),b=r(6969),m=r(9297),w=r(6955),x=r(34),S=r(757),A=r(2360),k=r(1625),O=r(2967),E=r(8480).f,P=r(3251),C=r(9213).forEach,R=r(7633),_=r(2106),T=r(4913),j=r(7347),U=r(5370),I=r(1181),F=r(3167),M=I.get,L=I.set,B=I.enforce,N=T.f,D=j.f,K=o.RangeError,q=c.ArrayBuffer,H=q.prototype,z=c.DataView,G=u.NATIVE_ARRAY_BUFFER_VIEWS,J=u.TYPED_ARRAY_TAG,V=u.TypedArray,W=u.TypedArrayPrototype,Y=u.isTypedArray,$="BYTES_PER_ELEMENT",Z="Wrong length",Q=function(t,e){_(t,e,{configurable:!0,get:function(){return M(this)[e]}})},X=function(t){var e;return k(H,t)||"ArrayBuffer"===(e=w(t))||"SharedArrayBuffer"===e},tt=function(t,e){return Y(t)&&!S(e)&&e in t&&h(+e)&&e>=0},et=function(t,e){return e=b(e),tt(t,e)?l(2,t[e]):D(t,e)},rt=function(t,e,r){return e=b(e),!(tt(t,e)&&x(r)&&m(r,"value"))||m(r,"get")||m(r,"set")||r.configurable||m(r,"writable")&&!r.writable||m(r,"enumerable")&&!r.enumerable?N(t,e,r):(t[e]=r.value,t)};a?(G||(j.f=et,T.f=rt,Q(W,"buffer"),Q(W,"byteOffset"),Q(W,"byteLength"),Q(W,"length")),n({target:"Object",stat:!0,forced:!G},{getOwnPropertyDescriptor:et,defineProperty:rt}),t.exports=function(t,e,r){var a=t.match(/\d+/)[0]/8,u=t+(r?"Clamped":"")+"Array",c="get"+t,l="set"+t,h=o[u],b=h,m=b&&b.prototype,w={},S=function(t,e){N(t,e,{get:function(){return function(t,e){var r=M(t);return r.view[c](e*a+r.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,n){var o=M(t);o.view[l](e*a+o.byteOffset,r?g(n):n,!0)}(this,e,t)},enumerable:!0})};G?s&&(b=e((function(t,e,r,n){return f(t,m),F(x(e)?X(e)?void 0!==n?new h(e,y(r,a),n):void 0!==r?new h(e,y(r,a)):new h(e):Y(e)?U(b,e):i(P,b,e):new h(v(e)),t,b)})),O&&O(b,V),C(E(h),(function(t){t in b||p(b,t,h[t])})),b.prototype=m):(b=e((function(t,e,r,n){f(t,m);var o,s,u,c=0,l=0;if(x(e)){if(!X(e))return Y(e)?U(b,e):i(P,b,e);o=e,l=y(r,a);var p=e.byteLength;if(void 0===n){if(p%a)throw new K(Z);if((s=p-l)<0)throw new K(Z)}else if((s=d(n)*a)+l>p)throw new K(Z);u=s/a}else u=v(e),o=new q(s=u*a);for(L(t,{buffer:o,byteOffset:l,byteLength:s,length:u,view:new z(o)});c1?arguments[1]:void 0,k=void 0!==A,O=c(x);if(O&&!f(O))for(m=(b=u(x,O)).next,x=[];!(g=o(m,b)).done;)x.push(g.value);for(k&&S>2&&(A=n(A,arguments[2])),r=s(x),d=new(p(w))(r),v=l(d),e=0;r>e;e++)y=k?A(x[e],e):x[e],d[e]=v?h(y):+y;return d}},1412:function(t,e,r){"use strict";var n=r(4644),o=r(2293),i=n.aTypedArrayConstructor,a=n.getTypedArrayConstructor;t.exports=function(t){return i(o(t,a(t)))}},3392:function(t,e,r){"use strict";var n=r(9504),o=0,i=Math.random(),a=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++o+i,36)}},7416:function(t,e,r){"use strict";var n=r(9039),o=r(8227),i=r(3724),a=r(6395),s=o("iterator");t.exports=!n((function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),r.delete("a",2),r.delete("b",void 0),a&&(!t.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!e.size&&(a||!i)||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}))},7040:function(t,e,r){"use strict";var n=r(4495);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:function(t,e,r){"use strict";var n=r(3724),o=r(9039);t.exports=n&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:function(t){"use strict";var e=TypeError;t.exports=function(t,r){if(t=51||!o((function(){var t=[];return t[v]=!1,t.concat()[0]!==t})),g=function(t){if(!a(t))return!1;var e=t[v];return void 0!==e?!!e:i(t)};n({target:"Array",proto:!0,arity:1,forced:!y||!p("concat")},{concat:function(t){var e,r,n,o,i,a=s(this),p=l(a,0),h=0;for(e=-1,n=arguments.length;e1?arguments[1]:void 0)}})},113:function(t,e,r){"use strict";var n=r(6518),o=r(9213).find,i=r(6469),a="find",s=!0;a in[]&&Array(1)[a]((function(){s=!1})),n({target:"Array",proto:!0,forced:s},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i(a)},6449:function(t,e,r){"use strict";var n=r(6518),o=r(259),i=r(8981),a=r(6198),s=r(1291),u=r(1469);n({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=i(this),r=a(e),n=u(e,0);return n.length=o(n,e,e,r,0,void 0===t?1:s(t)),n}})},4423:function(t,e,r){"use strict";var n=r(6518),o=r(9617).includes,i=r(9039),a=r(6469);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),a("includes")},3792:function(t,e,r){"use strict";var n=r(5397),o=r(6469),i=r(6269),a=r(1181),s=r(4913).f,u=r(1088),c=r(2529),f=r(6395),l=r(3724),p="Array Iterator",h=a.set,d=a.getterFor(p);t.exports=u(Array,"Array",(function(t,e){h(this,{type:p,target:n(t),index:0,kind:e})}),(function(){var t=d(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,c(void 0,!0);switch(t.kind){case"keys":return c(r,!1);case"values":return c(e[r],!1)}return c([r,e[r]],!1)}),"values");var v=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!f&&l&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(t){}},8598:function(t,e,r){"use strict";var n=r(6518),o=r(9504),i=r(7055),a=r(5397),s=r(4598),u=o([].join);n({target:"Array",proto:!0,forced:i!==Object||!s("join",",")},{join:function(t){return u(a(this),void 0===t?",":t)}})},2062:function(t,e,r){"use strict";var n=r(6518),o=r(9213).map;n({target:"Array",proto:!0,forced:!r(597)("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},4782:function(t,e,r){"use strict";var n=r(6518),o=r(4376),i=r(3517),a=r(34),s=r(5610),u=r(6198),c=r(5397),f=r(4659),l=r(8227),p=r(597),h=r(7680),d=p("slice"),v=l("species"),y=Array,g=Math.max;n({target:"Array",proto:!0,forced:!d},{slice:function(t,e){var r,n,l,p=c(this),d=u(p),b=s(t,d),m=s(void 0===e?d:e,d);if(o(p)&&(r=p.constructor,(i(r)&&(r===y||o(r.prototype))||a(r)&&null===(r=r[v]))&&(r=void 0),r===y||void 0===r))return h(p,b,m);for(n=new(void 0===r?y:r)(g(m-b,0)),l=0;b3)){if(d)return!0;if(y)return y<603;var t,e,r,n,o="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)g.push({k:e+n,v:r})}for(g.sort((function(t,e){return e.v-t.v})),n=0;nc(r)?1:-1}}(t)),r=s(o),n=0;nw-n+r;y--)p(m,y-1)}else if(r>n)for(y=w-n;y>x;y--)b=y+r-1,(g=y+n-1)in m?m[b]=m[g]:p(m,b);for(y=0;y2)if(c=w(c),43===(e=P(c,0))||45===e){if(88===(r=P(c,2))||120===r)return NaN}else if(48===e){switch(P(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=E(c,2)).length,s=0;so)return NaN;return parseInt(i,n)}return+c}(e)}(t));return p(k,e=this)&&v((function(){m(e)}))?l(Object(r),this,R):r};R.prototype=k,C&&!o&&(k.constructor=R),n({global:!0,constructor:!0,wrap:!0,forced:C},{Number:R});var _=function(t,e){for(var r,n=i?y(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)f(e,r=n[o])&&!f(t,r)&&b(t,r,g(e,r))};o&&A&&_(s[x],A),(C||o)&&_(s[x],S)},9085:function(t,e,r){"use strict";var n=r(6518),o=r(4213);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},3851:function(t,e,r){"use strict";var n=r(6518),o=r(9039),i=r(5397),a=r(7347).f,s=r(3724);n({target:"Object",stat:!0,forced:!s||o((function(){a(1)})),sham:!s},{getOwnPropertyDescriptor:function(t,e){return a(i(t),e)}})},1278:function(t,e,r){"use strict";var n=r(6518),o=r(3724),i=r(5031),a=r(5397),s=r(7347),u=r(4659);n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,r,n=a(t),o=s.f,c=i(n),f={},l=0;c.length>l;)void 0!==(r=o(n,e=c[l++]))&&u(f,e,r);return f}})},9773:function(t,e,r){"use strict";var n=r(6518),o=r(4495),i=r(9039),a=r(3717),s=r(8981);n({target:"Object",stat:!0,forced:!o||i((function(){a.f(1)}))},{getOwnPropertySymbols:function(t){var e=a.f;return e?e(s(t)):[]}})},9432:function(t,e,r){"use strict";var n=r(6518),o=r(8981),i=r(1072);n({target:"Object",stat:!0,forced:r(9039)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},6099:function(t,e,r){"use strict";var n=r(2140),o=r(6840),i=r(3179);n||o(Object.prototype,"toString",i,{unsafe:!0})},6499:function(t,e,r){"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),u=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{all:function(t){var e=this,r=a.f(e),n=r.resolve,c=r.reject,f=s((function(){var r=i(e.resolve),a=[],s=0,f=1;u(t,(function(t){var i=s++,u=!1;f++,o(r,e,t).then((function(t){u||(u=!0,a[i]=t,--f||n(a))}),c)})),--f||n(a)}));return f.error&&c(f.value),r.promise}})},2003:function(t,e,r){"use strict";var n=r(6518),o=r(6395),i=r(916).CONSTRUCTOR,a=r(550),s=r(7751),u=r(4901),c=r(6840),f=a&&a.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(t){return this.then(void 0,t)}}),!o&&u(a)){var l=s("Promise").prototype.catch;f.catch!==l&&c(f,"catch",l,{unsafe:!0})}},436:function(t,e,r){"use strict";var n,o,i,a=r(6518),s=r(6395),u=r(6193),c=r(4576),f=r(9565),l=r(6840),p=r(2967),h=r(687),d=r(7633),v=r(9306),y=r(4901),g=r(34),b=r(679),m=r(2293),w=r(9225).set,x=r(1955),S=r(3138),A=r(1103),k=r(8265),O=r(1181),E=r(550),P=r(916),C=r(6043),R="Promise",_=P.CONSTRUCTOR,T=P.REJECTION_EVENT,j=P.SUBCLASSING,U=O.getterFor(R),I=O.set,F=E&&E.prototype,M=E,L=F,B=c.TypeError,N=c.document,D=c.process,K=C.f,q=K,H=!!(N&&N.createEvent&&c.dispatchEvent),z="unhandledrejection",G=function(t){var e;return!(!g(t)||!y(e=t.then))&&e},J=function(t,e){var r,n,o,i=e.value,a=1===e.state,s=a?t.ok:t.fail,u=t.resolve,c=t.reject,l=t.domain;try{s?(a||(2===e.rejection&&Z(e),e.rejection=1),!0===s?r=i:(l&&l.enter(),r=s(i),l&&(l.exit(),o=!0)),r===t.promise?c(new B("Promise-chain cycle")):(n=G(r))?f(n,r,u,c):u(r)):c(i)}catch(t){l&&!o&&l.exit(),c(t)}},V=function(t,e){t.notified||(t.notified=!0,x((function(){for(var r,n=t.reactions;r=n.get();)J(r,t);t.notified=!1,e&&!t.rejection&&Y(t)})))},W=function(t,e,r){var n,o;H?((n=N.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),c.dispatchEvent(n)):n={promise:e,reason:r},!T&&(o=c["on"+t])?o(n):t===z&&S("Unhandled promise rejection",r)},Y=function(t){f(w,c,(function(){var e,r=t.facade,n=t.value;if($(t)&&(e=A((function(){u?D.emit("unhandledRejection",n,r):W(z,r,n)})),t.rejection=u||$(t)?2:1,e.error))throw e.value}))},$=function(t){return 1!==t.rejection&&!t.parent},Z=function(t){f(w,c,(function(){var e=t.facade;u?D.emit("rejectionHandled",e):W("rejectionhandled",e,t.value)}))},Q=function(t,e,r){return function(n){t(e,n,r)}},X=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,V(t,!0))},tt=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new B("Promise can't be resolved itself");var n=G(e);n?x((function(){var r={done:!1};try{f(n,e,Q(tt,r,t),Q(X,r,t))}catch(e){X(r,e,t)}})):(t.value=e,t.state=1,V(t,!1))}catch(e){X({done:!1},e,t)}}};if(_&&(L=(M=function(t){b(this,L),v(t),f(n,this);var e=U(this);try{t(Q(tt,e),Q(X,e))}catch(t){X(e,t)}}).prototype,(n=function(t){I(this,{type:R,done:!1,notified:!1,parent:!1,reactions:new k,rejection:!1,state:0,value:null})}).prototype=l(L,"then",(function(t,e){var r=U(this),n=K(m(this,M));return r.parent=!0,n.ok=!y(t)||t,n.fail=y(e)&&e,n.domain=u?D.domain:void 0,0===r.state?r.reactions.add(n):x((function(){J(n,r)})),n.promise})),o=function(){var t=new n,e=U(t);this.promise=t,this.resolve=Q(tt,e),this.reject=Q(X,e)},C.f=K=function(t){return t===M||void 0===t?new o(t):q(t)},!s&&y(E)&&F!==Object.prototype)){i=F.then,j||l(F,"then",(function(t,e){var r=this;return new M((function(t,e){f(i,r,t,e)})).then(t,e)}),{unsafe:!0});try{delete F.constructor}catch(t){}p&&p(F,L)}a({global:!0,constructor:!0,wrap:!0,forced:_},{Promise:M}),h(M,R,!1,!0),d(R)},9391:function(t,e,r){"use strict";var n=r(6518),o=r(6395),i=r(550),a=r(9039),s=r(7751),u=r(4901),c=r(2293),f=r(3438),l=r(6840),p=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){p.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=c(this,s("Promise")),r=u(t);return this.then(r?function(r){return f(e,t()).then((function(){return r}))}:t,r?function(r){return f(e,t()).then((function(){throw r}))}:t)}}),!o&&u(i)){var h=s("Promise").prototype.finally;p.finally!==h&&l(p,"finally",h,{unsafe:!0})}},3362:function(t,e,r){"use strict";r(436),r(6499),r(2003),r(7743),r(1481),r(280)},7743:function(t,e,r){"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),u=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{race:function(t){var e=this,r=a.f(e),n=r.reject,c=s((function(){var a=i(e.resolve);u(t,(function(t){o(a,e,t).then(r.resolve,n)}))}));return c.error&&n(c.value),r.promise}})},1481:function(t,e,r){"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0,forced:r(916).CONSTRUCTOR},{reject:function(t){var e=o.f(this);return(0,e.reject)(t),e.promise}})},280:function(t,e,r){"use strict";var n=r(6518),o=r(7751),i=r(6395),a=r(550),s=r(916).CONSTRUCTOR,u=r(3438),c=o("Promise"),f=i&&!s;n({target:"Promise",stat:!0,forced:i||s},{resolve:function(t){return u(f&&this===c?a:this,t)}})},825:function(t,e,r){"use strict";var n=r(6518),o=r(7751),i=r(8745),a=r(566),s=r(5548),u=r(8551),c=r(34),f=r(2360),l=r(9039),p=o("Reflect","construct"),h=Object.prototype,d=[].push,v=l((function(){function t(){}return!(p((function(){}),[],t)instanceof t)})),y=!l((function(){p((function(){}))})),g=v||y;n({target:"Reflect",stat:!0,forced:g,sham:g},{construct:function(t,e){s(t),u(e);var r=arguments.length<3?t:s(arguments[2]);if(y&&!v)return p(t,e,r);if(t===r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return i(d,n,e),new(i(a,t,n))}var o=r.prototype,l=f(c(o)?o:h),g=i(t,l,e);return c(g)?g:l}})},4864:function(t,e,r){"use strict";var n=r(3724),o=r(4576),i=r(9504),a=r(2796),s=r(3167),u=r(6699),c=r(2360),f=r(8480).f,l=r(1625),p=r(788),h=r(655),d=r(1034),v=r(8429),y=r(1056),g=r(6840),b=r(9039),m=r(9297),w=r(1181).enforce,x=r(7633),S=r(8227),A=r(3635),k=r(8814),O=S("match"),E=o.RegExp,P=E.prototype,C=o.SyntaxError,R=i(P.exec),_=i("".charAt),T=i("".replace),j=i("".indexOf),U=i("".slice),I=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,F=/a/g,M=/a/g,L=new E(F)!==F,B=v.MISSED_STICKY,N=v.UNSUPPORTED_Y;if(a("RegExp",n&&(!L||B||A||k||b((function(){return M[O]=!1,E(F)!==F||E(M)===M||"/a/i"!==String(E(F,"i"))}))))){for(var D=function(t,e){var r,n,o,i,a,f,v=l(P,this),y=p(t),g=void 0===e,b=[],x=t;if(!v&&y&&g&&t.constructor===D)return t;if((y||l(P,t))&&(t=t.source,g&&(e=d(x))),t=void 0===t?"":h(t),e=void 0===e?"":h(e),x=t,A&&"dotAll"in F&&(n=!!e&&j(e,"s")>-1)&&(e=T(e,/s/g,"")),r=e,B&&"sticky"in F&&(o=!!e&&j(e,"y")>-1)&&N&&(e=T(e,/y/g,"")),k&&(i=function(t){for(var e,r=t.length,n=0,o="",i=[],a=c(null),s=!1,u=!1,f=0,l="";n<=r;n++){if("\\"===(e=_(t,n)))e+=_(t,++n);else if("]"===e)s=!1;else if(!s)switch(!0){case"["===e:s=!0;break;case"("===e:if(o+=e,"?:"===U(t,n+1,n+3))continue;R(I,U(t,n+1))&&(n+=2,u=!0),f++;continue;case">"===e&&u:if(""===l||m(a,l))throw new C("Invalid capture group name");a[l]=!0,i[i.length]=[l,f],u=!1,l="";continue}u?l+=e:o+=e}return[o,i]}(t),t=i[0],b=i[1]),a=s(E(t,e),v?this:P,D),(n||o||b.length)&&(f=w(a),n&&(f.dotAll=!0,f.raw=D(function(t){for(var e,r=t.length,n=0,o="",i=!1;n<=r;n++)"\\"!==(e=_(t,n))?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),o+=e):o+="[\\s\\S]":o+=e+_(t,++n);return o}(t),r)),o&&(f.sticky=!0),b.length&&(f.groups=b)),t!==x)try{u(a,"source",""===x?"(?:)":x)}catch(t){}return a},K=f(E),q=0;K.length>q;)y(D,E,K[q++]);P.constructor=D,D.prototype=P,g(o,"RegExp",D,{constructor:!0})}x("RegExp")},7495:function(t,e,r){"use strict";var n=r(6518),o=r(7323);n({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},8781:function(t,e,r){"use strict";var n=r(350).PROPER,o=r(6840),i=r(8551),a=r(655),s=r(9039),u=r(1034),c="toString",f=RegExp.prototype,l=f[c],p=s((function(){return"/a/b"!==l.call({source:"a",flags:"b"})})),h=n&&l.name!==c;(p||h)&&o(f,c,(function(){var t=i(this);return"/"+a(t.source)+"/"+a(u(t))}),{unsafe:!0})},7337:function(t,e,r){"use strict";var n=r(6518),o=r(9504),i=r(5610),a=RangeError,s=String.fromCharCode,u=String.fromCodePoint,c=o([].join);n({target:"String",stat:!0,arity:1,forced:!!u&&1!==u.length},{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,o=0;n>o;){if(e=+arguments[o++],i(e,1114111)!==e)throw new a(e+" is not a valid code point");r[o]=e<65536?s(e):s(55296+((e-=65536)>>10),e%1024+56320)}return c(r,"")}})},1699:function(t,e,r){"use strict";var n=r(6518),o=r(9504),i=r(2892),a=r(7750),s=r(655),u=r(1436),c=o("".indexOf);n({target:"String",proto:!0,forced:!u("includes")},{includes:function(t){return!!~c(s(a(this)),s(i(t)),arguments.length>1?arguments[1]:void 0)}})},7764:function(t,e,r){"use strict";var n=r(8183).charAt,o=r(655),i=r(1181),a=r(1088),s=r(2529),u="String Iterator",c=i.set,f=i.getterFor(u);a(String,"String",(function(t){c(this,{type:u,string:o(t),index:0})}),(function(){var t,e=f(this),r=e.string,o=e.index;return o>=r.length?s(void 0,!0):(t=n(r,o),e.index+=t.length,s(t,!1))}))},778:function(t,e,r){"use strict";var n=r(6518),o=r(7240);n({target:"String",proto:!0,forced:r(3061)("link")},{link:function(t){return o(this,"a","href",t)}})},1761:function(t,e,r){"use strict";var n=r(9565),o=r(9228),i=r(8551),a=r(4117),s=r(8014),u=r(655),c=r(7750),f=r(5966),l=r(7829),p=r(6682);o("match",(function(t,e,r){return[function(e){var r=c(this),o=a(e)?void 0:f(e,t);return o?n(o,e,r):new RegExp(e)[t](u(r))},function(t){var n=i(this),o=u(t),a=r(e,n,o);if(a.done)return a.value;if(!n.global)return p(n,o);var c=n.unicode;n.lastIndex=0;for(var f,h=[],d=0;null!==(f=p(n,o));){var v=u(f[0]);h[d]=v,""===v&&(n.lastIndex=l(o,s(n.lastIndex),c)),d++}return 0===d?null:h}]}))},5440:function(t,e,r){"use strict";var n=r(8745),o=r(9565),i=r(9504),a=r(9228),s=r(9039),u=r(8551),c=r(4901),f=r(4117),l=r(1291),p=r(8014),h=r(655),d=r(7750),v=r(7829),y=r(5966),g=r(2478),b=r(6682),m=r(8227)("replace"),w=Math.max,x=Math.min,S=i([].concat),A=i([].push),k=i("".indexOf),O=i("".slice),E="$0"==="a".replace(/./,"$0"),P=!!/./[m]&&""===/./[m]("a","$0");a("replace",(function(t,e,r){var i=P?"$":"$0";return[function(t,r){var n=d(this),i=f(t)?void 0:y(t,m);return i?o(i,t,n,r):o(e,h(n),t,r)},function(t,o){var a=u(this),s=h(t);if("string"==typeof o&&-1===k(o,i)&&-1===k(o,"$<")){var f=r(e,a,s,o);if(f.done)return f.value}var d=c(o);d||(o=h(o));var y,m=a.global;m&&(y=a.unicode,a.lastIndex=0);for(var E,P=[];null!==(E=b(a,s))&&(A(P,E),m);)""===h(E[0])&&(a.lastIndex=v(s,p(a.lastIndex),y));for(var C,R="",_=0,T=0;T=_&&(R+=O(s,_,I)+j,_=I+U.length)}return R+O(s,_)}]}),!!s((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}))||!E||P)},5746:function(t,e,r){"use strict";var n=r(9565),o=r(9228),i=r(8551),a=r(4117),s=r(7750),u=r(3470),c=r(655),f=r(5966),l=r(6682);o("search",(function(t,e,r){return[function(e){var r=s(this),o=a(e)?void 0:f(e,t);return o?n(o,e,r):new RegExp(e)[t](c(r))},function(t){var n=i(this),o=c(t),a=r(e,n,o);if(a.done)return a.value;var s=n.lastIndex;u(s,0)||(n.lastIndex=0);var f=l(n,o);return u(n.lastIndex,s)||(n.lastIndex=s),null===f?-1:f.index}]}))},744:function(t,e,r){"use strict";var n=r(9565),o=r(9504),i=r(9228),a=r(8551),s=r(4117),u=r(7750),c=r(2293),f=r(7829),l=r(8014),p=r(655),h=r(5966),d=r(6682),v=r(8429),y=r(9039),g=v.UNSUPPORTED_Y,b=Math.min,m=o([].push),w=o("".slice),x=!y((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]})),S="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;i("split",(function(t,e,r){var o="0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:n(e,this,t,r)}:e;return[function(e,r){var i=u(this),a=s(e)?void 0:h(e,t);return a?n(a,e,i,r):n(o,p(i),e,r)},function(t,n){var i=a(this),s=p(t);if(!S){var u=r(o,i,s,n,o!==e);if(u.done)return u.value}var h=c(i,RegExp),v=i.unicode,y=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(g?"g":"y"),x=new h(g?"^(?:"+i.source+")":i,y),A=void 0===n?4294967295:n>>>0;if(0===A)return[];if(0===s.length)return null===d(x,s)?[s]:[];for(var k=0,O=0,E=[];O2?arguments[2]:void 0)}))},2170:function(t,e,r){"use strict";var n=r(4644),o=r(9213).every,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("every",(function(t){return o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},5044:function(t,e,r){"use strict";var n=r(4644),o=r(4373),i=r(5854),a=r(6955),s=r(9565),u=r(9504),c=r(9039),f=n.aTypedArray,l=n.exportTypedArrayMethod,p=u("".slice);l("fill",(function(t){var e=arguments.length;f(this);var r="Big"===p(a(this),0,3)?i(t):+t;return s(o,this,r,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}),c((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})))},1920:function(t,e,r){"use strict";var n=r(4644),o=r(9213).filter,i=r(6357),a=n.aTypedArray;(0,n.exportTypedArrayMethod)("filter",(function(t){var e=o(a(this),t,arguments.length>1?arguments[1]:void 0);return i(this,e)}))},9955:function(t,e,r){"use strict";var n=r(4644),o=r(9213).findIndex,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findIndex",(function(t){return o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},1694:function(t,e,r){"use strict";var n=r(4644),o=r(9213).find,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("find",(function(t){return o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},3206:function(t,e,r){"use strict";var n=r(4644),o=r(9213).forEach,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("forEach",(function(t){o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},4496:function(t,e,r){"use strict";var n=r(4644),o=r(9617).includes,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("includes",(function(t){return o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},6651:function(t,e,r){"use strict";var n=r(4644),o=r(9617).indexOf,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("indexOf",(function(t){return o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},2887:function(t,e,r){"use strict";var n=r(4576),o=r(9039),i=r(9504),a=r(4644),s=r(3792),u=r(8227)("iterator"),c=n.Uint8Array,f=i(s.values),l=i(s.keys),p=i(s.entries),h=a.aTypedArray,d=a.exportTypedArrayMethod,v=c&&c.prototype,y=!o((function(){v[u].call([1])})),g=!!v&&v.values&&v[u]===v.values&&"values"===v.values.name,b=function(){return f(h(this))};d("entries",(function(){return p(h(this))}),y),d("keys",(function(){return l(h(this))}),y),d("values",b,y||!g,{name:"values"}),d(u,b,y||!g,{name:"values"})},9369:function(t,e,r){"use strict";var n=r(4644),o=r(9504),i=n.aTypedArray,a=n.exportTypedArrayMethod,s=o([].join);a("join",(function(t){return s(i(this),t)}))},6812:function(t,e,r){"use strict";var n=r(4644),o=r(8745),i=r(8379),a=n.aTypedArray;(0,n.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return o(i,a(this),e>1?[t,arguments[1]]:[t])}))},8995:function(t,e,r){"use strict";var n=r(4644),o=r(9213).map,i=r(1412),a=n.aTypedArray;(0,n.exportTypedArrayMethod)("map",(function(t){return o(a(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(i(t))(e)}))}))},6072:function(t,e,r){"use strict";var n=r(4644),o=r(926).right,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return o(i(this),t,e,e>1?arguments[1]:void 0)}))},1575:function(t,e,r){"use strict";var n=r(4644),o=r(926).left,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return o(i(this),t,e,e>1?arguments[1]:void 0)}))},8747:function(t,e,r){"use strict";var n=r(4644),o=n.aTypedArray,i=n.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var t,e=this,r=o(e).length,n=a(r/2),i=0;i1?arguments[1]:void 0,1),r=u(t);if(y)return o(h,this,r,e);var n=this.length,i=a(r),c=0;if(i+e>n)throw new f("Wrong length");for(;ci;)c[i]=r[i++];return c}),i((function(){new Int8Array(1).slice()})))},7301:function(t,e,r){"use strict";var n=r(4644),o=r(9213).some,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("some",(function(t){return o(i(this),t,arguments.length>1?arguments[1]:void 0)}))},373:function(t,e,r){"use strict";var n=r(4576),o=r(7476),i=r(9039),a=r(9306),s=r(4488),u=r(4644),c=r(3709),f=r(3763),l=r(9519),p=r(3607),h=u.aTypedArray,d=u.exportTypedArrayMethod,v=n.Uint16Array,y=v&&o(v.prototype.sort),g=!(!y||i((function(){y(new v(2),null)}))&&i((function(){y(new v(2),{})}))),b=!!y&&!i((function(){if(l)return l<74;if(c)return c<67;if(f)return!0;if(p)return p<602;var t,e,r=new v(516),n=Array(516);for(t=0;t<516;t++)e=t%4,r[t]=515-t,n[t]=t-2*e+3;for(y(r,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(r[t]!==n[t])return!0}));d("sort",(function(t){return void 0!==t&&a(t),b?y(this,t):s(h(this),function(t){return function(e,r){return void 0!==t?+t(e,r)||0:r!=r?-1:e!=e?1:0===e&&0===r?1/e>0&&1/r<0?1:-1:e>r}}(t))}),!b||g)},6614:function(t,e,r){"use strict";var n=r(4644),o=r(8014),i=r(5610),a=r(1412),s=n.aTypedArray;(0,n.exportTypedArrayMethod)("subarray",(function(t,e){var r=s(this),n=r.length,u=i(t,n);return new(a(r))(r.buffer,r.byteOffset+u*r.BYTES_PER_ELEMENT,o((void 0===e?n:i(e,n))-u))}))},1405:function(t,e,r){"use strict";var n=r(4576),o=r(8745),i=r(4644),a=r(9039),s=r(7680),u=n.Int8Array,c=i.aTypedArray,f=i.exportTypedArrayMethod,l=[].toLocaleString,p=!!u&&a((function(){l.call(new u(1))}));f("toLocaleString",(function(){return o(l,p?s(c(this)):c(this),s(arguments))}),a((function(){return[1,2].toLocaleString()!==new u([1,2]).toLocaleString()}))||!a((function(){u.prototype.toLocaleString.call([1,2])})))},3684:function(t,e,r){"use strict";var n=r(4644).exportTypedArrayMethod,o=r(9039),i=r(4576),a=r(9504),s=i.Uint8Array,u=s&&s.prototype||{},c=[].toString,f=a([].join);o((function(){c.call({})}))&&(c=function(){return f(this)});var l=u.toString!==c;n("toString",c,l)},1489:function(t,e,r){"use strict";r(5823)("Uint8",(function(t){return function(e,r,n){return t(this,e,r,n)}}))},2480:function(t,e,r){"use strict";r(5081)},3500:function(t,e,r){"use strict";var n=r(4576),o=r(7400),i=r(9296),a=r(235),s=r(6699),u=function(t){if(t&&t.forEach!==a)try{s(t,"forEach",a)}catch(e){t.forEach=a}};for(var c in o)o[c]&&u(n[c]&&n[c].prototype);u(i)},2953:function(t,e,r){"use strict";var n=r(4576),o=r(7400),i=r(9296),a=r(3792),s=r(6699),u=r(687),c=r(8227)("iterator"),f=a.values,l=function(t,e){if(t){if(t[c]!==f)try{s(t,c,f)}catch(e){t[c]=f}if(u(t,e,!0),o[e])for(var r in a)if(t[r]!==a[r])try{s(t,r,a[r])}catch(e){t[r]=a[r]}}};for(var p in o)l(n[p]&&n[p].prototype,p);l(i,"DOMTokenList")},8406:function(t,e,r){"use strict";r(3792),r(7337);var n=r(6518),o=r(4576),i=r(3389),a=r(7751),s=r(9565),u=r(9504),c=r(3724),f=r(7416),l=r(6840),p=r(2106),h=r(6279),d=r(687),v=r(3994),y=r(1181),g=r(679),b=r(4901),m=r(9297),w=r(6080),x=r(6955),S=r(8551),A=r(34),k=r(655),O=r(2360),E=r(6980),P=r(81),C=r(851),R=r(2529),_=r(2812),T=r(8227),j=r(4488),U=T("iterator"),I="URLSearchParams",F=I+"Iterator",M=y.set,L=y.getterFor(I),B=y.getterFor(F),N=i("fetch"),D=i("Request"),K=i("Headers"),q=D&&D.prototype,H=K&&K.prototype,z=o.TypeError,G=o.encodeURIComponent,J=String.fromCharCode,V=a("String","fromCodePoint"),W=parseInt,Y=u("".charAt),$=u([].join),Z=u([].push),Q=u("".replace),X=u([].shift),tt=u([].splice),et=u("".split),rt=u("".slice),nt=u(/./.exec),ot=/\+/g,it=/^[0-9a-f]+$/i,at=function(t,e){var r=rt(t,e,e+2);return nt(it,r)?W(r,16):NaN},st=function(t){for(var e=0,r=128;r>0&&t&r;r>>=1)e++;return e},ut=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},ct=function(t){for(var e=(t=Q(t,ot," ")).length,r="",n=0;ne){r+="%",n++;continue}var i=at(t,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=st(i);if(0===a)o=J(i);else{if(1===a||a>4){r+="�",n++;continue}for(var s=[i],u=1;ue||"%"!==Y(t,n));){var c=at(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;Z(s,c),n+=2,u++}if(s.length!==a){r+="�";continue}var f=ut(s);null===f?r+="�":o=V(f)}}r+=o,n++}return r},ft=/[!'()~]|%20/g,lt={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},pt=function(t){return lt[t]},ht=function(t){return Q(G(t),ft,pt)},dt=v((function(t,e){M(this,{type:F,target:L(t).entries,index:0,kind:e})}),I,(function(){var t=B(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,R(void 0,!0);var n=e[r];switch(t.kind){case"keys":return R(n.key,!1);case"values":return R(n.value,!1)}return R([n.key,n.value],!1)}),!0),vt=function(t){this.entries=[],this.url=null,void 0!==t&&(A(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Y(t,0)?rt(t,1):t:k(t)))};vt.prototype={type:I,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,o,i,a,u,c=this.entries,f=C(t);if(f)for(r=(e=P(t,f)).next;!(n=s(r,e)).done;){if(i=(o=P(S(n.value))).next,(a=s(i,o)).done||(u=s(i,o)).done||!s(i,o).done)throw new z("Expected sequence with length 2");Z(c,{key:k(a.value),value:k(u.value)})}else for(var l in t)m(t,l)&&Z(c,{key:l,value:k(t[l])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,o=et(t,"&"),i=0;i0?arguments[0]:void 0));c||(this.size=t.entries.length)},gt=yt.prototype;if(h(gt,{append:function(t,e){var r=L(this);_(arguments.length,2),Z(r.entries,{key:k(t),value:k(e)}),c||this.length++,r.updateURL()},delete:function(t){for(var e=L(this),r=_(arguments.length,1),n=e.entries,o=k(t),i=r<2?void 0:arguments[1],a=void 0===i?i:k(i),s=0;se.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,r=L(this).entries,n=w(t,arguments.length>1?arguments[1]:void 0),o=0;o1?wt(arguments[1]):{})}}),b(D)){var xt=function(t){return g(this,q),new D(t,arguments.length>1?wt(arguments[1]):{})};q.constructor=xt,xt.prototype=q,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:xt})}}t.exports={URLSearchParams:yt,getState:L}},8408:function(t,e,r){"use strict";r(8406)},5806:function(t,e,r){"use strict";r(7764);var n,o=r(6518),i=r(3724),a=r(7416),s=r(4576),u=r(6080),c=r(9504),f=r(6840),l=r(2106),p=r(679),h=r(9297),d=r(4213),v=r(7916),y=r(7680),g=r(8183).codeAt,b=r(6098),m=r(655),w=r(687),x=r(2812),S=r(8406),A=r(1181),k=A.set,O=A.getterFor("URL"),E=S.URLSearchParams,P=S.getState,C=s.URL,R=s.TypeError,_=s.parseInt,T=Math.floor,j=Math.pow,U=c("".charAt),I=c(/./.exec),F=c([].join),M=c(1..toString),L=c([].pop),B=c([].push),N=c("".replace),D=c([].shift),K=c("".split),q=c("".slice),H=c("".toLowerCase),z=c([].unshift),G="Invalid scheme",J="Invalid host",V="Invalid port",W=/[a-z]/i,Y=/[\d+-.a-z]/i,$=/\d/,Z=/^0x/i,Q=/^[0-7]+$/,X=/^\d+$/,tt=/^[\da-f]+$/i,et=/[\0\t\n\r #%/:<>?@[\\\]^|]/,rt=/[\0\t\n\r #/:<>?@[\\\]^|]/,nt=/^[\u0000-\u0020]+/,ot=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,it=/[\t\n\r]/g,at=function(t){var e,r,n,o;if("number"==typeof t){for(e=[],r=0;r<4;r++)z(e,t%256),t=T(t/256);return F(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,r=1,n=null,o=0,i=0;i<8;i++)0!==t[i]?(o>r&&(e=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:e}(t),r=0;r<8;r++)o&&0===t[r]||(o&&(o=!1),n===r?(e+=r?":":"::",o=!0):(e+=M(t[r],16),r<7&&(e+=":")));return"["+e+"]"}return t},st={},ut=d({},st,{" ":1,'"':1,"<":1,">":1,"`":1}),ct=d({},ut,{"#":1,"?":1,"{":1,"}":1}),ft=d({},ct,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),lt=function(t,e){var r=g(t,0);return r>32&&r<127&&!h(e,t)?t:encodeURIComponent(t)},pt={ftp:21,file:null,http:80,https:443,ws:80,wss:443},ht=function(t,e){var r;return 2===t.length&&I(W,U(t,0))&&(":"===(r=U(t,1))||!e&&"|"===r)},dt=function(t){var e;return t.length>1&&ht(q(t,0,2))&&(2===t.length||"/"===(e=U(t,2))||"\\"===e||"?"===e||"#"===e)},vt=function(t){return"."===t||"%2e"===H(t)},yt={},gt={},bt={},mt={},wt={},xt={},St={},At={},kt={},Ot={},Et={},Pt={},Ct={},Rt={},_t={},Tt={},jt={},Ut={},It={},Ft={},Mt={},Lt=function(t,e,r){var n,o,i,a=m(t);if(e){if(o=this.parse(a))throw new R(o);this.searchParams=null}else{if(void 0!==r&&(n=new Lt(r,!0)),o=this.parse(a,null,n))throw new R(o);(i=P(new E)).bindURL(this),this.searchParams=i}};Lt.prototype={type:"URL",parse:function(t,e,r){var o,i,a,s,u,c=this,f=e||yt,l=0,p="",d=!1,g=!1,b=!1;for(t=m(t),e||(c.scheme="",c.username="",c.password="",c.host=null,c.port=null,c.path=[],c.query=null,c.fragment=null,c.cannotBeABaseURL=!1,t=N(t,nt,""),t=N(t,ot,"$1")),t=N(t,it,""),o=v(t);l<=o.length;){switch(i=o[l],f){case yt:if(!i||!I(W,i)){if(e)return G;f=bt;continue}p+=H(i),f=gt;break;case gt:if(i&&(I(Y,i)||"+"===i||"-"===i||"."===i))p+=H(i);else{if(":"!==i){if(e)return G;p="",f=bt,l=0;continue}if(e&&(c.isSpecial()!==h(pt,p)||"file"===p&&(c.includesCredentials()||null!==c.port)||"file"===c.scheme&&!c.host))return;if(c.scheme=p,e)return void(c.isSpecial()&&pt[c.scheme]===c.port&&(c.port=null));p="","file"===c.scheme?f=Rt:c.isSpecial()&&r&&r.scheme===c.scheme?f=mt:c.isSpecial()?f=At:"/"===o[l+1]?(f=wt,l++):(c.cannotBeABaseURL=!0,B(c.path,""),f=It)}break;case bt:if(!r||r.cannotBeABaseURL&&"#"!==i)return G;if(r.cannotBeABaseURL&&"#"===i){c.scheme=r.scheme,c.path=y(r.path),c.query=r.query,c.fragment="",c.cannotBeABaseURL=!0,f=Mt;break}f="file"===r.scheme?Rt:xt;continue;case mt:if("/"!==i||"/"!==o[l+1]){f=xt;continue}f=kt,l++;break;case wt:if("/"===i){f=Ot;break}f=Ut;continue;case xt:if(c.scheme=r.scheme,i===n)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=y(r.path),c.query=r.query;else if("/"===i||"\\"===i&&c.isSpecial())f=St;else if("?"===i)c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=y(r.path),c.query="",f=Ft;else{if("#"!==i){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=y(r.path),c.path.length--,f=Ut;continue}c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,c.path=y(r.path),c.query=r.query,c.fragment="",f=Mt}break;case St:if(!c.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){c.username=r.username,c.password=r.password,c.host=r.host,c.port=r.port,f=Ut;continue}f=Ot}else f=kt;break;case At:if(f=kt,"/"!==i||"/"!==U(p,l+1))continue;l++;break;case kt:if("/"!==i&&"\\"!==i){f=Ot;continue}break;case Ot:if("@"===i){d&&(p="%40"+p),d=!0,a=v(p);for(var w=0;w65535)return V;c.port=c.isSpecial()&&A===pt[c.scheme]?null:A,p=""}if(e)return;f=jt;continue}return V}p+=i;break;case Rt:if(c.scheme="file","/"===i||"\\"===i)f=_t;else{if(!r||"file"!==r.scheme){f=Ut;continue}switch(i){case n:c.host=r.host,c.path=y(r.path),c.query=r.query;break;case"?":c.host=r.host,c.path=y(r.path),c.query="",f=Ft;break;case"#":c.host=r.host,c.path=y(r.path),c.query=r.query,c.fragment="",f=Mt;break;default:dt(F(y(o,l),""))||(c.host=r.host,c.path=y(r.path),c.shortenPath()),f=Ut;continue}}break;case _t:if("/"===i||"\\"===i){f=Tt;break}r&&"file"===r.scheme&&!dt(F(y(o,l),""))&&(ht(r.path[0],!0)?B(c.path,r.path[0]):c.host=r.host),f=Ut;continue;case Tt:if(i===n||"/"===i||"\\"===i||"?"===i||"#"===i){if(!e&&ht(p))f=Ut;else if(""===p){if(c.host="",e)return;f=jt}else{if(s=c.parseHost(p))return s;if("localhost"===c.host&&(c.host=""),e)return;p="",f=jt}continue}p+=i;break;case jt:if(c.isSpecial()){if(f=Ut,"/"!==i&&"\\"!==i)continue}else if(e||"?"!==i)if(e||"#"!==i){if(i!==n&&(f=Ut,"/"!==i))continue}else c.fragment="",f=Mt;else c.query="",f=Ft;break;case Ut:if(i===n||"/"===i||"\\"===i&&c.isSpecial()||!e&&("?"===i||"#"===i)){if(".."===(u=H(u=p))||"%2e."===u||".%2e"===u||"%2e%2e"===u?(c.shortenPath(),"/"===i||"\\"===i&&c.isSpecial()||B(c.path,"")):vt(p)?"/"===i||"\\"===i&&c.isSpecial()||B(c.path,""):("file"===c.scheme&&!c.path.length&&ht(p)&&(c.host&&(c.host=""),p=U(p,0)+":"),B(c.path,p)),p="","file"===c.scheme&&(i===n||"?"===i||"#"===i))for(;c.path.length>1&&""===c.path[0];)D(c.path);"?"===i?(c.query="",f=Ft):"#"===i&&(c.fragment="",f=Mt)}else p+=lt(i,ct);break;case It:"?"===i?(c.query="",f=Ft):"#"===i?(c.fragment="",f=Mt):i!==n&&(c.path[0]+=lt(i,st));break;case Ft:e||"#"!==i?i!==n&&("'"===i&&c.isSpecial()?c.query+="%27":c.query+="#"===i?"%23":lt(i,st)):(c.fragment="",f=Mt);break;case Mt:i!==n&&(c.fragment+=lt(i,ut))}l++}},parseHost:function(t){var e,r,n;if("["===U(t,0)){if("]"!==U(t,t.length-1))return J;if(e=function(t){var e,r,n,o,i,a,s,u=[0,0,0,0,0,0,0,0],c=0,f=null,l=0,p=function(){return U(t,l)};if(":"===p()){if(":"!==U(t,1))return;l+=2,f=++c}for(;p();){if(8===c)return;if(":"!==p()){for(e=r=0;r<4&&I(tt,p());)e=16*e+_(p(),16),l++,r++;if("."===p()){if(0===r)return;if(l-=r,c>6)return;for(n=0;p();){if(o=null,n>0){if(!("."===p()&&n<4))return;l++}if(!I($,p()))return;for(;I($,p());){if(i=_(p(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;l++}u[c]=256*u[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(":"===p()){if(l++,!p())return}else if(p())return;u[c++]=e}else{if(null!==f)return;l++,f=++c}}if(null!==f)for(a=c-f,c=7;0!==c&&a>0;)s=u[c],u[c--]=u[f+a-1],u[f+--a]=s;else if(8!==c)return;return u}(q(t,1,-1)),!e)return J;this.host=e}else if(this.isSpecial()){if(t=b(t),I(et,t))return J;if(e=function(t){var e,r,n,o,i,a,s,u=K(t,".");if(u.length&&""===u[u.length-1]&&u.length--,(e=u.length)>4)return t;for(r=[],n=0;n1&&"0"===U(o,0)&&(i=I(Z,o)?16:8,o=q(o,8===i?1:2)),""===o)a=0;else{if(!I(10===i?X:8===i?Q:tt,o))return t;a=_(o,i)}B(r,a)}for(n=0;n=j(256,5-e))return null}else if(a>255)return null;for(s=L(r),n=0;n1?arguments[1]:void 0,n=k(e,new Lt(t,!1,r));i||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},Nt=Bt.prototype,Dt=function(t,e){return{get:function(){return O(this)[t]()},set:e&&function(t){return O(this)[e](t)},configurable:!0,enumerable:!0}};if(i&&(l(Nt,"href",Dt("serialize","setHref")),l(Nt,"origin",Dt("getOrigin")),l(Nt,"protocol",Dt("getProtocol","setProtocol")),l(Nt,"username",Dt("getUsername","setUsername")),l(Nt,"password",Dt("getPassword","setPassword")),l(Nt,"host",Dt("getHost","setHost")),l(Nt,"hostname",Dt("getHostname","setHostname")),l(Nt,"port",Dt("getPort","setPort")),l(Nt,"pathname",Dt("getPathname","setPathname")),l(Nt,"search",Dt("getSearch","setSearch")),l(Nt,"searchParams",Dt("getSearchParams")),l(Nt,"hash",Dt("getHash","setHash"))),f(Nt,"toJSON",(function(){return O(this).serialize()}),{enumerable:!0}),f(Nt,"toString",(function(){return O(this).serialize()}),{enumerable:!0}),C){var Kt=C.createObjectURL,qt=C.revokeObjectURL;Kt&&f(Bt,"createObjectURL",u(Kt,C)),qt&&f(Bt,"revokeObjectURL",u(qt,C))}w(Bt,"URL"),o({global:!0,constructor:!0,forced:!a,sham:!i},{URL:Bt})},3296:function(t,e,r){"use strict";r(5806)},7208:function(t,e,r){"use strict";var n=r(6518),o=r(9565);n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},7525:function(t,e,r){"use strict";r(3358),e.default=window.crypto},3358:function(){"use strict";var t,e;t="undefined"!=typeof self?self:void 0,e=function(t){if("function"!=typeof Promise)throw"Promise support required";var e=t.crypto||t.msCrypto;if(e){var r=e.subtle||e.webkitSubtle;if(r){var n=t.Crypto||e.constructor||Object,o=t.SubtleCrypto||r.constructor||Object,i=(t.CryptoKey||t.Key,t.navigator.userAgent.indexOf("Edge/")>-1),a=!!t.msCrypto&&!i,s=!e.subtle&&!!e.webkitSubtle;if(a||s){var u={KoZIhvcNAQEB:"1.2.840.113549.1.1.1"},c={"1.2.840.113549.1.1.1":"KoZIhvcNAQEB"};if(["generateKey","importKey","unwrapKey"].forEach((function(t){var n=r[t];r[t]=function(o,i,u){var c,f,m,A,k,O=[].slice.call(arguments);switch(t){case"generateKey":c=v(o),f=i,m=u;break;case"importKey":c=v(u),f=O[3],m=O[4],"jwk"===o&&((i=g(i)).alg||(i.alg=y(c)),i.key_ops||(i.key_ops="oct"!==i.kty?"d"in i?m.filter(S):m.filter(x):m.slice()),O[1]=(A=g(i),a&&(A.extractable=A.ext,delete A.ext),h(unescape(encodeURIComponent(JSON.stringify(A)))).buffer));break;case"unwrapKey":c=O[4],f=O[5],m=O[6],O[2]=u._key}if("generateKey"===t&&"HMAC"===c.name&&c.hash)return c.length=c.length||{"SHA-1":512,"SHA-256":512,"SHA-384":1024,"SHA-512":1024}[c.hash.name],r.importKey("raw",e.getRandomValues(new Uint8Array(c.length+7>>3)),c,f,m);if(s&&"generateKey"===t&&"RSASSA-PKCS1-v1_5"===c.name&&(!c.modulusLength||c.modulusLength>=2048))return(o=v(o)).name="RSAES-PKCS1-v1_5",delete o.hash,r.generateKey(o,!0,["encrypt","decrypt"]).then((function(t){return Promise.all([r.exportKey("jwk",t.publicKey),r.exportKey("jwk",t.privateKey)])})).then((function(t){return t[0].alg=t[1].alg=y(c),t[0].key_ops=m.filter(x),t[1].key_ops=m.filter(S),Promise.all([r.importKey("jwk",t[0],c,!0,t[0].key_ops),r.importKey("jwk",t[1],c,f,t[1].key_ops)])})).then((function(t){return{publicKey:t[0],privateKey:t[1]}}));if((s||a&&"SHA-1"===(c.hash||{}).name)&&"importKey"===t&&"jwk"===o&&"HMAC"===c.name&&"oct"===i.kty)return r.importKey("raw",h(p(i.k)),u,O[3],O[4]);if(s&&"importKey"===t&&("spki"===o||"pkcs8"===o))return r.importKey("jwk",function(t){var e=b(t),r=!1;e.length>2&&(r=!0,e.shift());var n={ext:!0};if("1.2.840.113549.1.1.1"!==e[0][0])throw new TypeError("Unsupported key type");var o=["n","e","d","p","q","dp","dq","qi"],i=b(e[1]);r&&i.shift();for(var a=0;a2&&(n=!0,i.unshift(new Uint8Array([0]))),r[0][0]="1.2.840.113549.1.1.1",e=i,r.push(new Uint8Array(m(e)).buffer),n?r.unshift(new Uint8Array([0])):r[1]={tag:3,value:r[1]},new Uint8Array(m(r)).buffer}(g(t)),t}))),u}})),["encrypt","decrypt","sign","verify"].forEach((function(t){var e=r[t];r[t]=function(n,o,i,s){if(a&&(!i.byteLength||s&&!s.byteLength))throw new Error("Empy input is not allowed");var u,c=[].slice.call(arguments),f=v(n);if(a&&"decrypt"===t&&"AES-GCM"===f.name){var l=n.tagLength>>3;c[2]=(i.buffer||i).slice(0,i.byteLength-l),n.tag=(i.buffer||i).slice(i.byteLength-l)}c[1]=o._key;try{u=e.apply(r,c)}catch(t){return Promise.reject(t)}return a&&(u=new Promise((function(e,r){u.onabort=u.onerror=function(t){r(t)},u.oncomplete=function(r){if(r=r.target.result,"encrypt"===t&&r instanceof AesGcmEncryptResult){var n=r.ciphertext,o=r.tag;(r=new Uint8Array(n.byteLength+o.byteLength)).set(new Uint8Array(n),0),r.set(new Uint8Array(o),n.byteLength),r=r.buffer}e(r)}}))),u}})),a){var f=r.digest;r.digest=function(t,e){if(!e.byteLength)throw new Error("Empy input is not allowed");var n;try{n=f.call(r,t,e)}catch(t){return Promise.reject(t)}return n=new Promise((function(t,e){n.onabort=n.onerror=function(t){e(t)},n.oncomplete=function(e){t(e.target.result)}}))},t.crypto=Object.create(e,{getRandomValues:{value:function(t){return e.getRandomValues(t)}},subtle:{value:r}}),t.CryptoKey=w}s&&(e.subtle=r,t.Crypto=n,t.SubtleCrypto=o,t.CryptoKey=w)}}}function l(t){return btoa(t).replace(/\=+$/,"").replace(/\+/g,"-").replace(/\//g,"_")}function p(t){return t=(t+="===").slice(0,-t.length%4),atob(t.replace(/-/g,"+").replace(/_/g,"/"))}function h(t){for(var e=new Uint8Array(t.length),r=0;rt.length)throw new RangeError("Malformed DER");var r,n=t[e.pos++],o=t[e.pos++];if(o>=128){if(o&=127,e.end-e.pos=128){var s=n;for(n=4,e.splice(o,0,s>>24&255,s>>16&255,s>>8&255,255&s);n>1&&!(s>>24);)s<<=8,n--;n<4&&e.splice(o,4-n),n|=128}return e.splice(o-2,2,r,n),e}function w(t,e,r,n){Object.defineProperties(this,{_key:{value:t},type:{value:t.type,enumerable:!0},extractable:{value:void 0===r?t.extractable:r,enumerable:!0},algorithm:{value:void 0===e?t.algorithm:e,enumerable:!0},usages:{value:void 0===n?t.usages:n,enumerable:!0}})}function x(t){return"verify"===t||"encrypt"===t||"wrapKey"===t}function S(t){return"sign"===t||"decrypt"===t||"unwrapKey"===t}},"function"==typeof define&&define.amd?define([],(function(){return e(t)})):"object"==typeof module&&module.exports?module.exports=e(t):e(t)}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,r),i.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var n=r(8932);window.FHIR=n}(); +//# sourceMappingURL=fhir-client.min.js.map \ No newline at end of file diff --git a/dist/build/fhir-client.min.js.LICENSE.txt b/dist/build/fhir-client.min.js.LICENSE.txt new file mode 100644 index 00000000..079ad35b --- /dev/null +++ b/dist/build/fhir-client.min.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + +/** + * @file Web Cryptography API shim + * @author Artem S Vybornov + * @license MIT + */ diff --git a/dist/build/fhir-client.min.js.map b/dist/build/fhir-client.min.js.map new file mode 100644 index 00000000..3ece53f8 --- /dev/null +++ b/dist/build/fhir-client.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fhir-client.min.js","mappings":";wCAAA,QAC+C,EAE5C,WAAe,aAEhB,SAASA,EAAgBC,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,oCAExB,CAEA,SAASC,EAAkBC,EAAQC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,EAChD,CACF,CAEA,SAASO,EAAad,EAAae,EAAYC,GAM7C,OALID,GAAYb,EAAkBF,EAAYiB,UAAWF,GACrDC,GAAad,EAAkBF,EAAagB,GAChDL,OAAOC,eAAeZ,EAAa,YAAa,CAC9CU,UAAU,IAELV,CACT,CAoBA,SAASkB,EAAgBC,GAIvB,OAHAD,EAAkBP,OAAOS,eAAiBT,OAAOU,eAAeC,OAAS,SAAyBH,GAChG,OAAOA,EAAEI,WAAaZ,OAAOU,eAAeF,EAC9C,EACOD,EAAgBC,EACzB,CAEA,SAASK,EAAgBL,EAAGM,GAK1B,OAJAD,EAAkBb,OAAOS,eAAiBT,OAAOS,eAAeE,OAAS,SAAyBH,EAAGM,GAEnG,OADAN,EAAEI,UAAYE,EACPN,CACT,EACOK,EAAgBL,EAAGM,EAC5B,CAeA,SAASC,EAAuBC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,CACT,CAYA,SAASE,EAAaC,GACpB,IAAIC,EAhCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAC,QAAQnB,UAAUoB,QAAQC,KAAKN,QAAQC,UAAUG,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOG,GACP,OAAO,CACT,CACF,CAqBkCC,GAEhC,OAAO,WACL,IACIC,EADAC,EAAQxB,EAAgBY,GAG5B,GAAIC,EAA2B,CAC7B,IAAIY,EAAYzB,EAAgB0B,MAAMC,YAEtCJ,EAAST,QAAQC,UAAUS,EAAOI,UAAWH,EAC/C,MACEF,EAASC,EAAMK,MAAMH,KAAME,WAG7B,OAzBJ,SAAoCnB,EAAMW,GACxC,GAAIA,IAAyB,iBAATA,GAAqC,mBAATA,GAC9C,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIrC,UAAU,4DAGtB,OAAOyB,EAAuBC,EAChC,CAiBWqB,CAA2BJ,KAAMH,EAC1C,CACF,CAWA,SAASQ,IAkBP,OAhBEA,EADqB,oBAAZjB,SAA2BA,QAAQkB,IACrClB,QAAQkB,IAAI5B,OAEZ,SAAcnB,EAAQgD,EAAUC,GACrC,IAAIC,EAdV,SAAwBC,EAAQH,GAC9B,MAAQxC,OAAOM,UAAUsC,eAAejB,KAAKgB,EAAQH,IAEpC,QADfG,EAASpC,EAAgBoC,MAI3B,OAAOA,CACT,CAOiBE,CAAerD,EAAQgD,GAElC,GAAKE,EAAL,CACA,IAAII,EAAO9C,OAAO+C,yBAAyBL,EAAMF,GAEjD,OAAIM,EAAKP,IACAO,EAAKP,IAAIZ,KAAKQ,UAAUxC,OAAS,EAAIH,EAASiD,GAGhDK,EAAKE,KAPK,CAQnB,EAGKV,EAAKF,MAAMH,KAAME,UAC1B,CAEA,IAAIc,EAAuB,WACzB,SAASA,IACP9D,EAAgB8C,KAAMgB,GAEtBjD,OAAOC,eAAegC,KAAM,YAAa,CACvCe,MAAO,CAAC,EACRjD,UAAU,EACVD,cAAc,GAElB,CA4DA,OA1DAK,EAAa8C,EAAS,CAAC,CACrB/C,IAAK,mBACL8C,MAAO,SAA0BE,EAAMC,EAAUC,GACzCF,KAAQjB,KAAKoB,YACjBpB,KAAKoB,UAAUH,GAAQ,IAGzBjB,KAAKoB,UAAUH,GAAMI,KAAK,CACxBH,SAAUA,EACVC,QAASA,GAEb,GACC,CACDlD,IAAK,sBACL8C,MAAO,SAA6BE,EAAMC,GACxC,GAAMD,KAAQjB,KAAKoB,UAMnB,IAFA,IAAIE,EAAQtB,KAAKoB,UAAUH,GAElBxD,EAAI,EAAG8D,EAAID,EAAM5D,OAAQD,EAAI8D,EAAG9D,IACvC,GAAI6D,EAAM7D,GAAGyD,WAAaA,EAExB,YADAI,EAAME,OAAO/D,EAAG,EAItB,GACC,CACDQ,IAAK,gBACL8C,MAAO,SAAuBU,GAC5B,GAAMA,EAAMR,QAAQjB,KAAKoB,UAAzB,CAOA,IAHA,IACIM,EADQ1B,KAAKoB,UAAUK,EAAMR,MACTU,QAEflE,EAAI,EAAG8D,EAAIG,EAAYhE,OAAQD,EAAI8D,EAAG9D,IAAK,CAClD,IAAImE,EAAWF,EAAYjE,GAE3B,IACEmE,EAASV,SAASxB,KAAKM,KAAMyB,EAC/B,CAAE,MAAO9B,GACPkC,QAAQC,UAAUC,MAAK,WACrB,MAAMpC,CACR,GACF,CAEIiC,EAAST,SAAWS,EAAST,QAAQa,MACvChC,KAAKiC,oBAAoBR,EAAMR,KAAMW,EAASV,SAElD,CAEA,OAAQO,EAAMS,gBArBd,CAsBF,KAGKlB,CACT,CAtE2B,GAwEvBmB,EAA2B,SAAUC,IAzLzC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIjF,UAAU,sDAGtBgF,EAAShE,UAAYN,OAAOwE,OAAOD,GAAcA,EAAWjE,UAAW,CACrE4B,YAAa,CACXc,MAAOsB,EACPvE,UAAU,EACVD,cAAc,KAGlBE,OAAOC,eAAeqE,EAAU,YAAa,CAC3CvE,UAAU,IAERwE,GAAY1D,EAAgByD,EAAUC,EAC5C,CA0KEE,CAAUL,EAAaC,GAEvB,IAAIK,EAASxD,EAAakD,GAE1B,SAASA,IACP,IAAIO,EAgCJ,OA9BAxF,EAAgB8C,KAAMmC,IAEtBO,EAAQD,EAAO/C,KAAKM,OAOToB,WACTJ,EAAQtB,KAAKZ,EAAuB4D,IAKtC3E,OAAOC,eAAec,EAAuB4D,GAAQ,UAAW,CAC9D3B,OAAO,EACPjD,UAAU,EACVD,cAAc,IAEhBE,OAAOC,eAAec,EAAuB4D,GAAQ,UAAW,CAC9D3B,MAAO,KACPjD,UAAU,EACVD,cAAc,IAEhBE,OAAOC,eAAec,EAAuB4D,GAAQ,SAAU,CAC7D3B,WAAO4B,EACP7E,UAAU,EACVD,cAAc,IAET6E,CACT,CAsBA,OApBAxE,EAAaiE,EAAa,CAAC,CACzBlE,IAAK,WACL8C,MAAO,WACL,MAAO,sBACT,GACC,CACD9C,IAAK,gBACL8C,MAAO,SAAuBU,GACT,UAAfA,EAAMR,OACRjB,KAAK4C,SAAU,EAEa,mBAAjB5C,KAAK6C,SACd7C,KAAK6C,QAAQnD,KAAKM,KAAMyB,IAI5BpB,EAAK/B,EAAgB6D,EAAY9D,WAAY,gBAAiB2B,MAAMN,KAAKM,KAAMyB,EACjF,KAGKU,CACT,CA9D+B,CA8D7BnB,GACE8B,EAA+B,WACjC,SAASA,IACP5F,EAAgB8C,KAAM8C,GAItB/E,OAAOC,eAAegC,KAAM,SAAU,CACpCe,MAAO,IAAIoB,EACXrE,UAAU,EACVD,cAAc,GAElB,CA0DA,OAxDAK,EAAa4E,EAAiB,CAAC,CAC7B7E,IAAK,QACL8C,MAAO,SAAegC,GACpB,IAAItB,EAEJ,IACEA,EAAQ,IAAIuB,MAAM,QACpB,CAAE,MAAOrD,GACiB,oBAAbsD,SACJA,SAASC,aAMZzB,EAAQwB,SAASC,YAAY,UACvBC,UAAU,SAAS,GAAO,IALhC1B,EAAQwB,SAASG,qBACXnC,KAAO,QAQfQ,EAAQ,CACNR,KAAM,QACNoC,SAAS,EACTC,YAAY,EAGlB,CAEA,IAAIC,EAAeR,EAEnB,QAAqBJ,IAAjBY,EACF,GAAwB,oBAAbN,UACTM,EAAe,IAAIC,MAAM,+BACZC,KAAO,kBAEpB,IACEF,EAAe,IAAIG,aAAa,mCAClC,CAAE,MAAOC,IAGPJ,EAAe,IAAIC,MAAM,+BACZC,KAAO,YACtB,CAIJzD,KAAK4D,OAAOb,OAASQ,EACrBvD,KAAK4D,OAAOC,cAAcpC,EAC5B,GACC,CACDxD,IAAK,WACL8C,MAAO,WACL,MAAO,0BACT,KAGK+B,CACT,CAtEmC,GAwEb,oBAAXgB,QAA0BA,OAAOC,cAG1CjB,EAAgBzE,UAAUyF,OAAOC,aAAe,kBAChD5B,EAAY9D,UAAUyF,OAAOC,aAAe,eAmB9C,SAAWhF,IAhBX,SAAwBA,GACtB,OAAIA,EAAKiF,0CACPC,QAAQC,IAAI,sFACL,GAUsB,mBAAjBnF,EAAKoF,UAA2BpF,EAAKoF,QAAQ9F,UAAUsC,eAAe,YAAc5B,EAAK+D,eACzG,EAIOsB,CAAerF,KAIpBA,EAAK+D,gBAAkBA,EACvB/D,EAAKoD,YAAcA,EACpB,CARD,CAQmB,oBAATpD,KAAuBA,KAAO,EAAAsF,EAEzC,OA9X4D,0ECU1C,IACdC,kCANLC,EAAQC,WA6IR,SAAoBC,GAQnB,GAPAA,EAAK,IAAMzE,KAAK0E,UAAY,KAAO,IAClC1E,KAAK2E,WACJ3E,KAAK0E,UAAY,MAAQ,KAC1BD,EAAK,IACJzE,KAAK0E,UAAY,MAAQ,KAC1B,IAAME,EAAOL,QAAQM,SAAS7E,KAAK8E,MAE/B9E,KAAK0E,UAAV,CAIA,IAAMK,EAAI,UAAY/E,KAAKgF,MAC3BP,EAAKjD,OAAO,EAAG,EAAGuD,EAAG,kBAKrB,IAAIE,EAAQ,EACRC,EAAQ,EACZT,EAAK,GAAGU,QAAQ,eAAe,SAAAC,GAChB,OAAVA,IAGJH,IACc,OAAVG,IAGHF,EAAQD,GAEV,IAEAR,EAAKjD,OAAO0D,EAAO,EAAGH,EAtBtB,CAuBD,EA7KAR,EAAQc,KA+LR,SAAcC,GACb,IACKA,EACHf,EAAQgB,QAAQC,QAAQ,QAASF,GAEjCf,EAAQgB,QAAQE,WAAW,QAE7B,CAAE,MAAOC,GAER,CAEF,EAzMAnB,EAAQoB,KAiNR,WACC,IAAIC,EACJ,IACCA,EAAIrB,EAAQgB,QAAQM,QAAQ,QAC7B,CAAE,MAAOH,GAER,CAQD,OAJKE,GAAwB,oBAAZE,SAA2B,QAASA,UACpDF,EAAIE,QAAQC,IAAIC,OAGVJ,CACR,EA/NArB,EAAQG,UAyGR,WAIC,QAAsB,oBAAXuB,SAA0BA,OAAOH,SAAoC,aAAxBG,OAAOH,QAAQ7E,OAAuBgF,OAAOH,QAAQI,UAKpF,oBAAdC,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUC,cAAcjB,MAAM,4BAQ3E,oBAAbnC,UAA4BA,SAASqD,iBAAmBrD,SAASqD,gBAAgBC,OAAStD,SAASqD,gBAAgBC,MAAMC,kBAEpH,oBAAXP,QAA0BA,OAAOhC,UAAYgC,OAAOhC,QAAQwC,SAAYR,OAAOhC,QAAQyC,WAAaT,OAAOhC,QAAQ0C,QAGrG,oBAAdR,WAA6BA,UAAUC,YAAcQ,EAAIT,UAAUC,UAAUC,cAAcjB,MAAM,oBAAsByB,SAASD,EAAE,GAAI,KAAO,IAE/H,oBAAdT,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcjB,MAAM,uBAXrG,IAAIwB,CAYL,EAjIArC,EAAQgB,QA2OR,WACC,IAGC,OAAOuB,YACR,CAAE,MAAOpB,GAER,CAEF,CApPkBqB,GAClBxC,EAAQyC,SACH1C,GAAS,EAEN,WACDA,IACJA,GAAS,EACTL,QAAQgD,KAAK,yIAEf,GAOD1C,EAAQ2C,OAAS,CAChB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAwFD3C,EAAQL,IAAMD,QAAQkD,OAASlD,QAAQC,KAAQ,WAAO,EAkEtDU,EAAOL,QAAU6C,EAAQ,KAARA,CAAoB7C,GAEhBK,EAAOL,QAArB8C,WAMIC,EAAI,SAAUC,GACxB,IACC,OAAOC,KAAKC,UAAUF,EACvB,CAAE,MAAO7B,GACR,MAAO,+BAAiCA,EAAMgC,OAC/C,CACD,2KCGA9C,EAAOL,QA3QP,SAAewB,GAqDd,SAAS4B,EAAYhD,GACpB,IAAIiD,EAEAC,EACAC,EAFAC,EAAiB,KAIrB,SAASZ,IAAe,QAAAa,EAAA9H,UAAAxC,OAAN+G,EAAI,IAAAwD,MAAAD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJzD,EAAIyD,GAAAhI,UAAAgI,GAErB,GAAKf,EAAMgB,QAAX,CAIA,IAAMpJ,EAAOoI,EAGPiB,EAAOC,OAAO,IAAIC,MAClBC,EAAKH,GAAQR,GAAYQ,GAC/BrJ,EAAK+F,KAAOyD,EACZxJ,EAAKyJ,KAAOZ,EACZ7I,EAAKqJ,KAAOA,EACZR,EAAWQ,EAEX3D,EAAK,GAAKkD,EAAYc,OAAOhE,EAAK,IAEX,iBAAZA,EAAK,IAEfA,EAAKiE,QAAQ,MAId,IAAIzD,EAAQ,EACZR,EAAK,GAAKA,EAAK,GAAGU,QAAQ,iBAAiB,SAACC,EAAOuD,GAElD,GAAc,OAAVvD,EACH,MAAO,IAERH,IACA,IAAM2D,EAAYjB,EAAYN,WAAWsB,GACzC,GAAyB,mBAAdC,EAA0B,CACpC,IAAMC,EAAMpE,EAAKQ,GACjBG,EAAQwD,EAAUlJ,KAAKX,EAAM8J,GAG7BpE,EAAKjD,OAAOyD,EAAO,GACnBA,GACD,CACA,OAAOG,CACR,IAGAuC,EAAYnD,WAAW9E,KAAKX,EAAM0F,IAEpB1F,EAAKmF,KAAOyD,EAAYzD,KAChC/D,MAAMpB,EAAM0F,EA3ClB,CA4CD,CAgCA,OA9BA0C,EAAMxC,UAAYA,EAClBwC,EAAMzC,UAAYiD,EAAYjD,YAC9ByC,EAAMnC,MAAQ2C,EAAYmB,YAAYnE,GACtCwC,EAAM4B,OAASA,EACf5B,EAAMH,QAAUW,EAAYX,QAE5BjJ,OAAOC,eAAemJ,EAAO,UAAW,CACvCvJ,YAAY,EACZC,cAAc,EACdyC,IAAK,WACJ,OAAuB,OAAnByH,EACIA,GAEJF,IAAoBF,EAAYrC,aACnCuC,EAAkBF,EAAYrC,WAC9BwC,EAAeH,EAAYQ,QAAQxD,IAG7BmD,EACR,EACAkB,IAAK,SAAAzB,GACJQ,EAAiBR,CAClB,IAI+B,mBAArBI,EAAYsB,MACtBtB,EAAYsB,KAAK9B,GAGXA,CACR,CAEA,SAAS4B,EAAOpE,EAAWuE,GAC1B,IAAMC,EAAWxB,EAAY3H,KAAK2E,gBAAkC,IAAduE,EAA4B,IAAMA,GAAavE,GAErG,OADAwE,EAASjF,IAAMlE,KAAKkE,IACbiF,CACR,CAwFA,SAASC,EAAYC,GACpB,OAAOA,EAAOC,WACZC,UAAU,EAAGF,EAAOC,WAAW5L,OAAS,GACxCyH,QAAQ,UAAW,IACtB,CA0BA,OAvQAwC,EAAYR,MAAQQ,EACpBA,EAAY6B,QAAU7B,EACtBA,EAAYc,OAoPZ,SAAgBI,GACf,OAAIA,aAAerF,MACXqF,EAAIvH,OAASuH,EAAInB,QAElBmB,CACR,EAxPAlB,EAAY8B,QAwLZ,WACC,IAAMnE,EAAa,GAAAoE,QAAA,EAAAC,EAAAH,SACf7B,EAAYiC,MAAMC,IAAIT,KAAY,EAAAO,EAAAH,SAClC7B,EAAYmC,MAAMD,IAAIT,GAAaS,KAAI,SAAAlF,GAAS,MAAI,IAAMA,CAAS,MACrEoF,KAAK,KAEP,OADApC,EAAYqC,OAAO,IACZ1E,CACR,EA9LAqC,EAAYqC,OAsJZ,SAAgB1E,GAOf,IAAI7H,EANJkK,EAAYtC,KAAKC,GACjBqC,EAAYrC,WAAaA,EAEzBqC,EAAYiC,MAAQ,GACpBjC,EAAYmC,MAAQ,GAGpB,IAAMG,GAA+B,iBAAf3E,EAA0BA,EAAa,IAAI2E,MAAM,UACjEC,EAAMD,EAAMvM,OAElB,IAAKD,EAAI,EAAGA,EAAIyM,EAAKzM,IACfwM,EAAMxM,KAOW,OAFtB6H,EAAa2E,EAAMxM,GAAG0H,QAAQ,MAAO,QAEtB,GACdwC,EAAYmC,MAAMzI,KAAK,IAAI8I,OAAO,IAAM7E,EAAW3D,MAAM,GAAK,MAE9DgG,EAAYiC,MAAMvI,KAAK,IAAI8I,OAAO,IAAM7E,EAAa,MAGxD,EA9KAqC,EAAYQ,QAsMZ,SAAiB1E,GAChB,GAA8B,MAA1BA,EAAKA,EAAK/F,OAAS,GACtB,OAAO,EAGR,IAAID,EACAyM,EAEJ,IAAKzM,EAAI,EAAGyM,EAAMvC,EAAYmC,MAAMpM,OAAQD,EAAIyM,EAAKzM,IACpD,GAAIkK,EAAYmC,MAAMrM,GAAG2M,KAAK3G,GAC7B,OAAO,EAIT,IAAKhG,EAAI,EAAGyM,EAAMvC,EAAYiC,MAAMlM,OAAQD,EAAIyM,EAAKzM,IACpD,GAAIkK,EAAYiC,MAAMnM,GAAG2M,KAAK3G,GAC7B,OAAO,EAIT,OAAO,CACR,EA1NAkE,EAAY9C,SAAWuC,EAAQ,MAC/BO,EAAYX,QA0PZ,WACC/C,QAAQgD,KAAK,wIACd,EA1PAlJ,OAAOsM,KAAKtE,GAAKuE,SAAQ,SAAArM,GACxB0J,EAAY1J,GAAO8H,EAAI9H,EACxB,IAMA0J,EAAYiC,MAAQ,GACpBjC,EAAYmC,MAAQ,GAOpBnC,EAAYN,WAAa,CAAC,EAkB1BM,EAAYmB,YAVZ,SAAqBnE,GAGpB,IAFA,IAAI4F,EAAO,EAEF9M,EAAI,EAAGA,EAAIkH,EAAUjH,OAAQD,IACrC8M,GAASA,GAAQ,GAAKA,EAAQ5F,EAAU6F,WAAW/M,GACnD8M,GAAQ,EAGT,OAAO5C,EAAYT,OAAOuD,KAAKC,IAAIH,GAAQ5C,EAAYT,OAAOxJ,OAC/D,EA2NAiK,EAAYqC,OAAOrC,EAAYhC,QAExBgC,CACR,k+BC/QA,IAAAgD,EAAAvD,EAAA,MAkBAwD,EAAAxD,EAAA,KACAyD,EAAAzD,EAAA,MAOQ0D,GAAwC,oBAApBC,gBAAkC9E,OAASmB,EAAQ,OAAvE0D,SAGF3D,EAAQwD,EAAAxD,MAAO4B,OAAO,UAE5B,SAOeiC,EAAaC,EAAAC,GAAA,OAAAC,EAAAhL,MAAC,KAADD,UAAA,CAyB5B,SAAAiL,IAFC,OAEDA,GAAA,EAAAC,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAzBA,SAAAC,EACIC,EACAC,GAAc,IAAAhL,EAKCiL,EAAaC,EAAA,OAAAN,EAAA7B,QAAAoC,MAAC,SAADC,GAAA,cAAAA,EAAArD,KAAAqD,EAAAC,MAAA,OAFsB,GAEtBH,EAAA,WAQ3B,OAR2BA,GAAA,EAAAP,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAA5B,SAAAS,EAA6BC,GAAS,IAAAC,EAAAC,EAAAC,EAAA,OAAAd,EAAA7B,QAAAoC,MAAA,SAAAQ,GAAA,cAAAA,EAAA5D,KAAA4D,EAAAN,MAAA,OAG4E,OAFxGG,EAAeD,EAAKK,SAASpC,MAAM,KAAKqC,OAC9C,EAAA3B,EAAA4B,QAAON,EAAc,gBAAFvC,OAAkBsC,EAAI,OACzC,EAAArB,EAAA4B,QAAO1B,EAAA2B,mBAAmBC,QAAQR,IAAiB,EAAG,kBAAFvC,OAAoBuC,EAAY,2BAA0BG,EAAAN,KAAA,GACpF,EAAAnB,EAAA+B,2BAA0BjB,EAAOkB,MAAMC,WAAU,OAEX,OAF1DV,EAAWE,EAAAS,KACXV,GAAc,EAAAxB,EAAAmC,iBAAgBZ,EAAaD,GACjDD,EAAKe,aAAa/D,IAAImD,EAAaV,EAAOuB,QAAQC,IAAcb,EAAAc,OAAA,SACzDlB,EAAKmB,MAAI,wBAAAf,EAAAgB,OAAA,GAAArB,EAAA,MACnB5L,MAAA,KAAAD,UAAA,EARcwL,EAAa,SAAA2B,GAAA,OAAA1B,EAAAxL,MAAC,KAADD,UAAA,EAFtBO,GAAO,EAAAkK,EAAA2C,UAAS,IAAK7B,EAAOkB,MAAMC,aAYX,iBAAlBpB,GAA8BA,aAA0B+B,KAAG,CAAA1B,EAAAC,KAAA,eAAAD,EAAAC,KAAA,EAC9CJ,EAAc,IAAI6B,IAAI/B,EAAiB,GAAI/K,IAAM,cAAAoL,EAAA2B,GAAA3B,EAAAgB,KAAAhB,EAAAqB,OAAA,UAA5DO,IAAG5B,EAAA2B,KAAA,cAAA3B,EAAAC,KAAA,GAGWJ,EAAc,IAAI6B,IAAI/B,EAAeiC,IAAM,GAAIhN,IAAM,QAA9D,OAAlB+K,EAAeiC,IAAG5B,EAAAgB,KAAAhB,EAAAqB,OAAA,SACX1B,GAAc,yBAAAK,EAAAuB,OAAA,GAAA7B,EAAA,KACxBJ,EAAAhL,MAAA,KAAAD,UAAA,CAyFD,SAASwN,EACLC,EACAC,EACAC,EACApC,EACAD,GAIA,IAAIsC,GAAQ,EAAAnD,EAAAoD,WAAUH,EAAYI,mBAC7BC,OAAOzO,SACPqK,KAAI,SAAAqE,GAAI,OAAIC,OAAOD,GAAME,MAAM,IAC/BH,OAAOzO,SAaZ,KAVAsO,EAAQA,EAAMG,QAAO,SAACpP,EAAGpB,GAErB,QADcqQ,EAAMrB,QAAQ5N,EAAGpB,EAAI,IACtB,IACT0J,EAAM,iCAAoCtI,GACnC,GAGf,KAGWnB,OACP,OAAOmE,QAAQC,UAKnB,IAAMuM,EAA8B,CAAC,EACrCP,EAAMxD,SAAQ,SAAA4D,GACV,IAAMhE,EAAMgE,EAAKjE,MAAM,KAAKvM,OACvB2Q,EAAOnE,KACRmE,EAAOnE,GAAO,IAElBmE,EAAOnE,GAAK7I,KAAK6M,EACrB,IAIA,IAAII,EAAqBzM,QAAQC,UAOjC,OANA/D,OAAOsM,KAAKgE,GAAQE,OAAOjE,SAAQ,SAAAJ,GAC/B,IAAMsE,EAAQH,EAAOnE,GACrBoE,EAAOA,EAAKvM,MAAK,kBAAMF,QAAQ4M,IAAID,EAAM3E,KAAI,SAACqE,GAC1C,OA3FZ,SACIP,EACAO,EACAQ,EACAb,EACApC,EACAD,GAEA,IAAMmD,GAAO,EAAAhE,EAAAiE,SAAQjB,EAAKO,GAC1B,GAAIS,EAAM,CACN,IAAME,EAAU5G,MAAM4G,QAAQF,GAC9B,OAAO9M,QAAQ4M,KAAI,EAAA9D,EAAAoD,WAAUY,GAAMV,OAAOzO,SAASqK,KAAI,SAACiF,EAAMrR,GAC1D,IAAMsR,EAAMD,EAAKE,UACjB,GAAID,EACA,OA/ChB,SACIE,EACApB,EACApC,EACAD,GAEA,IAAKqC,EAAMoB,GAAQ,CAEf,IAAQrL,EAAoB4H,EAApB5H,OAAQsL,EAAY1D,EAAZ0D,QAKhBrB,EAAMoB,GAASxD,EAAO0D,QAAQ,CAC1B1B,IAAKwB,EACLC,QAAAA,EACAtL,OAAAA,IACD7B,MAAK,SAAAqN,GAEJ,OADAvB,EAAMoB,GAASG,EACRA,CACX,IAAG,SAAC1J,GAEA,aADOmI,EAAMoB,GACPvJ,CACV,IAGJ,OAAO7D,QAAQC,QAAQ+L,EAAMoB,GACjC,CAoBuBI,CAAON,EAAKlB,EAAOpC,EAAQD,GAAgBzJ,MAAK,SAAAuN,GAC/CZ,IACIG,EACIX,EAAKzB,QAAQ,OAAS,GACtB,EAAA9B,EAAA4E,SAAQ5B,EAAK,GAAFjE,OAAKwE,EAAK/I,QAAQ,KAAM,IAAFuE,OAAMjM,EAAC,OAAQ6R,IAEhD,EAAA3E,EAAA4E,SAAQ5B,EAAK,GAAFjE,OAAKwE,EAAI,KAAAxE,OAAIjM,GAAK6R,IAGjC,EAAA3E,EAAA4E,SAAQ5B,EAAKO,EAAMoB,GAG/B,IAAGE,OAAM,SAACC,GAEN,GAAkB,MAAdA,EAAGC,OACH,MAAMD,CAEd,GAER,KAER,CAwDmBE,CAAWhC,EAAKO,IAAQN,EAAYc,MAAOb,EAAOpC,EAAQD,EACrE,IAAG,GACP,IACO8C,CACX,CAEA,IAYqBsB,EAAM,WAmNvB,SAAAC,EAAArG,UAlEA,SAAAoG,EAAYE,EAAiCnD,GAAsC,IAAAjK,EAAA,QAAAqN,EAAAvG,SAAA,KAAAoG,GA4xBnF,KAAAI,MAAQrF,EAAAqF,MA1xBJ,IAAMC,EAAyB,iBAATtD,EAAoB,CAAEC,UAAWD,GAAUA,GAGjE,EAAAhC,EAAA4B,QACI0D,EAAOrD,WAAaqD,EAAOrD,UAAUxH,MAAM,iBAC3C,kEAGJpF,KAAK2M,MAAQsD,EACbjQ,KAAK8P,YAAcA,EACnB9P,KAAKkQ,aAAe,KAEpB,IAAMzE,EAASzL,KAGfA,KAAKgN,QAAU,CACX,MAAIC,GAAO,OAAOxB,EAAO0E,cAAgB,EACzCC,KAAM,SAAC5E,GACH,IAAMyB,EAAKvK,EAAKsK,QAAQC,GACxB,OAAOA,EACHvK,EAAKyM,QAAOkB,EAAAA,EAAC,CAAC,EAAI7E,GAAc,IAAEiC,IAAK,WAAF/D,OAAauD,MAClDpL,QAAQyO,OAAO,IAAI9M,MAAM,4BACjC,EACA2L,QAAS,SAAC3D,GAAoC,IAApBoC,EAAW1N,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrC,OAAIwC,EAAKsK,QAAQC,IACN,EAAA7B,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAC,SAAAiF,IAAA,IAAApP,EAAA,OAAAkK,EAAA7B,QAAAoC,MAAA,SAAA4E,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA1E,MAAA,cAAA0E,EAAA1E,KAAA,EACkBd,EAAcQ,EAAgB9I,GAAK,OAA5C,OAAPvB,EAAOqP,EAAA3D,KAAA2D,EAAAtD,OAAA,SACNxK,EAAKyM,QAAQhO,EAASyM,IAAY,wBAAA4C,EAAApD,OAAA,GAAAmD,EAAA,IAFtC,GAKA1O,QAAQyO,OAAO,IAAI9M,MAAM,4BAExC,GAIJxD,KAAKyQ,UAAY,CACb,MAAIxD,GAAO,OAAOxB,EAAOiF,gBAAkB,EAC3CN,KAAM,SAAA5E,GACF,IAAMyB,EAAKvK,EAAK+N,UAAUxD,GAC1B,OAAOA,EACHvK,EAAKyM,QAAOkB,EAAAA,EAAC,CAAC,EAAI7E,GAAc,IAAEiC,IAAK,aAAF/D,OAAeuD,MACpDpL,QAAQyO,OAAO,IAAI9M,MAAM,8BACjC,GAIJxD,KAAK2Q,KAAO,CACR,YAAIC,GAAa,OAAOnF,EAAOoF,aAAe,EAC9C,MAAI5D,GAAO,OAAOxB,EAAOqF,WAAa,EACtC,gBAAI7E,GAAiB,OAAOR,EAAOsF,aAAe,EAClDX,KAAM,SAAA5E,GACF,IAAMoF,EAAWlO,EAAKiO,KAAKC,SAC3B,OAAOA,EACHlO,EAAKyM,QAAOkB,EAAAA,EAAC,CAAC,EAAI7E,GAAc,IAAEiC,IAAKmD,KACvC/O,QAAQyO,OAAO,IAAI9M,MAAM,yBACjC,GAKJxD,KAAKgR,QAASlB,EAA+BmB,KACjD,GAEA,EAAAhT,IAAA,UAAA8C,MAQA,SAAQmQ,GAEJ,GAAqB,mBAAVA,EAAsB,CAC7B,IAAM/P,EAA+B,CACjCgQ,QAASnR,KAAK2M,MAAMC,UAAUzH,QAAQ,MAAO,KAG3CiM,EAAcpR,KAAKqR,SAAS,8BAClC,GAAID,EACAjQ,EAAQmQ,KAAO,CAAEC,MAAOH,OAEvB,CACD,IAAAI,EAA+BxR,KAAK2M,MAA5B8E,EAAQD,EAARC,SAAUC,EAAQF,EAARE,SACdD,GAAYC,IACZvQ,EAAQmQ,KAAO,CACXX,KAAMc,EACNE,KAAMD,IAIlB1R,KAAK4R,IAAMV,EAAO/P,GAElB,IAAM0Q,EAAY7R,KAAKqR,SAAS,yBAC5BQ,IACA7R,KAAKgN,QAAQ4E,IAAMV,EAAMb,EAAAA,EAAC,CAAC,EACpBlP,GAAO,IACV6L,QAAS6E,MAIrB,OAAO7R,IACX,GAEA,CAAA/B,IAAA,eAAA8C,MAIA,WAEI,IAAM+Q,EAAgB9R,KAAK2M,MAAMmF,cACjC,OAAIA,EAGKA,EAAc9E,QAUZ8E,EAAc9E,UATXhN,KAAK2M,MAAMoF,OAAS,IAAI3M,MAAM,0BAKhC+B,EAAM,+FAJNA,EAAMyD,EAAApB,QAAIwI,aAAc,UAAW,WAMhC,OAKXhS,KAAK2M,MAAMsF,aACX9K,EAAMyD,EAAApB,QAAI0I,WAAY,kCAGtB/K,EAAMyD,EAAApB,QAAI2I,cAAe,oBAEtB,KACX,GAEA,CAAAlU,IAAA,iBAAA8C,MAMA,WAEI,IAAM+Q,EAAgB9R,KAAK2M,MAAMmF,cACjC,OAAIA,EAGKA,EAAcrB,UAUZqB,EAAcrB,YATXzQ,KAAK2M,MAAMoF,OAAS,IAAI3M,MAAM,4BAKhC+B,EAAM,4JAJNA,EAAMyD,EAAApB,QAAIwI,aAAc,YAAa,aAMlC,OAKXhS,KAAK2M,MAAMsF,aACX9K,EAAMyD,EAAApB,QAAI0I,WAAY,oCAGtB/K,EAAMyD,EAAApB,QAAI2I,cAAe,sBAEtB,KACX,GAEA,CAAAlU,IAAA,aAAA8C,MAKA,WAEI,IAAM+Q,EAAgB9R,KAAK2M,MAAMmF,cACjC,GAAIA,EAAe,CACf,IAAMM,EAAUN,EAAcO,SACxBN,EAAQ/R,KAAK2M,MAAMoF,OAAS,GAIlC,IAAKK,EAAS,CACV,IAAME,EAAcP,EAAM3M,MAAM,cAC1BmN,EAAcR,EAAM3M,MAAM,eAC1BoN,EAAcT,EAAM3M,MAAM,gBAahC,OAFI+B,EAVCmL,IAAeE,GAAeD,GAUzB,4EARF,gKAUD,KAEX,OAAO,EAAA5H,EAAA8H,WAAUL,EAASpS,KAAK8P,aAQnC,OANI9P,KAAK2M,MAAMsF,aACX9K,EAAMyD,EAAApB,QAAI0I,WAAY,gBAGtB/K,EAAMyD,EAAApB,QAAI2I,cAAe,YAEtB,IACX,GAEA,CAAAlU,IAAA,cAAA8C,MAKA,WAEI,IAAMqR,EAAUpS,KAAK0S,aACrB,OAAIN,EAGIA,EAAQxB,SACDwB,EAAQxB,SAAS3G,MAAM,KAAKtI,OAAO,GAAGoI,KAAK,KAE/CqI,EAAQO,QAEZ,IACX,GAEA,CAAA1U,IAAA,YAAA8C,MAGA,WAEI,IAAM4R,EAAU3S,KAAK6Q,cACrB,OAAI8B,EACOA,EAAQ1I,MAAM,KAAK,GAEvB,IACX,GAEA,CAAAhM,IAAA,cAAA8C,MAIA,WAEI,IAAM4R,EAAU3S,KAAK6Q,cACrB,OAAI8B,EACOA,EAAQ1I,MAAM,KAAK,GAEvB,IACX,GAEA,CAAAhM,IAAA,yBAAA8C,MAIA,WAEI,IAAMqQ,EAAcpR,KAAKqR,SAAS,8BAClC,GAAID,EACA,MAAO,UAAYA,EAEvB,IAAAwB,EAA+B5S,KAAK2M,MAA5B8E,EAAQmB,EAARnB,SAAUC,EAAQkB,EAARlB,SAClB,OAAID,GAAYC,EACL,SAAW1R,KAAK8P,YAAY+C,KAAKpB,EAAW,IAAMC,GAEtD,IACX,GAEA,CAAAzT,IAAA,cAAA8C,OAAA+R,GAAA,EAAA1H,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAIQ,SAAAyH,IAAA,IAAAxN,EAAAtH,EAAA,OAAAoN,EAAA7B,QAAAoC,MAAA,SAAAoH,GAAA,cAAAA,EAAAxK,KAAAwK,EAAAlH,MAAA,OACyC,OAAvCvG,EAAUvF,KAAK8P,YAAYmD,aAAYD,EAAAlH,KAAA,EAC3BvG,EAAQjF,IAAIuK,EAAAqI,WAAU,OAA/B,KAAHjV,EAAG+U,EAAAnG,MACA,CAAFmG,EAAAlH,KAAA,eAAAkH,EAAAlH,KAAA,EACGvG,EAAQ4N,MAAMlV,GAAI,cAAA+U,EAAAlH,KAAA,EAEtBvG,EAAQ4N,MAAMtI,EAAAqI,WAAU,OAC9BlT,KAAK2M,MAAMmF,cAAgB,CAAC,EAAE,yBAAAkB,EAAA5F,OAAA,GAAA2F,EAAA,UACjC,WARwB,OAAAD,EAAA3S,MAAC,KAADD,UAAA,IAUzB,CAAAjC,IAAA,SAAA8C,MAQA,SACIqS,EACA5H,GAGA,OAAOxL,KAAKmP,QAAOkB,EAAAA,EAAC,CAAC,EACd7E,GAAc,IACjBiC,IAAK,GAAF/D,OAAK0J,EAASnH,cACjBoH,OAAQ,OACRC,KAAM9L,KAAKC,UAAU2L,GACrBlE,QAAOmB,EAAA,CAEH,eAAgB,qBACZ7E,GAAkB,CAAC,GAAG0D,WAGtC,GAEA,CAAAjR,IAAA,SAAA8C,MASA,SACIqS,EACA5H,GAGA,OAAOxL,KAAKmP,QAAOkB,EAAAA,EAAC,CAAC,EACd7E,GAAc,IACjBiC,IAAK,GAAF/D,OAAK0J,EAASnH,aAAY,KAAAvC,OAAI0J,EAASnG,IAC1CoG,OAAQ,MACRC,KAAM9L,KAAKC,UAAU2L,GACrBlE,QAAOmB,EAAA,CAEH,eAAgB,qBACZ7E,GAAkB,CAAC,GAAG0D,WAGtC,GAEA,CAAAjR,IAAA,SAAA8C,MASA,SAAoB0M,GAAyD,IAA5CjC,EAAAtL,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAA0C,CAAC,EAExE,OAAOF,KAAKmP,QAAOkB,EAAAA,EAAA,GACZ7E,GAAc,IACjBiC,IAAAA,EACA4F,OAAQ,WAEhB,GAEA,CAAApV,IAAA,QAAA8C,OAAAwS,GAAA,EAAAnI,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAkBA,SAAAkI,EAAkD/F,EAAagG,GAA2B,IAAAjI,EAAAkI,EAAAxT,UAAA,OAAAmL,EAAA7B,QAAAoC,MAAA,SAAA+H,GAAA,cAAAA,EAAAnL,KAAAmL,EAAA7H,MAAA,OAE/D,OAFiEN,EAAAkI,EAAAhW,OAAA,QAAAiF,IAAA+Q,EAAA,GAAAA,EAAA,GAA0C,CAAC,GAEnI,EAAA/I,EAAAiJ,iBAAgBH,GAAOE,EAAAzG,OAAA,SAChBlN,KAAKmP,QAAOkB,EAAAA,EAAA,GACZ7E,GAAc,IACjBiC,IAAAA,EACA4F,OAAQ,QACRC,KAAM9L,KAAKC,UAAUgM,GACrBvE,QAAOmB,EAAA,CACH,OAAU,sBACV,eAAgB,8CACb7E,EAAe0D,aAExB,wBAAAyE,EAAAvG,OAAA,GAAAoG,EAAA,UACL,SAdUK,EAAAC,GAAA,OAAAP,EAAApT,MAAA,KAAAD,UAAA,IAgBX,CAAAjC,IAAA,UAAA8C,OAAAgT,GAAA,EAAA3I,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAOA,SAAA0I,EACIxI,GAAoD,IAAAoC,EAAAqG,EAAAC,EAAAC,EAAA1G,EAAAtM,EAAAyC,EAAAwQ,EAAAC,EAAAC,EAAA,KAAAC,EAAArU,UAAA,OAAAmL,EAAA7B,QAAAoC,MAAA,SAAA4I,GAAA,cAAAA,EAAAhM,KAAAgM,EAAA1I,MAAA,OAsCY,OArChE8B,EAAA2G,EAAA7W,OAAA,QAAAiF,IAAA4R,EAAA,GAAAA,EAAA,GAAsC,CAAC,EACvCN,EAAAM,EAAA7W,OAAA,QAAAiF,IAAA4R,EAAA,GAAAA,EAAA,GAAuC,CAAC,EAGlCJ,EAAexJ,EAAAxD,MAAO4B,OAAO,mBACnC,EAAA4B,EAAA4B,QAAOf,EAAgB,0DAIM,iBAAlBA,GAA8BA,aAA0B+B,KAC/DE,EAAMU,OAAO3C,GACbA,EAAiB,CAAC,GAGlBiC,EAAMU,OAAO3C,EAAeiC,KAGhCA,GAAM,EAAA9C,EAAA2C,UAASG,EAAKzN,KAAK2M,MAAMC,WAEzBzL,EAAU,CACZuN,OAA6B,IAAtBd,EAAYc,MACnB+F,OAAS7G,EAAY6G,KACrBC,UAAgC,QAArBR,EAAAtG,EAAY8G,iBAAS,IAAAR,EAAAA,EAAI,EACpClG,kBAAoBJ,EAAYI,mBAAqB,GACrD2G,iBAAiD,IAAhC/G,EAAY+G,gBAC7BC,OAAqC,mBAAtBhH,EAAYgH,OACvBhH,EAAYgH,YAGZjS,GAGFiB,EAAU4H,EAA+B5H,aAAUjB,EAGnDyR,EAAMjT,EAAQwT,gBAChB3U,KAAK6U,gBAAgB,CAAEjR,OAAAA,IAAU7B,MAAK,kBAAMyJ,CAA2C,IACvF3J,QAAQC,QAAQ0J,GAA4CgJ,EAAAtH,OAAA,SAIzDkH,EAIFrS,MAAK,SAAAyJ,GACF,IAAMsJ,EAAaR,EAAKS,yBAOxB,OANID,IACAtJ,EAAe0D,QAAOmB,EAAAA,EAAA,GACf7E,EAAe0D,SAAO,IACzB8F,cAAeF,KAGhBtJ,CACX,IAGCzJ,MAAK,SAAAyJ,GAOF,OANA2I,EACI,mCACA1G,EACAjC,EACArK,IAEG,EAAAwJ,EAAAwE,SAAgC1B,EAAKjC,GAAgBzJ,MAAK,SAAAlC,GAC7D,OAAI2L,EAAeyJ,iBACfZ,EAAYxU,EAA0CwU,SAC9CxU,EAA0CyT,MAE/CzT,CACX,GACJ,IAGC2P,MAAK,eAAA0F,GAAA,EAAA9J,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAC,SAAA6J,EAAOzP,GAAgB,OAAA2F,EAAA7B,QAAAoC,MAAA,SAAAwJ,GAAA,cAAAA,EAAA5M,KAAA4M,EAAAtJ,MAAA,UACN,KAAhBpG,EAAMgK,OAAa,CAAA0F,EAAAtJ,KAAA,YAGdwI,EAAKjD,SAAS,8BAA+B,CAAF+D,EAAAtJ,KAAA,QAC8C,MAA1FpG,EAAMgC,SAAW,yEACXhC,EAAK,UAKVvE,EAAQwT,gBAAiB,CAAFS,EAAAtJ,KAAA,SAC2F,OAAnHqI,EAAa,sGAAsGiB,EAAAtJ,KAAA,EAC7GwI,EAAKe,cAAa,OAYJ,QACY,MAApC3P,EAAMgC,SAAW,KAAOkD,EAAApB,QAAI8L,QACtB5P,EAZS,QASgD,OAA/DyO,EAAa,kDAAkDiB,EAAAtJ,KAAA,GACzDwI,EAAKe,cAEA,cAET3P,EAAK,yBAAA0P,EAAAhI,OAAA,GAAA+H,EAAA,KACd,gBAAAI,GAAA,OAAAL,EAAA/U,MAAA,KAAAD,UAAA,EA9BK,IAiCLsP,OAAM,SAAC9J,GAIJ,MAHoB,KAAhBA,EAAMgK,QACNyE,EAAa,kFAEXzO,CACV,IAEC3D,MAAK,SAACyT,GAMH,OAAKA,GAAuB,iBAARA,GAAoBA,aAAgB1K,EAC/CU,EAA2CyJ,gBACrC,CACH3B,KAAMkC,EACNnB,SAAAA,GAGDmB,GAIJC,GAAA,EAAArK,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAC,SAAAoK,EAAOC,GAA+B,OAAAtK,EAAA7B,QAAAoC,MAAA,SAAAgK,GAAA,cAAAA,EAAApN,KAAAoN,EAAA9J,MAAA,UAEhB,UAAtB6J,EAAM1J,aAAwB,CAAA2J,EAAA9J,KAAA,eAAA8J,EAAA9J,KAAA,EACxBjK,QAAQ4M,KAAMkH,EAAiCE,OAAS,IAAIhM,KAAI,SAAAiF,GAAI,OAAIpB,EAC1EoB,EAAKsE,SACLjS,EACA8S,EACAK,EACA9I,EACH,KAAE,OAAAoK,EAAA9J,KAAA,sBAAA8J,EAAA9J,KAAA,EAGG4B,EACFiI,EACAxU,EACA8S,EACAK,EACA9I,GACH,cAAAoK,EAAA1I,OAAA,SAGEyI,GAAK,wBAAAC,EAAAxI,OAAA,GAAAsI,EAAA,KACf,SAAAI,GAAA,OAAAL,EAAAtV,MAAA,KAAAD,UAAA,GAAEsV,GAGEzT,KAAI,eAAAgU,GAAA,EAAA3K,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAC,SAAA0K,EAAML,GAAK,IAAAM,EAAAnK,EAAAoK,EAAA,OAAA7K,EAAA7B,QAAAoC,MAAA,SAAAuK,GAAA,cAAAA,EAAA3N,KAAA2N,EAAArK,MAAA,WACT6J,GAA+B,UAAtBA,EAAM1J,aAAwB,CAAAkK,EAAArK,KAAA,SAOtC,GANKmK,EAASN,EAAMS,MAAQ,GAEzBjV,EAAQsT,OACRkB,GAASA,EAAME,OAAS,IAAIhM,KACxB,SAACgM,GAAkC,OAAKA,EAAMzC,QAAQ,MAI1DjS,EAAQyT,OAAQ,CAAFuB,EAAArK,KAAA,eAAAqK,EAAArK,KAAA,EACR3K,EAAQyT,OAAOe,EAAKtF,EAAA,GAAO4D,IAAgB,cAG/C9S,EAAQuT,UAAW,CAAFyB,EAAArK,KAAA,SAEM,GADnBA,EAAOmK,EAAMI,MAAK,SAAA9U,GAAC,MAAkB,QAAdA,EAAE+U,QAAkB,IACjDX,GAAQ,EAAAhL,EAAAoD,WAAU4H,IACd7J,IAAQA,EAAK2B,IAAG,CAAA0I,EAAArK,KAAA,gBAAAqK,EAAArK,KAAA,GACOwI,EAAKnF,QACxB,CACI1B,IAAK3B,EAAK2B,IAMV7J,OAAAA,GAEJzC,EACA8S,GACH,QAZa,GAARiC,EAAQC,EAAAtJ,MAcV1L,EAAQyT,OAAQ,CAAFuB,EAAArK,KAAA,gBAAAqK,EAAAjJ,OAAA,SACP,MAAI,YAGX/L,EAAQ6M,kBAAkBtQ,OAAQ,CAAFyY,EAAArK,KAAA,SACkB,OAAlD/N,OAAOwY,OAAOtC,EAAeiC,EAASM,YAAYL,EAAAjJ,OAAA,SAC3CyI,EAAMjM,QAAO,EAAAiB,EAAAoD,WAAUmI,EAASV,MAAQU,KAAU,eAAAC,EAAAjJ,OAAA,SAEtDyI,EAAMjM,QAAO,EAAAiB,EAAAoD,WAAUmI,KAAU,eAAAC,EAAAjJ,OAAA,SAI7CyI,GAAK,yBAAAQ,EAAA/I,OAAA,GAAA4I,EAAA,KACf,gBAAAS,GAAA,OAAAV,EAAA5V,MAAA,KAAAD,UAAA,EA7CI,IAgDJ6B,MAAK,SAAA4T,GACF,GAAIxU,EAAQuN,MACRuF,EAAgB,CAAC,OAEhB,IAAK9S,EAAQyT,QAAUzT,EAAQ6M,kBAAkBtQ,OAClD,MAAO,CACH8X,KAAMG,EACNa,WAAYvC,GAGpB,OAAO0B,CACX,IACC5T,MAAK,SAAA4T,GACF,OAAKnK,EAA2CyJ,gBACrC,CACH3B,KAAMqC,EACNtB,SAAAA,GAGDsB,CACX,IA7FG,IAAAF,CA8FX,KAAE,yBAAAjB,EAAApH,OAAA,GAAA4G,EAAA,UACT,SApOY0C,GAAA,OAAA3C,EAAA5T,MAAA,KAAAD,UAAA,IAsOb,CAAAjC,IAAA,kBAAA8C,MASA,WAAgD,IAAhCyK,EAAAtL,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAA8B,CAAC,EAErCkR,EAAepR,KAAKqR,SAAS,8BAC7BsF,EAAe3W,KAAKqR,SAAS,+BAC7BuF,EAAe5W,KAAK2M,MAAMiK,WAAa,EAE7C,OAAIxF,GAAeuF,GAAgBC,EAAY,GAAKtO,KAAKuO,MAAQ,IACtD7W,KAAK8W,QAAQtL,GAGjB3J,QAAQC,QAAQ9B,KAAK2M,MAChC,GAEA,CAAA1O,IAAA,UAAA8C,MAaA,WAAwC,QAAAgW,EAAA,KAAhCvL,EAAAtL,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAA8B,CAAC,EAE7B8W,EAAerM,EAAAxD,MAAO4B,OAAO,kBACnCiO,EAAa,+CAEb,IAAML,EAAwC,QAAzBM,EAAU,QAAV/C,EAAAlU,KAAK2M,aAAK,IAAAuH,OAAA,EAAAA,EAAEpC,qBAAa,IAAAmF,OAAA,EAAAA,EAAEC,eAChD,EAAAvM,EAAA4B,QAAOoK,EAAc,8CAErB,IAAMQ,EAAWnX,KAAK2M,MAAMwK,UAC5B,EAAAxM,EAAA4B,QAAO4K,EAAU,yCAEjB,IAAMC,EAASpX,KAAKqR,SAAS,wBAA0B,GACjDgG,EAAmBD,EAAOE,OAAO,uBAAyB,EAC1DC,EAAkBH,EAAOE,OAAO,sBAAwB,EAO9D,IANA,EAAA3M,EAAA4B,QAAO8K,GAAoBE,EAAiB,uEAMvCvX,KAAKkQ,aAAc,CAEpB,IAAMsH,EAAqBnH,EAAAA,EAAA,CACvBoH,YAAazX,KAAK8P,YAAY3O,QAAQuW,6BAA+B,eAClElM,GAAc,IACjB6H,OAAS,OACTsE,KAAS,OACTzI,QAAOmB,EAAAA,EAAA,GACC7E,EAAe0D,SAAW,CAAC,GAAC,IAChC,eAAgB,sCAEpBoE,KAAM,0CAAF5J,OAA4CkO,mBAAmBjB,MAIvE,KAAM,kBAAmBa,EAAsBtI,SAAU,CACrD,IAAA2I,EAAmC7X,KAAK2M,MAAhCmL,EAAYD,EAAZC,aAAcC,EAAQF,EAARE,SAClBD,IAEAN,EAAsBtI,QAAQ8F,cAAgB,SAAWhV,KAAK8P,YAAY+C,KACtEkF,EAAW,IAAMD,IAK7B9X,KAAKkQ,cAAe,EAAAvF,EAAAwE,SAAkCgI,EAAUK,GAC/DzV,MAAK,SAAAyT,GAKF,OAJA,EAAA7K,EAAA4B,QAAOiJ,EAAKwC,aAAc,4BAC1BhB,EAAa,wCAAyCxB,GACtDuB,EAAKpK,MAAMmF,cAAazB,EAAAA,EAAA,GAAQ0G,EAAKpK,MAAMmF,eAAkB0D,GAC7DuB,EAAKpK,MAAMiK,WAAY,EAAAjM,EAAAsN,0BAAyBzC,EAAMuB,EAAKjH,aACpDiH,EAAKpK,KAChB,IACC6C,OAAM,SAAC9J,WAKJ,MAJ6B,QAAzBuR,EAAU,QAAV/C,EAAA6C,EAAKpK,aAAK,IAAAuH,OAAA,EAAAA,EAAEpC,qBAAa,IAAAmF,OAAA,EAAAA,EAAEC,iBAC3BF,EAAa,yDACND,EAAKpK,MAAMmF,cAAcoF,eAE9BxR,CACV,IACCwS,SAAQ,WACLnB,EAAK7G,aAAe,KACpB,IAAMjS,EAAM8Y,EAAKpK,MAAM1O,IACnBA,EACA8Y,EAAKjH,YAAYmD,aAAajK,IAAI/K,EAAK8Y,EAAKpK,OAE5CqK,EAAa,8DAErB,IAGJ,OAAOhX,KAAKkQ,YAChB,GAIA,CAAAjS,IAAA,SAAA8C,MAgBA,SACIoX,EACA5X,GAGA,OAAO,EAAAoK,EAAAyN,QAAOD,EAAc5X,EAChC,GAEA,CAAAtC,IAAA,UAAA8C,MAiBA,SACIoX,EACA5X,GAGA,OAAO,EAAAoK,EAAA0N,SAAQF,EAAc5X,EACjC,GAOA,CAAAtC,IAAA,UAAA8C,MAaA,SAAQ4M,GAAmC,IAATO,EAAIhO,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,GACrC,OAAO,EAAAyK,EAAAiE,SAAQjB,EAAKO,EACxB,GAEA,CAAAjQ,IAAA,WAAA8C,MAYA,WAAkB,IAATmN,EAAIhO,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,GACZ,OAAO,EAAAyK,EAAAiE,SAAOyB,EAAC,CAAC,EAAIrQ,KAAK2M,OAASuB,EACtC,GAEA,CAAAjQ,IAAA,iBAAA8C,MAIA,WACI,OAAO,EAAA4J,EAAA+B,2BAA0B1M,KAAK2M,MAAMC,WACvC7K,MAAK,SAACuW,GAAQ,OAAKA,EAASC,WAAW,GAChD,GAEA,CAAAta,IAAA,iBAAA8C,MAOA,WACI,OAAOf,KAAKwY,iBAAiBzW,MAAK,SAAAwF,GAAI,IAAA2M,EAAC,OAAwB,QAAxBA,EAACrJ,EAAA4N,aAAqBlR,UAAE,IAAA2M,EAAAA,EAAI,CAAC,GACxE,KArcA,IAAAH,EAlCAR,EArFAT,CA4jBC,CAl+BsB,GAA3BvO,EAAAA,QAAAqL,khBCnNqB8I,EAAU,SAAAC,GAwB3B,SAAAD,EAAYrE,GAAkB,IAAA3R,EAMY,OANZ,EAAAqN,EAAAvG,SAAA,KAAAkP,IAC1BhW,EAAAkW,EAAA,KAAAF,EAAA,IAAAhP,OAAS2K,EAAS3E,OAAM,KAAAhG,OAAI2K,EAASwE,WAAU,WAAAnP,OAAU2K,EAAS5G,QAC7DhK,KAAa,YAClBf,EAAK2R,SAAaA,EAClB3R,EAAKoW,WAAazE,EAAS3E,OAC3BhN,EAAKgN,OAAa2E,EAAS3E,OAC3BhN,EAAKmW,WAAaxE,EAASwE,WAAWnW,CAC1C,CAAC,SAAAqW,EAAAvP,SAAAkP,EAAAC,IAAA,EAAA9I,EAAArG,SAAAkP,EAAA,EAAAza,IAAA,QAAA8C,OAAAiY,GAAA,EAAA5N,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAED,SAAAiF,IAAA,IAAAtP,EAAAqS,EAAA2F,EAAA,OAAA5N,EAAA7B,QAAAoC,MAAA,SAAA4E,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA1E,MAAA,UAES9L,KAAKqU,SAAS6E,SAAU,CAAF1I,EAAA1E,KAAA,SAEmD,GAFnD0E,EAAAhI,KAAA,IAEbvH,EAAOjB,KAAKqU,SAASnF,QAAQ5O,IAAI,iBAAmB,cACjD8E,MAAM,aAAc,CAAFoL,EAAA1E,KAAA,gBAAA0E,EAAA1E,KAAA,EACN9L,KAAKqU,SAAS8E,OAAM,QAAjC7F,EAAI9C,EAAA3D,MACCnH,OACL1F,KAAK0H,SAAW,KAAO4L,EAAK5N,MACxB4N,EAAK8F,oBACLpZ,KAAK0H,SAAW,KAAO4L,EAAK8F,oBAIhCpZ,KAAK0H,SAAW,OAASF,KAAKC,UAAU6L,EAAM,KAAM,GACvD9C,EAAA1E,KAAA,qBAEI7K,EAAKmE,MAAM,YAAa,CAAFoL,EAAA1E,KAAA,gBAAA0E,EAAA1E,KAAA,GACV9L,KAAKqU,SAASgF,OAAM,SAAjC/F,EAAI9C,EAAA3D,QAEJ7M,KAAK0H,SAAW,OAAS4L,GAC5B,QAAA9C,EAAA1E,KAAA,iBAAA0E,EAAAhI,KAAA,GAAAgI,EAAAhD,GAAAgD,EAAA,wBAAAA,EAAAtD,OAAA,SAONlN,MAAI,yBAAAwQ,EAAApD,OAAA,GAAAmD,EAAA,mBACd,WA7BU,OAAAyI,EAAA7Y,MAAC,KAADD,UAAA,KAAAjC,IAAA,SAAA8C,MA+BX,WACI,MAAO,CACH0C,KAAYzD,KAAKyD,KACjBqV,WAAY9Y,KAAK8Y,WACjBpJ,OAAY1P,KAAK0P,OACjBmJ,WAAY7Y,KAAK6Y,WACjBnR,QAAY1H,KAAK0H,QAEzB,KAzCC,IAAAsR,CAyCA,CAxE0B,EAwE1B,EAAAM,EAAA9P,SAxEkChG,QAAvCe,EAAAA,QAAAmU,6dCHA,IAAAa,EAAAnS,EAAA,KACAoS,EAAApS,EAAA,MACAqS,EAAArS,EAAA,MAEAsS,EAAAtS,EAAA,MACAuS,EAAAvS,EAAA,MAKqBwS,EAAc,WA2D/B,SAAA/J,EAAArG,UArCA,SAAAoQ,IAAwD,IAA5CzY,EAAAjB,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAA0C,CAAC,GAAC,EAAA6P,EAAAvG,SAAA,KAAAoQ,GAjBhD,KAAA5N,KAAmB,KAKnB,KAAA6N,SAAsC,KAO9C,KAAAH,SAAWA,EAOP1Z,KAAKmB,mXAAOkP,CAAA,CAGRyJ,uBAAuB,EAWvBC,2BAA2B,EAe3BrC,4BAA6B,eAE1BvW,EAEX,GAEA,EAAAlD,IAAA,WAAA8C,MAGA,SAASmN,GAEL,OAAO,IAAIX,IAAIW,EAAMlO,KAAKga,SAAS7M,MAAMA,IAC7C,GAEA,CAAAlP,IAAA,OAAAqC,IAKA,WAGI,MAAuB,mBAAT2Q,KAAsBA,KAAO,IAC/C,GAEA,CAAAhT,IAAA,SAAA8C,MAIA,WAKI,OAHKf,KAAKgM,OACNhM,KAAKgM,KAAO,IAAIuB,IAAI0M,SAAW,KAE5Bja,KAAKgM,IAChB,GAEA,CAAA/N,IAAA,WAAA8C,MAIA,SAASmZ,GAELD,SAAS9M,KAAO+M,CACpB,GAEA,CAAAjc,IAAA,aAAA8C,MAIA,WAKI,OAHKf,KAAK6Z,WACN7Z,KAAK6Z,SAAW,IAAIJ,EAAAjQ,SAEjBxJ,KAAK6Z,QAChB,GAEA,CAAA5b,IAAA,qBAAA8C,MAIA,WAEI,OAAO+B,eACX,GAEA,CAAA7E,IAAA,OAAA8C,MAGA,SAAKoZ,GAED,OAAOlU,OAAOmU,KAAKD,EACvB,GAEA,CAAAlc,IAAA,OAAA8C,MAGA,SAAKoZ,GAED,OAAOlU,OAAO4M,KAAKsH,EACvB,GAAC,CAAAlc,IAAA,kBAAA8C,MAED,SAAgBsZ,GAEZ,MAAoB,iBAATA,GACA,EAAAV,EAAAW,WAAUD,IAEd,EAAAV,EAAAY,gBAAeF,GAAO,EACjC,GAAC,CAAApc,IAAA,kBAAA8C,MAED,SAAgBsZ,GAEZ,OAAO,EAAAV,EAAAa,QAAOH,EAClB,GAEA,CAAApc,IAAA,cAAA8C,MAOA,WAAW,IAAA2B,EAAA,KAEP,MAAO,CACH+X,MAAW,WAAN,QAAAzS,EAAA9H,UAAAxC,OAAU+G,EAAW,IAAAwD,MAAAD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAXzD,EAAWyD,GAAAhI,UAAAgI,GAAA,OAAKqR,EAAAkB,MAAKta,WAAC,EAAD,CAACuC,GAAIgH,OAAKjF,GAAK,EACnDiW,UAAW,SAAAvZ,GAAO,OAAI,EAAAoY,EAAAmB,WAAUhY,EAAMvB,EAAQ,EAC9C8H,KAAW,SAAA9H,GAAO,OAAI,EAAAoY,EAAAtQ,MAAKvG,EAAMvB,EAAQ,EACzCsK,OAAW,SAACkB,GAAsC,OAAK,IAAI6M,EAAAhQ,QAAO9G,EAAMiK,EAAM,EAC9ExL,QAAWnB,KAAKmB,QAChBwZ,MAAO,CACHjB,SAAAA,GAGZ,IAAC,CAxK8B,GAAnCnV,EAAAA,QAAAqV,qCCHAxS,EAAA,MAAAA,EAAA,MACA,IAGAwT,GADgB,IAFhBxT,EAAA,MAEoBoC,UAC+CqR,cAA3DJ,EAAKG,EAALH,MAAOC,EAASE,EAATF,UAAWzR,EAAI2R,EAAJ3R,KAAMwC,EAAMmP,EAANnP,OAAQtK,EAAOyZ,EAAPzZ,QAASwZ,EAAKC,EAALD,MAQjD,GAA8B,oBAAnB5P,gBAAgC,CACvC,IAAM+P,EAAQ1T,EAAQ,MACtBA,EAAQ,MACHnB,OAAO6U,QACR7U,OAAO6U,MAAWA,EAAMtR,QACxBvD,OAAO8U,QAAWD,EAAMC,QACxB9U,OAAO9B,QAAW2W,EAAM3W,QACxB8B,OAAO6E,SAAWgQ,EAAMhQ,UAKhC,IAAMkQ,EAAO,CACTlY,gBAAiBmD,OAAOnD,gBACxB2I,OAAAA,EACAkP,MAAAA,EACAM,OAAQ,CACJC,SAAU/Z,EACVsZ,MAAAA,EACAC,UAAAA,EACAzR,KAAAA,IAIRrE,EAAAL,QAASyW,qCC3CT5T,EAAA,MAAAA,EAAA,MAAAA,EAAA,UAAA+T,EAAA/T,EAAA,MAAAiE,EAAA8P,EAAA/T,EAAA,OAAAgU,EAAAD,EAAA/T,EAAA,OAAAiU,EAAAF,EAAA/T,EAAA,OAAAkU,EAAAH,EAAA/T,EAAA,OAAAgE,EAAA+P,EAAA/T,EAAA,OAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,KAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,UAAAmU,EAAA,6BAAAC,EAAA7b,EAAAiG,GAAA,IAAA6V,EAAA1d,OAAAsM,KAAA1K,GAAA,GAAA5B,OAAA2d,sBAAA,KAAAnd,EAAAR,OAAA2d,sBAAA/b,GAAAiG,IAAArH,EAAAA,EAAA0P,QAAA,SAAArI,GAAA,OAAA7H,OAAA+C,yBAAAnB,EAAAiG,GAAAhI,UAAA,KAAA6d,EAAApa,KAAAlB,MAAAsb,EAAAld,EAAA,QAAAkd,CAAA,UAAApL,EAAA1Q,GAAA,QAAAiG,EAAA,EAAAA,EAAA1F,UAAAxC,OAAAkI,IAAA,KAAA6V,EAAA,MAAAvb,UAAA0F,GAAA1F,UAAA0F,GAAA,GAAAA,EAAA,EAAA4V,EAAAzd,OAAA0d,IAAA,GAAAnR,SAAA,SAAA1E,IAAA,EAAAwV,EAAA5R,SAAA7J,EAAAiG,EAAA6V,EAAA7V,GAAA,IAAA7H,OAAA4d,0BAAA5d,OAAA6d,iBAAAjc,EAAA5B,OAAA4d,0BAAAF,IAAAD,EAAAzd,OAAA0d,IAAAnR,SAAA,SAAA1E,GAAA7H,OAAAC,eAAA2B,EAAAiG,EAAA7H,OAAA+C,yBAAA2a,EAAA7V,GAAA,WAAAjG,CAAA,kXAKA,IAAAkc,EAAAzU,EAAA,MACAyD,EAAAzD,EAAA,MAEMD,EAAQC,EAAQ,MAId0T,GAAqC,oBAApB/P,gBAAkC9E,OAASmB,EAAQ,OAApE0T,MAGFgB,EAAa3U,EAAM,QACN5C,EAAAA,MAAAuX,EAKnB,IAAMjO,EAA6B,CAAC,EAkCpC,SAASkO,EAAetG,GAAsC,IAAnC1U,EAAK0U,EAAL1U,MAAOib,EAAIvG,EAAJuG,KAC9B,GAAqB,iBAAVjb,EACP,MAAM,IAAIyC,MAAM,+BAAiCzC,EAAQ,IAAMib,EAEvE,CAEA,SAGsBC,EAAahR,GAAA,OAAAiR,EAAA/b,MAAC,KAADD,UAAA,UAAAgc,IAOlC,OAPkCA,GAAA,EAAA9Q,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAA5B,SAAAiF,EAA6B4L,GAAc,IAAAzW,EAAA,OAAA2F,EAAA7B,QAAAoC,MAAA,SAAA4E,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA1E,MAAA,UACzCqQ,EAAKC,GAAI,CAAF5L,EAAA1E,KAAA,QACyB,OAA3BpG,EAAQ,IAAImW,EAAArS,QAAU2S,GAAK3L,EAAA1E,KAAA,EAC3BpG,EAAM2W,QAAO,aACb3W,EAAK,cAAA8K,EAAAtD,OAAA,SAERiP,GAAI,wBAAA3L,EAAApD,OAAA,GAAAmD,EAAA,MACdpQ,MAAA,KAAAD,UAAA,CAOD,SAAgBoc,EAAeH,GAC3B,OAAOA,EAAK9C,OAAOtX,MAAK,SAAAsX,GAAI,OAAIA,EAAK3b,OAAS8J,KAAK6U,MAAMhD,GAAQ,EAAE,GACvE,CAEA,SAAgBkD,EAAwD5O,GAGpE,IAAKA,EACD,OAAOA,EAIX,GAAI1F,MAAM4G,QAAQlB,GACd,OAAOA,EAAI9D,KAAI,SAAAtC,GAAC,OAAIA,GAAkB,YAAb,EAAA+T,EAAA9R,SAAOjC,GAAiBgV,EAAahV,GAAKA,CAAC,IAIxE,IAAIiV,EAA2B,CAAC,EAMhC,OALAze,OAAOsM,KAAKsD,GAAKrD,SAAQ,SAAArM,GACrB,IAAMwe,EAAWxe,EAAIoI,cACfkB,EAAKoG,EAA4B1P,GACvCue,EAAIC,GAAYlV,GAAiB,WAAZ,EAAA+T,EAAA9R,SAAOjC,GAAgBgV,EAAahV,GAAKA,CAClE,IACOiV,CACX,CAYA,SAAgBrN,EACZ1B,GAC4C,IAA5CjC,EAAAtL,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAA0C,CAAC,EAGnC+U,EAAgCzJ,EAAhCyJ,gBAAoB9T,GAAO,EAAAka,EAAA7R,SAAKgC,EAAc+P,GACtD,OAAOT,EAAMrN,EAAG4C,EAAAA,EAAA,CACZsH,KAAM,QACHxW,GAAO,IACV+N,QAAOmB,EAAA,CACHqM,OAAQ,oBACLH,EAAapb,EAAQ+N,aAG/BnN,KAAKka,GACLla,MAAK,SAACqN,GACH,IAAMnO,EAAOmO,EAAIF,QAAQ5O,IAAI,gBAAkB,GAC/C,OAAIW,EAAKmE,MAAM,aACJkX,EAAelN,GAAKrN,MAAK,SAAAuR,GAAI,MAAK,CAAElE,IAAAA,EAAKkE,KAAAA,EAAM,IAEtDrS,EAAKmE,MAAM,YACJgK,EAAIiK,OAAOtX,MAAK,SAAAuR,GAAI,MAAK,CAAElE,IAAAA,EAAKkE,KAAAA,EAAM,IAE1C,CAAElE,IAAAA,EACb,IACCrN,MAAK,SAAAgU,GAAoE,IAAlE3G,EAAG2G,EAAH3G,IAAKkE,EAAIyC,EAAJzC,KAKT,IAAKA,GAAsB,KAAdlE,EAAIM,OAAe,CAC5B,IAAMuK,EAAW7K,EAAIF,QAAQ5O,IAAI,YACjC,GAAI2Z,EACA,OAAO9K,EAAQ8K,EAAQ5J,EAAAA,EAAA,GAAOlP,GAAO,IAAEkS,OAAQ,MAAOC,KAAM,KAAM2B,gBAAAA,KAI1E,OAAIA,EACO,CAAE3B,KAAAA,EAAMe,SAAUjF,QAMhBzM,IAAT2Q,EACOlE,EAIJkE,CACX,GACJ,CAUA,SAAgBqJ,EAAYlP,EAAajC,GACrC,OADmEtL,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,IAAAA,UAAA,KACrD2N,EAAMJ,IAChBI,EAAMJ,GAAO0B,EAAQ1B,EAAKjC,GACnBqC,EAAMJ,IAEV5L,QAAQC,QAAQ+L,EAAMJ,GACjC,CA6BA,SAAgBmB,EAAQjB,GAAmC,IAATO,EAAIhO,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,GAErD,KADAgO,EAAOA,EAAKE,QAER,OAAOT,EAMX,IAHA,IAAIiP,EAAW1O,EAAKjE,MAAM,KACtBpK,EAAS8N,EAEN9N,GAAU+c,EAASlf,QAAQ,CAC9B,IAAMO,EAAM2e,EAASC,QACrB,IAAK5e,GAAOgK,MAAM4G,QAAQhP,GACtB,OAAOA,EAAOgK,KAAI,SAAAtL,GAAC,OAAIqQ,EAAQrQ,EAAGqe,EAAS7S,KAAK,KAAK,IAErDlK,EAASA,EAAO5B,GAIxB,OAAO4B,CACX,CAkCA,SAAgBkO,EAAmB+O,GAC/B,OAAI7U,MAAM4G,QAAQiO,GACPA,EAEJ,CAACA,EACZ,CA0CA,SAAgBrK,EAAUlB,EAAexL,GAErC,IAAMgX,EAAUxL,EAAMtH,MAAM,KAAK,GACjC,OAAO8S,EAAUvV,KAAK6U,MAAMtW,EAAIqU,KAAK2C,IAAY,IACrD,CAoDA,SAAgB3E,EACZD,EACA5X,GAGA,IAAMyc,EAAiC,CAAC,EAExC,SAASC,EAAsBC,EAA0CC,GACjED,GAAWjV,MAAM4G,QAAQqO,EAAQE,SACjCF,EAAQE,OAAO9S,SAAQ,SAAA+S,GAAa,IAAVrB,EAAIqB,EAAJrB,KAClBA,IACAgB,EAAIhB,GAAQgB,EAAIhB,IAAS,GACzBgB,EAAIhB,GAAM3a,KAAK8b,GAEvB,GAER,CAYA,OAVApP,EAAUoK,GAAc7N,SAAQ,SAAA/L,GACL,gBAAnBA,EAAE0N,cAAkC1N,EAAEgC,KAClC0H,MAAM4G,QAAQtQ,EAAEgC,IAChBhC,EAAEgC,GAAU+J,SAAQ,SAAC4S,GAAwC,OAAKD,EAAsBC,EAAS3e,EAAE,IAEnG0e,EAAsB1e,EAAEgC,GAAWhC,GAG/C,IAEOye,CACX,CAwEqC,SAAAM,IA4FpC,OA5FoCA,GAAA,EAAAlS,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAA9B,SAAAyH,EAA+BxV,GAA+B,IAAAggB,EAAAC,EAAA9X,EAAA+X,EAAAC,EAAAC,EAAAC,EAAAC,EAAA3d,UAAA,OAAAmL,EAAA7B,QAAAoC,MAAA,SAAAoH,GAAA,cAAAA,EAAAxK,KAAAwK,EAAAlH,MAAA,OAA2C,GAAzCyR,EAAAM,EAAAngB,OAAA,QAAAiF,IAAAkb,EAAA,GAAAA,EAAA,GAAgB,IAAKL,EAAAK,EAAAngB,OAAA,QAAAiF,IAAAkb,EAAA,GAAAA,EAAA,GAAiB,IAKpF,mBAAVtgB,EAAoB,CAAAyV,EAAAlH,KAAA,eAAAkH,EAAAlH,KAAA,EACZvO,IAAQ,OAAvBA,EAAMyV,EAAAnG,KAAA,WAINtP,GAA2B,WAAjB,EAAA+d,EAAA9R,SAAOjM,GAAkB,CAAAyV,EAAAlH,KAAA,eAAAkH,EAAA9F,OAAA,SAC5B3P,GAAM,UAII,iBAAVA,EAAkB,CAAAyV,EAAAlH,KAAA,SACmD,OAA5EgQ,EAAO,sDAAsD,EAAFR,EAAA9R,SAASjM,IAAQyV,EAAA9F,OAAA,SACrEnO,MAAI,WAID,SAAVxB,EAAiB,CAAAyV,EAAAlH,KAAA,gBAAAkH,EAAA9F,OAAA,SACVnO,MAAI,WAID,WAAVxB,EAAmB,CAAAyV,EAAAlH,KAAA,gBAAAkH,EAAA9F,OAAA,SACZ4Q,QAAM,WAIH,QAAVvgB,EAAgB,CAAAyV,EAAAlH,KAAA,gBAAAkH,EAAA9F,OAAA,SACT6Q,KAAOhf,MAAI,WAIR,UAAVxB,EAAkB,CAAAyV,EAAAlH,KAAA,SAGmC,GAF1C2R,EAA8B,KAAIzK,EAAAxK,KAAA,GAEzCiV,EAAexX,OAAO+X,KAAK,GAAI,kBACZ,CAAFhL,EAAAlH,KAAA,eACP,IAAItI,MAAM,mCAAkC,QAAAwP,EAAAlH,KAAA,iBAAAkH,EAAAxK,KAAA,GAAAwK,EAAAxF,GAAAwF,EAAA,UAGtDtN,EAAKsN,EAAAxF,GAAK,WAGTiQ,EAAc,CAAFzK,EAAAlH,KAAA,SACoD,OAAjEgQ,EAAO,kDAAmDpW,GAAOsN,EAAA9F,OAAA,SAC1DnO,MAAI,eAAAiU,EAAA9F,OAAA,SAEJuQ,GAAY,WAKb,SAAVlgB,EAAiB,CAAAyV,EAAAlH,KAAA,SAYA,GAXN2R,EAA8B,KACzCzK,EAAAxK,KAAA,GAEIiV,EAAexX,OAAO+X,KAAK,GAAI,iBAAkB,CAC7C,UAAYR,EACZ,SAAWD,EACX,YACA,cACA,WACA,QAAUU,OAAOT,OAASA,GAAU,EACpC,SAAWS,OAAOV,MAAQA,GAAS,GACrCxT,KAAK,MACY,CAAFiJ,EAAAlH,KAAA,eACP,IAAItI,MAAM,wCAAuC,QAAAwP,EAAAlH,KAAA,iBAAAkH,EAAAxK,KAAA,GAAAwK,EAAAkL,GAAAlL,EAAA,UAG3DtN,EAAKsN,EAAAkL,GAAK,WAGTT,EAAc,CAAFzK,EAAAlH,KAAA,SACoD,OAAjEgQ,EAAO,kDAAmDpW,GAAOsN,EAAA9F,OAAA,SAC1DnO,MAAI,eAAAiU,EAAA9F,OAAA,SAEJuQ,GAAY,QAKqB,KAA1CG,EAAqBO,OAAO5gB,IAClB,CAAFyV,EAAAlH,KAAA,gBAAAkH,EAAA9F,OAAA,SACH0Q,GAAU,QAG2C,OAAhE9B,EAAO,gDAAiDve,GAAQyV,EAAA9F,OAAA,SACzDnO,MAAI,yBAAAiU,EAAA5F,OAAA,GAAA2F,EAAA,4BACduK,EAAAnd,MAAA,KAAAD,UAAA,CAED,SAAgBqM,EAAO6R,EAAgB1W,GACnC,IAAM0W,EACF,MAAM,IAAI5a,MAAMkE,EAExB,CA3hBanD,EAAAA,MAAQ,CACjB8Z,GAAE,SAAAC,GAAsC,IAAnCtC,EAAIsC,EAAJtC,KAAMjb,EAAKud,EAALvd,MAEP,GADAgb,EAAgB,CAAEC,KAAAA,EAAMjb,MAAAA,IACZ,MAARib,EAAmB,OAAOjb,EAC9B,GAAY,KAARib,EAAmB,OAAiB,IAAVjb,EAC9B,GAAY,MAARib,EAAmB,OAAgB,KAATjb,EAC9B,GAAY,WAARib,EAAmB,OAAgB,KAATjb,EAC9B,GAAY,UAARib,EAAmB,OAAgB,KAATjb,EAC9B,GAAY,MAARib,EAAmB,OAAe,MAARjb,EAC9B,GAAY,WAARib,EAAmB,OAAe,MAARjb,EAC9B,MAAM,IAAIyC,MAAM,6BAA+BwY,EACnD,EACAuC,GAAE,SAAArJ,GAAsC,IAAnC8G,EAAI9G,EAAJ8G,KAAMjb,EAAKmU,EAALnU,MAEP,GADAgb,EAAgB,CAAEC,KAAAA,EAAMjb,MAAAA,IACZ,MAARib,EAAkB,OAAOjb,EAC7B,GAAY,KAARib,EAAkB,OAAOjb,EAAQ,IACrC,GAAIib,EAAK5W,MAAM,MAAO,OAAOrE,EAAQ,QACrC,GAAIib,EAAK5W,MAAM,MAAO,OAAOrE,EAAQ,OACrC,MAAM,IAAIyC,MAAM,6BAA+BwY,EACnD,EACAwC,IAAG,SAACC,GAEA,OADA1C,EAAgB0C,GACTA,EAAG1d,KACd,GAeJwD,EAAAA,cAAA0X,EAcA1X,EAAAA,eAAA+X,EAIA/X,EAAAA,aAAAgY,EAgCAhY,EAAAA,QAAA4K,EA6DA5K,EAAAA,YAAAoY,EAeApY,EAAAA,0BAAA,WAAqF,IAA5BiH,EAA4BtL,UAAAxC,OAAA,EAAAwC,UAAA,QAAAyC,EAE3E8K,EAAMU,OAFiCjO,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,KAEpBiF,QAAQ,OAAQ,KAAO,WACnD,OAAOwX,EAAYlP,EAAKjC,GAAgBgE,OAAM,SAACC,GAC3C,MAAM,IAAIjM,MAAM,mDAADkG,OACwC+D,EAAG,OAAA/D,OAAM+F,GAEpE,GACJ,EAYAlL,EAAAA,QAAAqK,EA6BArK,EAAAA,QAAA,SAAwBoJ,EAA0BO,EAAcnN,GAA+B,IAAnB2d,EAAWxe,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,IAAAA,UAAA,GAenF,OAdAgO,EAAKE,OAAOnE,MAAM,KAAK0U,QACnB,SAACnC,EAAKve,EAAK2gB,EAAKC,GACZ,IAAIrC,GAAOoC,IAAQC,EAAInhB,OAAS,EAO5B,OAHI8e,QAAoB7Z,IAAb6Z,EAAIve,IAAsBygB,IACjClC,EAAIve,GAAO4gB,EAAID,EAAM,GAAGxZ,MAAM,YAAc,GAAK,CAAC,GAE/CoX,EAAMA,EAAIve,QAAO0E,EANxB6Z,EAAIve,GAAO8C,CAQnB,GACA4M,GAEGA,CACX,EAQApJ,EAAAA,UAAAwJ,EAaAxJ,EAAAA,SAAA,SAAyB2J,EAAciD,GAEnC,OAAIjD,EAAK9I,MAAM,UACX8I,EAAK9I,MAAM,QADiB8I,EAEzBC,OAAOgD,GAAW,IAAIhM,QAAQ,OAAQ,IAAM,IAAM+I,EAAK/I,QAAQ,OAAQ,GAClF,EAUAZ,EAAAA,aAAA,WAOI,IAL0E,IAD1Eua,EAAS5e,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,EACZ6e,EAAO7e,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,iEAGJL,EAAS,GACTqK,EAAM6U,EAAQrhB,OACbohB,KACHjf,EAAOwB,KAAK0d,EAAQC,OAAOvU,KAAKwU,MAAMxU,KAAKyU,SAAWhV,KAE1D,OAAOrK,EAAOkK,KAAK,GACvB,EAQAxF,EAAAA,UAAAkO,EAYAlO,EAAAA,gBAAA,WAAgF,IAAhD4a,EAAAjf,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAuB,IAAKkf,EAAoBlf,UAAAxC,OAAA,EAAAwC,UAAA,QAAAyC,EAC5E,OAAO8H,KAAKwU,QAAQG,GAAQ,IAAI9W,MAAU,IAAO6W,EACrD,EASA5a,EAAAA,yBAAA,SAAyCuN,EAAyC/L,GAE9E,IAAM8Q,EAAMpM,KAAKwU,MAAM3W,KAAKuO,MAAQ,KAGpC,GAAI/E,EAAcuN,WACd,OAAOxI,EAAM/E,EAAcuN,WAI/B,GAAIvN,EAAckG,aAAc,CAC5B,IAAIsH,EAAY7M,EAAUX,EAAckG,aAAcjS,GACtD,GAAIuZ,GAAaA,EAAUC,IACvB,OAAOD,EAAUC,IAKzB,OAAO1I,EAAM,GACjB,EAcAtS,EAAAA,OAAA6T,EA4CA7T,EAAAA,QAAA,SACI4T,EACA5X,GAGA,IAAMif,EAAOpH,EAAOD,EAAc5X,GAClC,OAAO,mBAAAyH,EAAA9H,UAAAxC,OAAI+hB,EAAK,IAAAxX,MAAAD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAALuX,EAAKvX,GAAAhI,UAAAgI,GAAA,OAAKuX,EAChBxR,QAAO,SAAA+N,GAAI,OAAKA,EAAO,KAAOwD,CAAI,IAClCb,QACG,SAACnW,EAAMwT,GAAI,OAAKxT,EAAKkB,OAAO8V,EAAKxD,EAAO,IAAI,GAC5C,GACH,CACT,EAMAzX,EAAAA,gBAAA,SAAgC2H,EAAkDD,GAG9E,IAGMyT,GAHY9Q,EAAQ1C,EAAa,oBAAsB,IAGtCmK,MAAK,SAACzQ,GAAM,OAAKA,EAAE3E,OAASgL,CAAY,IAC/D,IAAKyT,EACD,MAAM,IAAIlc,MAAM,aAADkG,OAAcuC,EAAY,2CAI7C,IAAKhE,MAAM4G,QAAQ6Q,EAAKvT,aACpB,MAAM,IAAI3I,MAAM,uCAADkG,OAAwCuC,EAAY,0BAIvE,GAAoB,WAAhBA,GAA6ByT,EAAKvT,YAAYkK,MAAK,SAACsJ,GAAM,MAAe,OAAVA,EAAElc,IAAa,IAC9E,MAAO,MAIX,IAAM+Y,EAAM3R,EAAA+U,cAAcvJ,MAAK,SAAAxX,GAAC,OAAI6gB,EAAKvT,YAAYkK,MAAK,SAACsJ,GAAM,OAAKA,EAAElc,MAAQ5E,CAAC,GAAC,IAGlF,IAAK2d,EACD,MAAM,IAAIhZ,MAAM,sCAAwCyI,GAG5D,OAAOuQ,CACX,EASAjY,EAAAA,gBAPA,SAOqC2G,GAAA,OAAAoS,EAAAnd,MAAC,KAADD,UAAA,EA8FrCqE,EAAAA,OAAAgI,EAMAhI,EAAAA,gBAAA,SAAgCkP,GAC5BlH,EAAOtE,MAAM4G,QAAQ4E,GAAQ,mCAC7BlH,EAAOkH,EAAM/V,OAAS,EAAG,4CACzB+V,EAAMnJ,SAAQ,SAACuV,GACXtT,EACI,CAAC,MAAO,UAAW,OAAQ,OAAQ,OAAQ,UAAUE,QAAQoT,EAAUC,KAAO,EAC9E,4HAEJvT,EAAOsT,EAAU3R,OAAQ,EAAJoN,EAAA9R,SAAWqW,EAAU3R,MAAI,YAAAxE,OAAcmW,EAAUC,GAAE,yCAEpD,OAAhBD,EAAUC,IAA+B,WAAhBD,EAAUC,IAAmC,QAAhBD,EAAUC,IAChEvT,EAAO,UAAWsT,EAAW,YAAFnW,OAAcmW,EAAUC,GAAE,0CACrDvT,EAAwC,GAAjCxO,OAAOsM,KAAKwV,GAAWniB,OAAa,YAAFgM,OAAcmW,EAAUC,GAAE,8CAG9C,QAAhBD,EAAUC,IAAgC,QAAhBD,EAAUC,IACzCvT,EAAgC,iBAAlBsT,EAAUT,KAAkB,YAAF1V,OAAcmW,EAAUC,GAAE,mDAClEvT,EAAwC,GAAjCxO,OAAOsM,KAAKwV,GAAWniB,OAAa,YAAFgM,OAAcmW,EAAUC,GAAE,8CAInEvT,EAAwC,GAAjCxO,OAAOsM,KAAKwV,GAAWniB,OAAa,YAAFgM,OAAcmW,EAAUC,GAAE,4CAE3E,GACJ,umCC/kBA,IAAAnG,EAAAvS,EAAA,MAIM2Y,EAAuC,gCAAfC,WAAU,eAAA1E,EAAA9R,SAAVwW,cAA2BA,WAAWD,OAChEC,WAAWD,OACX3Y,EAAAA,MAAAA,QAEE6Y,EAAS,WACX,IAAKF,EAAOE,OAAQ,CAChB,IAAKD,WAAWE,gBACZ,MAAM,IAAI1c,MACN,2NAMR,MAAM,IAAIA,MACN,mHAIR,OAAOuc,EAAOE,MAClB,EAQME,EAAO,CACTC,MAAO,CACH3c,KAAM,QACN4c,WAAY,SAEhBC,MAAO,CACH7c,KAAM,oBACN8c,cAAe,KACfC,eAAgB,IAAIC,WAAW,CAAC,EAAG,EAAG,IACtClW,KAAM,CACF9G,KAAM,aAKlB,SAAgBid,EAAYC,GACxB,OAAOZ,EAAOa,gBAAgB,IAAIH,WAAWE,GACjD,CAAC,SAEqBE,EAAY5V,GAAA,OAAA6V,EAAA3gB,MAAC,KAADD,UAAA,UAAA4gB,IAIjC,OAJiCA,GAAA,EAAA1V,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAA3B,SAAAyH,EAA4BgK,GAAe,IAAAgE,EAAAxW,EAAA,OAAAc,EAAA7B,QAAAoC,MAAA,SAAAoH,GAAA,cAAAA,EAAAxK,KAAAwK,EAAAlH,MAAA,OACI,OAA5CiV,GAAW,IAAIC,aAAcC,OAAOlE,GAAQ/J,EAAAlH,KAAA,EAC/BmU,IAASiB,OAAO,UAAWH,GAAS,OAA7C,OAAJxW,EAAIyI,EAAAnG,KAAAmG,EAAA9F,OAAA,SACH,IAAIuT,WAAWlW,IAAK,wBAAAyI,EAAA5F,OAAA,GAAA2F,EAAA,MAC9B5S,MAAA,KAAAD,UAAA,CARDqE,EAAAA,YAAAmc,EAIAnc,EAAAA,aAAAsc,EAMO,IAAMM,EAAqB,eAAAC,GAAG,EAAHhW,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAG,SAAAiF,IAAA,IAAA8Q,EAAAC,EAAAC,EAAAC,EAAAthB,UAAA,OAAAmL,EAAA7B,QAAAoC,MAAA,SAAA4E,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA1E,MAAA,OAGG,OAF9BuV,EAAgBX,EADyBc,EAAA9jB,OAAA,QAAAiF,IAAA6e,EAAA,GAAAA,EAAA,GAAG,IAE5CF,GAAgB,EAAA3H,EAAAY,gBAAe8G,GAAY,GAAK7Q,EAAAhD,GAChCmM,EAAAY,eAAc/J,EAAA1E,KAAA,EAAO+U,EAAaS,GAAa,OAAM,OAAN9Q,EAAA0N,GAAA1N,EAAA3D,KAA/D0U,GAAgB,EAAH/Q,EAAAhD,IAAAgD,EAAA0N,IAAoD,GAAI1N,EAAAtD,OAAA,SACpE,CAAEqU,cAAAA,EAAeD,aAAAA,IAAc,wBAAA9Q,EAAApD,OAAA,GAAAmD,EAAA,KACzC,kBALiC,OAAA6Q,EAAAjhB,MAAA,KAAAD,UAAA,KAOH,SAAAuhB,IA8B9B,OA9B8BA,GAAA,EAAArW,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAxB,SAAAkI,EAAyBkO,GAAmB,OAAArW,EAAA7B,QAAAoC,MAAA,SAAA+H,GAAA,cAAAA,EAAAnL,KAAAmL,EAAA7H,MAAA,UAE1C4V,EAAIC,IAAK,CAAFhO,EAAA7H,KAAA,cACF,IAAItI,MAAM,mEAAkE,OAWtF,GAJKyE,MAAM4G,QAAQ6S,EAAIE,WACnBF,EAAIE,QAAU,CAAC,SAIdF,EAAIE,QAAQC,SAAS,QAAS,CAAFlO,EAAA7H,KAAA,cACvB,IAAItI,MAAM,6DAA4D,cAAAmQ,EAAAnL,KAAA,EAAAmL,EAAA7H,KAAA,EAI/DmU,IAAS6B,UAClB,MACAJ,EACAvB,EAAKuB,EAAIC,MACG,IAAZD,EAAIK,IACJL,EAAIE,SACP,cAAAjO,EAAAzG,OAAA,SAAAyG,EAAA9G,MAAA,cAAA8G,EAAAnL,KAAA,GAAAmL,EAAAnG,GAAAmG,EAAA,SAEK,IAAInQ,MAAM,OAADkG,OAAQgY,EAAIC,IAAG,uCAAAjY,OAAAiK,EAAAnG,KAA0C,yBAAAmG,EAAAvG,OAAA,GAAAoG,EAAA,oBAE/ErT,MAAA,KAAAD,UAAA,CAEmC,SAAA8hB,IAanC,OAbmCA,GAAA,EAAA5W,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAA7B,SAAA6J,EAA8BwM,EAAwBM,EAAuBC,EAAanF,GAAY,IAAAoF,EAAAC,EAAAC,EAAAC,EAAA,OAAAjX,EAAA7B,QAAAoC,MAAA,SAAAwJ,GAAA,cAAAA,EAAA5M,KAAA4M,EAAAtJ,MAAA,OAIzB,OAF1EqW,EAAa3a,KAAKC,UAAS4I,EAAAA,EAAC,CAAC,EAAI6R,GAAM,IAAEP,IAAAA,KACzCS,EAAa5a,KAAKC,UAAUsV,GAC5BsF,EAA0B,GAAH3Y,QAAM,EAAAiQ,EAAAW,WAAU6H,GAAU,KAAAzY,QAAI,EAAAiQ,EAAAW,WAAU8H,IAAWhN,EAAAtJ,KAAA,EAExDmU,IAASsC,KAAIlS,EAAAA,EAAC,CAAD,EAC5B4R,EAAWO,WAAS,IAAEjY,KAAM,YACjC0X,GACA,IAAIjB,aAAcC,OAAOoB,IAC5B,OAJc,OAATC,EAASlN,EAAAvI,KAAAuI,EAAAlI,OAAA,YAAAxD,OAML2Y,EAAuB,KAAA3Y,QAAI,EAAAiQ,EAAAY,gBAAe,IAAIkG,WAAW6B,IAAY,KAAK,wBAAAlN,EAAAhI,OAAA,GAAA+H,EAAA,MACvFhV,MAAA,KAAAD,UAAA,CApDYqE,EAAAA,sBAAqB4c,EAOlC5c,EAAAA,UAFC,SAE8B2G,GAAA,OAAAuW,EAAAthB,MAAC,KAADD,UAAA,EAgC/BqE,EAAAA,eAFC,SAEmCsP,EAAAC,EAAA4C,EAAAnB,GAAA,OAAAyM,EAAA7hB,MAAC,KAADD,UAAA,2JC7FvBqE,EAAAA,mBAAqB,CAC9B,UACA,eACA,qBACA,cACA,sBACA,aACA,QACA,WACA,gBACA,WACA,WACA,aACA,QACA,gBACA,qBACA,gBACA,uBACA,cACA,YACA,UACA,WACA,6BACA,8BACA,gBACA,gBACA,mBACA,qBACA,kBACA,mBACA,mBACA,oBACA,qBACA,YACA,oBACA,gBACA,uBACA,sBACA,OACA,OACA,QACA,kBACA,yBACA,eACA,eACA,yBACA,6BACA,UACA,OACA,gBACA,QACA,2BACA,qBACA,kBACA,oBACA,sBACA,oBACA,iBACA,cACA,QACA,UACA,SACA,YACA,mBACA,aACA,wBACA,kBACA,gBACA,eACA,kBACA,iBACA,WACA,iBACA,WACA,iBACA,gBACA,sBAMSA,EAAAA,aAAe,CACxB,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,GAOAA,EAAAA,cAAgB,CACzB,UACA,UACA,YACA,SACA,QACA,eAMSA,EAAAA,UAAY,olCCtHzB,IAAAoG,EAAAvD,EAAA,MAYAoS,EAAApS,EAAA,MACAyD,EAAAzD,EAAA,MAKsBrJ,OAAAA,eAAAA,EAAAA,MAAAA,CAAAH,YAAA,EAAA0C,IAAA,kBALbuK,EAAAqI,SAAS,IAGlB,IAAM/L,EAAQwD,EAAAxD,MAAO4B,OAAO,UAI5B,SAAS0Z,IACL,MAAyB,gCAAXxc,OAAM,eAAAqV,EAAA9R,SAANvD,QAClB,CAQA,SAAgByc,IAA8D,IAA5BlX,EAA4BtL,UAAAxC,OAAA,EAAAwC,UAAA,QAAAyC,EAEpE8K,EAAMU,OAF0BjO,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,KAEbiF,QAAQ,OAAQ,KAAO,kCACnD,OAAO,EAAAwF,EAAAgS,aAAYlP,EAAKjC,GAAgBgE,OAAM,SAACC,GAC3C,MAAM,IAAIjM,MAAM,wCAADkG,OAAyC+D,EAAG,OAAA/D,OAAM+F,EAAG/H,SACxE,GACJ,CAgEA,SAAgBib,IAAmC,IAAbxR,EAAOjR,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,IAE5C,OA7DJ,WAEI,OAAOwiB,EAF4CxiB,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,IAAiCA,UAAAxC,OAAA,EAAAwC,UAAA,QAAAyC,GAEpCZ,MAAK,SAAA2d,GACpD,IAAKA,EAAKkD,yBAA2BlD,EAAKmD,eACtC,MAAM,IAAIrf,MAAM,yBAEpB,MAAO,CACHsf,gBAAsBpD,EAAKqD,uBAA0B,GACrD9Q,aAAsByN,EAAKkD,uBAC3BzL,SAAsBuI,EAAKmD,eAC3BG,qBAAsBtD,EAAKuD,kCAAoC,GAEvE,GACJ,CAgDWC,CAAuC/R,GACzC3B,OAAM,kBA5Cf,WAAkG,IAA3C2B,EAAOjR,UAAAxC,OAAA,QAAAiF,IAAAzC,UAAA,GAAAA,UAAA,GAAG,IAAKsL,EAA4BtL,UAAAxC,OAAA,EAAAwC,UAAA,QAAAyC,EAE9F,OAAO,EAAAgI,EAAA+B,2BAA0ByE,EAAS3F,GAAgBzJ,MAAK,SAAA2d,GAC3D,IACMyD,IAAe,EAAAxY,EAAAiE,SAAQ8Q,GAAQ,CAAC,EAAG,8BAAgC,IACpEzR,QAAO,SAAAtO,GAAC,MAFC,0EAEGA,EAAE8N,GAAa,IAC3B5D,KAAI,SAAAtL,GAAC,OAAIA,EAAE6kB,SAAS,IAAE,GAErB5G,EAAyC,CAC3CsG,gBAAsB,GACtB7Q,aAAsB,GACtBkF,SAAsB,GACtB6L,qBAAsB,IAiB1B,OAdIG,GACAA,EAAW7Y,SAAQ,SAAAyX,GACC,aAAZA,EAAItU,MACJ+O,EAAIsG,gBAAkBf,EAAIsB,UAEd,cAAZtB,EAAItU,MACJ+O,EAAIvK,aAAe8P,EAAIsB,UAEX,UAAZtB,EAAItU,MACJ+O,EAAIrF,SAAW4K,EAAIsB,SAE3B,IAGG7G,CACX,GACJ,CAaqB8G,CAA8CnS,EAAQ,GAC3E,CAEA,SAUsBuJ,EAASzP,GAAA,OAAAsY,EAAApjB,MAAC,KAADD,UAAA,UAAAqjB,IAqQ9B,OArQ8BA,GAAA,EAAAnY,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAxB,SAAAiF,EACHxK,GAAuB,IAAAyd,EAAA/V,EAAAgW,EAAAC,EAAA5L,EAAA6L,EAAAC,EAAArmB,EAAAggB,EAAAC,EAAAqG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAArS,EAAAsS,EAAAC,EAAAC,EAAAC,EAAAvS,EAAAgG,EAAAwM,EAAAC,EAAAjf,EAAAqH,EAAA6X,EAAAC,EAAAC,EAAAC,EAAAjY,EAAAkY,EAAA1B,EAAA2B,EAAArF,EAAAsF,EAAAvD,EAAAthB,UAAA,OAAAmL,EAAA7B,QAAAoC,MAAA,SAAA4E,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA1E,MAAA,OAMvB,GALA0X,EAAAhC,EAAA9jB,OAAA,QAAAiF,IAAA6e,EAAA,GAAAA,EAAA,GAAoE,CAAC,EAG/D/T,EAAM1H,EAAIiU,UAGZ/R,MAAM4G,QAAQ2U,GAAS,CAAFhT,EAAA1E,KAAA,SAC+D,GAA9E2X,EAAShW,EAAIV,aAAazM,IAAI,QAAUmN,EAAIV,aAAazM,IAAI,kBACtD,CAAFkQ,EAAA1E,KAAA,cACD,IAAItI,MACN,2FAEH,OAiBkF,OAdjFkgB,EAAMF,EAAOnN,MAAK,SAAAsJ,GACpB,GAAIA,EAAEqF,SAAU,CACZ,GAA0B,mBAAfrF,EAAEqF,SACT,QAASrF,EAAEqF,SAASvB,GAExB,GAA0B,iBAAf9D,EAAEqF,SACT,OAAOrF,EAAEqF,WAAavB,EAE1B,GAAI9D,EAAEqF,oBAAoB7a,OACtB,OAAOwV,EAAEqF,SAAS5a,KAAKqZ,GAG/B,OAAO,CACX,KACA,EAAA9Y,EAAA4B,QAAOmX,EAAK,gEAAFha,OAAkE+Z,EAAM,MAAKjT,EAAA1E,KAAA,GAC1E4O,EAAU3U,EAAK2d,GAAI,eAAAlT,EAAAtD,OAAA,SAAAsD,EAAA3D,MAAA,QAyDpC,GAnDIiL,EAWA0L,EAXA1L,aACA6L,EAUAH,EAVAG,kBACAC,EASAJ,EATAI,YACArmB,EAQAimB,EARAjmB,OACAggB,EAOAiG,EAPAjG,MACAC,EAMAgG,EANAhG,OACAqG,EAKAL,EALAK,SACAC,EAIAN,EAJAM,sBAEAC,EAEAP,EAFAO,aACAC,EACAR,EADAQ,UAIAC,EAUAT,EAVAS,IACAC,EASAV,EATAU,OACArS,EAQA2R,EARA3R,UACAsS,EAOAX,EAPAW,eACAC,EAMAZ,EANAY,YACAC,EAKAb,EALAa,WAAUC,EAKVd,EAJAzR,MAAAA,OAAK,IAAAuS,EAAG,GAAEA,EACVvM,EAGAyL,EAHAzL,SACAwM,EAEAf,EAFAe,iBACAC,EACAhB,EADAgB,iBAGEjf,EAAUQ,EAAIkN,aAGpBgR,EAAiBxW,EAAIV,aAAazM,IAAI,QAAqB2jB,EAC3DE,EAAiB1W,EAAIV,aAAazM,IAAI,mBAAqB6jB,EAC3DD,EAAiBzW,EAAIV,aAAazM,IAAI,WAAqB4jB,EAC3DrS,EAAiBpE,EAAIV,aAAazM,IAAI,cAAqBuR,GAC3DkG,EAAiBtK,EAAIV,aAAazM,IAAI,aAAqByX,KAIvDA,EAAWiM,GAEVI,IACDA,EAAcL,GAGbK,EAEOA,EAAYhf,MAAM,mBAC1Bgf,EAAcre,EAAIkf,SAASb,IAF3BA,EAAcre,EAAIkf,SAAS,KAKzBrY,EAAYuB,OAAO8V,GAAOE,GAAkB,IAGlC,CAAF3T,EAAA1E,KAAA,eACJ,IAAItI,MACN,uFAEH,QAqCL,OAlCIygB,GACA9c,EAAM,sBAAuB+c,EAAS,MAAQ,cAI9CA,IAAWnS,EAAM3M,MAAM,YACvB2M,GAAS,WAGT0Q,MACMgC,EAAUS,IACVR,EAAUS,KAEXV,GAAWC,KAAiC,IAArBH,IAAkD,IAArBA,IAMrDA,EAAmBE,EAInBxgB,QAAQgD,KACJ,4TAUZuJ,EAAA1E,KAAA,GACqBvG,EAAQjF,IAAIuK,EAAAqI,WAAU,QAA/B,OAANyR,EAAMnU,EAAA3D,KAAA2D,EAAA1E,KAAG,GACTvG,EAAQ4N,MAAMwR,GAAO,QAmBnB,GAhBFC,GAAW,EAAAja,EAAAya,cAAa,IACxBzY,EAAgC,CAClCoL,SAAAA,EACAhG,MAAAA,EACAqS,YAAAA,EACAxX,UAAAA,EACAkL,aAAAA,EACA0M,iBAAAA,EACA1S,cAAe,CAAC,EAChB7T,IAAK2mB,EACLL,iBAAAA,EACAT,sBAAAA,GAG8BrB,OAC9B,EAAA9X,EAAAiE,SAAQ7I,EAAK,qCAGc,CAAFyK,EAAA1E,KAAA,gBAAA0E,EAAA1E,KAAA,GACnBvG,EAAQyD,IAAI6B,EAAAqI,UAAW0R,GAAS,QAoB1C,GAhBIjB,GACA5lB,OAAOwY,OAAO5J,EAAMmF,cAAgB6R,GAIpC9R,GACA9T,OAAOwY,OAAO5J,EAAMmF,cAAgB,CAAE9E,QAAS6E,IAI/C+R,GACA7lB,OAAOwY,OAAO5J,EAAMmF,cAAgB,CAAErB,UAAWmT,IAGjDiB,EAAcT,EAAc,UAAYxM,mBAAmBgN,IAG3DT,GAAmBF,EAAG,CAAAzT,EAAA1E,KAAA,SACS,OAA/B3E,EAAM,yBAAyBqJ,EAAA1E,KAAA,GACzBvG,EAAQyD,IAAI4b,EAAUjY,GAAM,YAC9B0X,EAAY,CAAF7T,EAAA1E,KAAA,gBAAA0E,EAAAtD,OAAA,SACH2X,GAAW,eAAArU,EAAA1E,KAAA,GAET/F,EAAIsf,SAASR,GAAY,eAAArU,EAAAtD,OAAA,SAAAsD,EAAA3D,MAAA,eAAA2D,EAAA1E,KAAA,GAIjB6W,EAAsB/V,GAAU,QACxB,OAD3BuW,EAAU3S,EAAA3D,KAChB9O,OAAOwY,OAAO5J,EAAOwW,GAAY3S,EAAA1E,KAAA,GAC3BvG,EAAQyD,IAAI4b,EAAUjY,GAAM,WAG7BA,EAAMsF,aAAc,CAAFzB,EAAA1E,KAAA,aACfuY,EAAY,CAAF7T,EAAA1E,KAAA,gBAAA0E,EAAAtD,OAAA,SACH2X,GAAW,eAAArU,EAAA1E,KAAA,GAET/F,EAAIsf,SAASR,GAAY,eAAArU,EAAAtD,OAAA,SAAAsD,EAAA3D,MAAA,QAgBzC,GAZKiY,EAAiB,CACnB,qBACA,aAAkBlN,mBAAmBG,GAAY,IACjD,SAAkBH,mBAAmB7F,GACrC,gBAAkB6F,mBAAmBwM,GACrC,OAAkBxM,mBAAmBhL,GACrC,SAAkBgL,mBAAmBgN,IAIrCV,GACAY,EAAezjB,KAAK,UAAYuW,mBAAmBsM,KAGnDoB,EAAuBnC,EAAWH,qBAAqBnB,SAAS,QAASgC,GAAW,CAAFrT,EAAA1E,KAAA,gBAAA0E,EAAA1E,KAAA,GAChE/F,EAAI2T,SAASyH,wBAAuB,QAC1B,OADxB1B,EAAKjP,EAAA3D,KACT9O,OAAOwY,OAAO5J,EAAO8S,GAAOjP,EAAA1E,KAAA,GACtBvG,EAAQyD,IAAI4b,EAAUjY,GAAM,QAClCmY,EAAezjB,KAAK,kBAAoBsL,EAAM4U,eAC9CuD,EAAezjB,KAAK,8BAA8B,QAGY,GAAlEwjB,EAAclY,EAAMsF,aAAe,IAAM6S,EAAe/a,KAAK,MAEzDsa,EAAY,CAAF7T,EAAA1E,KAAA,gBAAA0E,EAAAtD,OAAA,SACH2X,GAAW,YAGlBtnB,IAAUklB,IAAW,CAAAjS,EAAA1E,KAAA,gBAAA0E,EAAA1E,KAAA,IAGT,EAAAnB,EAAA4a,iBAAgBhoB,EAAQggB,EAAOC,GAAO,QAElD,IAFAuH,EAAGvU,EAAA3D,QAES9N,KACR,IAGIgmB,EAAIS,eAAe/f,WAAWkf,GAC9BI,EAAIS,eAAehgB,QAAQof,EAAUpd,KAAKC,UAAUkF,IACtD,MAAO8C,IACL,EAAA9E,EAAAxD,OAAM,4GAA8GsI,GACpHsV,EAAMhmB,KAId,GAAIgmB,IAAQhmB,KACR,IACIgmB,EAAI9K,SAAS9M,KAAO0X,EACpB9lB,KAAK0mB,iBAAiB,UAAWC,GACnC,MAAOjW,IACL,EAAA9E,EAAAxD,OAAM,sGAAwGsI,GAC9G1Q,KAAKkb,SAAS9M,KAAO0X,OAGzB9lB,KAAKkb,SAAS9M,KAAO0X,EACxB,OAAArU,EAAAtD,OAAA,yBAAAsD,EAAA1E,KAAA,GAKY/F,EAAIsf,SAASR,GAAY,eAAArU,EAAAtD,OAAA,SAAAsD,EAAA3D,MAAA,yBAAA2D,EAAApD,OAAA,GAAAmD,EAAA,KAE7CgT,EAAApjB,MAAA,KAAAD,UAAA,CAED,SAASolB,EAAuBK,EAAwB9B,GACpD,GAAiB,aAAbA,EACA,OAAO,EAEX,GAAiB,aAAbA,EACA,OAAO,EAEX,GAAiB,aAAbA,EAAyB,CACzB,IAAK8B,EACD,MAAM,IAAIniB,MAAM,gHAEpB,OAAO,EAEX,OAAOmiB,CACX,CAQA,SAAgBT,IACZ,IACI,OAAOnmB,OAASgf,KAAOD,SAAW/e,KACpC,MAAOY,GACL,OAAO,EAEf,CASA,SAAgBwlB,IACZ,IACI,OAAOpmB,OAASgf,OACP6H,QACFA,SAAW7mB,QACTkH,OAAOxC,KAClB,MAAO9D,GACL,OAAO,EAEf,CAOA,SAAgB+lB,EAAU/lB,GACH,gBAAfA,EAAE6V,KAAKvU,MAA0BtB,EAAEkmB,SAAW,IAAItY,IAAIxO,KAAKkb,SAAS9M,MAAM0Y,SAC1E5f,OAAOhE,oBAAoB,UAAWyjB,GACtCzf,OAAOgU,SAAS9M,KAAOxN,EAAE6V,KAAK/H,IAEtC,CAEA,SAMsBgN,EAAKvP,GAAA,OAAA4a,EAAA3lB,MAAC,KAADD,UAAA,UAAA4lB,IA+J1B,OA/J0BA,GAAA,EAAA1a,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAApB,SAAAyH,EAAqBhN,GAAuB,IAAA5E,EAAA+S,EAAA+C,EAAAxJ,EAAAsY,EAAAvC,EAAAvlB,EAAA+d,EAAAgK,EAAAC,EAAAtZ,EAAAoN,EAAA0K,EAAAC,EAAAvX,EAAA0Y,EAAAK,EAAA1a,EAAAsG,EAAArG,EAAAoS,EAAA3d,UAAA,OAAAmL,EAAA7B,QAAAoC,MAAA,SAAAoH,GAAA,cAAAA,EAAAxK,KAAAwK,EAAAlH,MAAA,OASa,GATX3K,EAAA0c,EAAAngB,OAAA,QAAAiF,IAAAkb,EAAA,GAAAA,EAAA,GAAmC,CAAC,EAE/EpQ,EAAM1H,EAAIiU,SACV+L,EAAUhgB,EAAIkN,aACduQ,EAAS/V,EAAIV,aAEf9O,EAAyBulB,EAAOljB,IAAI,SAClC0b,EAAuBwH,EAAOljB,IAAI,QAClC0lB,EAAuBxC,EAAOljB,IAAI,SAClC2lB,EAAuBzC,EAAOljB,IAAI,qBAEnCrC,EAAK,CAAF+U,EAAAlH,KAAA,gBAAAkH,EAAAlH,KAAA,GACQia,EAAQzlB,IAAIuK,EAAAqI,WAAU,QAAlCjV,EAAG+U,EAAAnG,KAAA,YAYHmZ,IAAaC,EAAoB,CAAAjT,EAAAlH,KAAA,eAC3B,IAAItI,MAAM,CACZwiB,EACAC,GACFhY,OAAOzO,SAASuK,KAAK,OAAM,QAQjC,OALA5C,EAAM,oBAAqBlJ,EAAK+d,IAGhC,EAAArR,EAAA4B,QAAOtO,EAAK,0DAEZ+U,EAAAlH,KAAA,GACmBia,EAAQzlB,IAAIrC,GAAI,QAOnC,GAPI0O,EAAKqG,EAAAnG,KAEHkN,GAA4B0I,MAC9B,EAAA9X,EAAAiE,SAAQ7I,EAAK,sCAKb0c,MAAe9V,GAAUA,EAAM4X,iBAAgB,CAAAvR,EAAAlH,KAAA,SAU/C,GARM2Y,EAAUS,IACVR,EAAUS,KAQXV,IAAWC,GAAajX,EAAIV,aAAazM,IAAI,YAAW,CAAA0S,EAAAlH,KAAA,SASxD,OARD2B,EAAIV,aAAa/D,IAAI,WAAY,KACzBmE,EAAiBM,EAAjBN,KAAM0Y,EAAWpY,EAAXoY,OACVpB,GACA3G,OAAOqI,YAAY,CAAEllB,KAAM,eAAgBwM,IAAKN,GAAQ0Y,GAExDnB,IACAkB,OAAOO,YAAY,CAAEllB,KAAM,eAAgBwM,IAAKN,GAAQ0Y,GACxD5f,OAAOmgB,SACVpT,EAAA9F,OAAA,SAEM,IAAIrL,SAAQ,WAAkC,KAAE,QAgD/D,GA5CA4L,EAAIV,aAAasZ,OAAO,YAGlBH,EAAW1C,EAAO8C,IAAI,SAExB7D,MAAe,EAAA9X,EAAAiE,SAAQ7I,EAAK,mCAAqCiW,GAAQkK,KAIrElK,IACAwH,EAAO6C,OAAO,QACdlf,EAAM,yCASN+e,GAAYnM,IACZyJ,EAAO6C,OAAO,SACdlf,EAAM,0CASNlB,OAAOsgB,QAAQC,cACfvgB,OAAOsgB,QAAQC,aAAa,CAAC,EAAG,GAAI/Y,EAAIN,QAKhD,EAAAxC,EAAA4B,QAAOI,EAAO,+CAIMqP,IAA2B,QAAnB9H,EAAAvH,EAAMmF,qBAAa,IAAAoC,OAAA,EAAAA,EAAE8D,gBAI9BrL,EAAMwK,SAAQ,CAAAnE,EAAAlH,KAAA,SAI+B,OAF5D,EAAAnB,EAAA4B,QAAOyP,EAAM,oCAEb7U,EAAM,sDAAsD6L,EAAAlH,KAAA,GAC/B2a,EAAkB1gB,EAAK,CAChDiW,KAAAA,EACArP,MAAAA,EACAmX,sBAAuB3iB,EAAQ2iB,sBAC/B7B,WAAY9gB,EAAQ8gB,YAActV,EAAM6X,mBAC1C,QAKF,OAVMhZ,EAAcwH,EAAAnG,KAMpB1F,EAAM,4BAA6BqE,GAInCwH,EAAAlH,KAAA,IAC4B,EAAAnB,EAAAwE,SAAkCxC,EAAMwK,SAAU3L,GAAe,QASzD,OAT9BsG,EAAakB,EAAAnG,KACnB1F,EAAM,qBAAsB2K,IAC5B,EAAAnH,EAAA4B,QAAOuF,EAAckG,aAAc,kCAGnCrL,EAAMiK,WAAY,EAAAjM,EAAAsN,0BAAyBnG,EAAe/L,GAI1D4G,EAAK0D,EAAAA,EAAA,GAAQ1D,GAAK,IAAEmF,cAAAA,IAAgBkB,EAAAlH,KAAA,GAC9Bia,EAAQ/c,IAAI/K,EAAK0O,GAAM,QAC7BxF,EAAM,6BAA6B6L,EAAAlH,KAAA,iBAGnC3E,GAAyB,QAAnB8P,EAAAtK,EAAMmF,qBAAa,IAAAmF,OAAA,EAAAA,EAAEe,cACvB,qBACA,2BACF,YAGF+B,EAA2B,CAAF/G,EAAAlH,KAAA,gBAAAkH,EAAAlH,KAAA,GACnBia,EAAQ/c,IAAI6B,EAAAqI,UAAWjV,GAAI,QAIQ,OADvCwN,EAAS,IAAI+N,EAAAhQ,QAAOzD,EAAK4G,GAC/BxF,EAAM,8BAA+BsE,GAAQuH,EAAA9F,OAAA,SACtCzB,GAAM,yBAAAuH,EAAA5F,OAAA,GAAA2F,EAAA,KAChB+S,EAAA3lB,MAAA,KAAAD,UAAA,CAED,SAIsBumB,EAAiB5S,EAAAC,GAAA,OAAA4S,EAAAvmB,MAAC,KAADD,UAAA,UAAAwmB,IA0GtC,OA1GsCA,GAAA,EAAAtb,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAhC,SAAAkI,EACHzN,EAAuBqb,GAAA,IAAApF,EAAArP,EAAAmX,EAAA7B,EAAAmC,EAAAtM,EAAAX,EAAAY,EAAAuJ,EAAA9V,EAAAmb,EAAAC,EAAAC,EAAAC,EAAA,OAAAzb,EAAA7B,QAAAoC,MAAA,SAAA+H,GAAA,cAAAA,EAAAnL,KAAAmL,EAAA7H,MAAA,OAsDvB,GApDIkQ,EAAIoF,EAAJpF,KACArP,EAAKyU,EAALzU,MACAmX,EAAqB1C,EAArB0C,sBACA7B,EAAUb,EAAVa,WA8BImC,EAAgEzX,EAAhEyX,YAAatM,EAAmDnL,EAAnDmL,aAAcX,EAAqCxK,EAArCwK,SAAUY,EAA2BpL,EAA3BoL,SAAUuJ,EAAiB3U,EAAjB2U,cAEvD,EAAA3W,EAAA4B,QAAO6X,EAAa,8BACpB,EAAAzZ,EAAA4B,QAAO4K,EAAU,2BACjB,EAAAxM,EAAA4B,QAAOwL,EAAU,0BAEXvM,EAAsC,CACxC6H,OAAQ,OACRnE,QAAS,CAAE,eAAgB,qCAC3BoE,KAAM,QAAF5J,OAAUsS,EAAI,gDAAAtS,OACdkO,mBAAmBwM,MAUvBtM,EAAc,CAAFnE,EAAA7H,KAAA,SACZN,EAAe0D,QAAQ8F,cAAgB,SAAWjP,EAAI8M,KAClDkF,EAAW,IAAMD,GAErB3Q,EACI,qEACAqE,EAAe0D,QAAQ8F,eACzBrB,EAAA7H,KAAA,qBAIGmW,EAAY,CAAFtO,EAAA7H,KAAA,cAEJ,QAASmW,GAAU,CAAAtO,EAAA7H,KAAA,SAAA6H,EAAAnG,GAC1ByU,EAAWhkB,IAAgB0V,EAAA7H,KAAA,wBAAA6H,EAAA7H,KAAA,GACrB/F,EAAI2T,SAASqN,UAAU9E,GAA6B,QAAAtO,EAAAnG,GAAAmG,EAAA9G,KAAA,QAc7D,OAhBK8Z,EAAEhT,EAAAnG,GAIFoZ,EAAa,CACfI,IAAK,MACLC,IAAKhF,EAAWgF,IAChBC,IAAKpD,GAAyBnX,EAAMmX,uBAGlC+C,EAAY,CACd5C,IAAKlM,EACLzI,IAAKyI,EACLoP,IAAKhQ,EACLiQ,IAAKrhB,EAAIshB,gBAAgBthB,EAAI2T,SAASgH,YAAY,KAClDnB,KAAK,EAAA5U,EAAA2c,iBAAgB,MACxB3T,EAAA7H,KAAA,GAE6B/F,EAAI2T,SAAS6N,eAAetF,EAAWN,IAAKgF,EAAIC,EAAYC,GAAU,QAA9FC,EAAenT,EAAA9G,KACrBrB,EAAe8H,MAAQ,0BAAJ5J,OAA8BkO,mBAAmB,2DACpEpM,EAAe8H,MAAQ,qBAAJ5J,OAAyBkO,mBAAmBkP,IAC/D3f,EAAM,2EAA0EwM,EAAA7H,KAAA,iBAKhF3E,EAAM,kEACNqE,EAAe8H,MAAQ,cAAJ5J,OAAkBkO,mBAAmBG,IAAY,QAOvE,OAJGuJ,IACFna,EAAM,qDAENqE,EAAe8H,MAAQ,kBAAoBgO,GAC5C3N,EAAAzG,OAAA,SAEM1B,GAA6B,yBAAAmI,EAAAvG,OAAA,GAAAoG,EAAA,MACvCrT,MAAA,KAAAD,UAAA,CAgCyB,SAAAsnB,IAoCzB,OApCyBA,GAAA,EAAApc,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAAnB,SAAA6J,EACHpP,EACA0hB,EACAC,GAAsC,IAAAja,EAAAuO,EAAArP,EAAApH,EAAAtH,EAAA0pB,EAAA,OAAAtc,EAAA7B,QAAAoC,MAAA,SAAAwJ,GAAA,cAAAA,EAAA5M,KAAA4M,EAAAtJ,MAAA,OAOtC,GAJM2B,EAAQ1H,EAAIiU,SACZgC,EAAQvO,EAAIV,aAAazM,IAAI,QAC7BqM,EAAQc,EAAIV,aAAazM,IAAI,UAG/B0b,IAAQrP,EAAK,CAAAyI,EAAAtJ,KAAA,eAAAsJ,EAAAlI,OAAA,SACNuN,EAAM1U,EAAK2hB,IAAa,OAOd,GADfniB,EAAUQ,EAAIkN,aAAYmC,EAAA5H,GAChBb,EAAKyI,EAAA5H,GAAA,CAAA4H,EAAAtJ,KAAA,gBAAAsJ,EAAAtJ,KAAA,GAAUvG,EAAQjF,IAAIuK,EAAAqI,WAAU,QAAAkC,EAAA5H,GAAA4H,EAAAvI,KAAA,QAA5C,OAAH5O,EAAGmX,EAAA5H,GAAA4H,EAAAtJ,KAAA,GACavG,EAAQjF,IAAIrC,GAAI,QAA1B,KAAN0pB,EAAMvS,EAAAvI,MACA,CAAFuI,EAAAtJ,KAAA,gBAAAsJ,EAAAlI,OAAA,SACC,IAAIsM,EAAAhQ,QAAOzD,EAAK4hB,IAAO,eAAAvS,EAAAlI,OAAA,SAI3BwN,EAAU3U,EAAK0hB,GAAkB1lB,MAAK,WAQzC,OAAO,IAAIF,SAAQ,WAAkC,GACzD,KAAE,yBAAAuT,EAAAhI,OAAA,GAAA+H,EAAA,MACLhV,MAAA,KAAAD,UAAA,CAlvBDqE,EAAAA,mBAAAme,EAsEAne,EAAAA,sBAAAoe,EAgBApe,EAAAA,UAAAmW,EA6RAnW,EAAAA,UAAA2gB,EAeA3gB,EAAAA,UAAA4gB,EAgBA5gB,EAAAA,UAAAmhB,EAaAnhB,EAAAA,MAAAkW,EAqKAlW,EAAAA,kBAAAkiB,EA0IAliB,EAAAA,KA9BA,SA8B0BmS,EAAAnB,EAAAO,GAAA,OAAA0R,EAAArnB,MAAC,KAADD,UAAA,wKC7uBL6lB,EAAO,oBAAAlW,EAAArG,UAAA,SAAAuc,KAAA,EAAAhW,EAAAvG,SAAA,KAAAuc,EAAA,KAAA9nB,IAAA,MAAA8C,OAExBV,GAAA,EAAA+K,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAIA,SAAAiF,EAAUtS,GAAW,IAAA8C,EAAA,OAAAsK,EAAA7B,QAAAoC,MAAA,SAAA4E,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA1E,MAAA,OAEgB,KAA3B/K,EAAQykB,eAAevnB,IAClB,CAAFuS,EAAA1E,KAAA,eAAA0E,EAAAtD,OAAA,SACE1F,KAAK6U,MAAMtb,IAAM,cAAAyP,EAAAtD,OAAA,SAErB,MAAI,wBAAAsD,EAAApD,OAAA,GAAAmD,EAAA,KACd,SAPQtF,GAAA,OAAA5K,EAAAF,MAAC,KAADD,UAAA,IAST,CAAAjC,IAAA,MAAA8C,OAAA6mB,GAAA,EAAAxc,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAIA,SAAAyH,EAAU9U,EAAa8C,GAAU,OAAAsK,EAAA7B,QAAAoC,MAAA,SAAAoH,GAAA,cAAAA,EAAAxK,KAAAwK,EAAAlH,MAAA,OAEe,OAA5C0Z,eAAevnB,GAAOuJ,KAAKC,UAAU1G,GAAOiS,EAAA9F,OAAA,SACrCnM,GAAK,wBAAAiS,EAAA5F,OAAA,GAAA2F,EAAA,KACf,SAJQ7H,EAAA2I,GAAA,OAAA+T,EAAAznB,MAAC,KAADD,UAAA,IAMT,CAAAjC,IAAA,QAAA8C,OAAA8mB,GAAA,EAAAzc,EAAA5B,SAAA6B,EAAA7B,QAAA8B,MAKA,SAAAkI,EAAYvV,GAAW,OAAAoN,EAAA7B,QAAAoC,MAAA,SAAA+H,GAAA,cAAAA,EAAAnL,KAAAmL,EAAA7H,MAAA,YAEf7N,KAAOunB,gBAAc,CAAA7R,EAAA7H,KAAA,QACM,cAApB0Z,eAAevnB,GAAK0V,EAAAzG,OAAA,UACpB,GAAI,cAAAyG,EAAAzG,OAAA,UAER,GAAK,wBAAAyG,EAAAvG,OAAA,GAAAoG,EAAA,KACf,SAPUM,GAAA,OAAA+T,EAAA1nB,MAAC,KAADD,UAAA,MALX,IAAA2nB,EAVAD,EAbAvnB,CA4BW,CA9Ba,GAA5BkE,EAAAA,QAAAwhB,mFCCAxhB,EAAAA,QAAe,CACX+Q,QAAe,4CACftD,aAAe,qHACfE,WAAe,8DACfC,cAAe,kHCLnB,IAAI2V,EAAyB,oBAAT/oB,KAAuBA,KAAOiB,KAC9C+nB,EAAW,WACf,SAASC,IACThoB,KAAK8a,OAAQ,EACb9a,KAAK0D,aAAeokB,EAAOpkB,YAC3B,CAEA,OADAskB,EAAE3pB,UAAYypB,EACP,IAAIE,CACV,CAPc,IAQf,SAAUjpB,IAEO,SAAWwF,GAE1B,IAAI0jB,EACY,oBAAqBlpB,EADjCkpB,EAEQ,WAAYlpB,GAAQ,aAAc+E,OAF1CmkB,EAIA,eAAgBlpB,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAImpB,MACG,CACT,CAAE,MAAOvoB,GACP,OAAO,CACT,CACD,CAPD,GANAsoB,EAcQ,aAAclpB,EAdtBkpB,EAeW,gBAAiBlpB,EAOhC,GAAIkpB,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAAS3a,GACP,OAAOA,GAAOwa,EAAY1b,QAAQ1O,OAAOM,UAAUiL,SAAS5J,KAAKiO,KAAS,CAC5E,EAGJ,SAAS4a,EAAc9kB,GAIrB,GAHoB,iBAATA,IACTA,EAAO0K,OAAO1K,IAEZ,4BAA4B2G,KAAK3G,GACnC,MAAM,IAAIpG,UAAU,0CAEtB,OAAOoG,EAAK4C,aACd,CAEA,SAASmiB,EAAeznB,GAItB,MAHqB,iBAAVA,IACTA,EAAQoN,OAAOpN,IAEVA,CACT,CAGA,SAAS0nB,EAAYC,GACnB,IAAIC,EAAW,CACb7c,KAAM,WACJ,IAAI/K,EAAQ2nB,EAAM7L,QAClB,MAAO,CAAC+L,UAAgBjmB,IAAV5B,EAAqBA,MAAOA,EAC5C,GASF,OANIknB,IACFU,EAAS7kB,OAAO6kB,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAAS5N,EAAQ7L,GACflP,KAAK6J,IAAM,CAAC,EAERqF,aAAmB6L,EACrB7L,EAAQ5E,SAAQ,SAASvJ,EAAO0C,GAC9BzD,KAAK6oB,OAAOplB,EAAM1C,EACpB,GAAGf,MACMiI,MAAM4G,QAAQK,GACvBA,EAAQ5E,SAAQ,SAAS4X,GACvBliB,KAAK6oB,OAAO3G,EAAO,GAAIA,EAAO,GAChC,GAAGliB,MACMkP,GACTnR,OAAO+qB,oBAAoB5Z,GAAS5E,SAAQ,SAAS7G,GACnDzD,KAAK6oB,OAAOplB,EAAMyL,EAAQzL,GAC5B,GAAGzD,KAEP,CA8DA,SAAS+oB,EAASzV,GAChB,GAAIA,EAAK4F,SACP,OAAOrX,QAAQyO,OAAO,IAAIjT,UAAU,iBAEtCiW,EAAK4F,UAAW,CAClB,CAEA,SAAS8P,EAAgBC,GACvB,OAAO,IAAIpnB,SAAQ,SAASC,EAASwO,GACnC2Y,EAAOC,OAAS,WACdpnB,EAAQmnB,EAAOppB,OACjB,EACAopB,EAAOE,QAAU,WACf7Y,EAAO2Y,EAAOvjB,MAChB,CACF,GACF,CAEA,SAAS0jB,EAAsBC,GAC7B,IAAIJ,EAAS,IAAIK,WACbC,EAAUP,EAAgBC,GAE9B,OADAA,EAAOO,kBAAkBH,GAClBE,CACT,CAmBA,SAASE,EAAYC,GACnB,GAAIA,EAAI/nB,MACN,OAAO+nB,EAAI/nB,MAAM,GAEjB,IAAIgoB,EAAO,IAAIlJ,WAAWiJ,EAAIE,YAE9B,OADAD,EAAK3gB,IAAI,IAAIyX,WAAWiJ,IACjBC,EAAKE,MAEhB,CAEA,SAASC,IA0FP,OAzFA9pB,KAAKkZ,UAAW,EAEhBlZ,KAAK+pB,UAAY,SAASzW,GAhM5B,IAAoB3F,EAiMhB3N,KAAKgqB,UAAY1W,EACZA,EAEsB,iBAATA,EAChBtT,KAAKiqB,UAAY3W,EACR2U,GAAgBC,KAAK7pB,UAAU6rB,cAAc5W,GACtDtT,KAAKmqB,UAAY7W,EACR2U,GAAoBmC,SAAS/rB,UAAU6rB,cAAc5W,GAC9DtT,KAAKqqB,cAAgB/W,EACZ2U,GAAwBqC,gBAAgBjsB,UAAU6rB,cAAc5W,GACzEtT,KAAKiqB,UAAY3W,EAAKhK,WACb2e,GAAuBA,IA5MlBta,EA4M6C2F,IA3MjDiX,SAASlsB,UAAU6rB,cAAcvc,IA4M3C3N,KAAKwqB,iBAAmBf,EAAYnW,EAAKuW,QAEzC7pB,KAAKgqB,UAAY,IAAI9B,KAAK,CAACloB,KAAKwqB,oBACvBvC,IAAwBI,YAAYhqB,UAAU6rB,cAAc5W,IAAS8U,EAAkB9U,IAChGtT,KAAKwqB,iBAAmBf,EAAYnW,GAEpCtT,KAAKiqB,UAAY3W,EAAOvV,OAAOM,UAAUiL,SAAS5J,KAAK4T,GAhBvDtT,KAAKiqB,UAAY,GAmBdjqB,KAAKkP,QAAQ5O,IAAI,kBACA,iBAATgT,EACTtT,KAAKkP,QAAQlG,IAAI,eAAgB,4BACxBhJ,KAAKmqB,WAAanqB,KAAKmqB,UAAUlpB,KAC1CjB,KAAKkP,QAAQlG,IAAI,eAAgBhJ,KAAKmqB,UAAUlpB,MACvCgnB,GAAwBqC,gBAAgBjsB,UAAU6rB,cAAc5W,IACzEtT,KAAKkP,QAAQlG,IAAI,eAAgB,mDAGvC,EAEIif,IACFjoB,KAAKqpB,KAAO,WACV,IAAIoB,EAAW1B,EAAS/oB,MACxB,GAAIyqB,EACF,OAAOA,EAGT,GAAIzqB,KAAKmqB,UACP,OAAOtoB,QAAQC,QAAQ9B,KAAKmqB,WACvB,GAAInqB,KAAKwqB,iBACd,OAAO3oB,QAAQC,QAAQ,IAAIomB,KAAK,CAACloB,KAAKwqB,oBACjC,GAAIxqB,KAAKqqB,cACd,MAAM,IAAI7mB,MAAM,wCAEhB,OAAO3B,QAAQC,QAAQ,IAAIomB,KAAK,CAACloB,KAAKiqB,YAE1C,EAEAjqB,KAAK0qB,YAAc,WACjB,OAAI1qB,KAAKwqB,iBACAzB,EAAS/oB,OAAS6B,QAAQC,QAAQ9B,KAAKwqB,kBAEvCxqB,KAAKqpB,OAAOtnB,KAAKqnB,EAE5B,GAGFppB,KAAKqZ,KAAO,WACV,IA3FoBgQ,EAClBJ,EACAM,EAyFEkB,EAAW1B,EAAS/oB,MACxB,GAAIyqB,EACF,OAAOA,EAGT,GAAIzqB,KAAKmqB,UACP,OAjGkBd,EAiGIrpB,KAAKmqB,UA/F3BZ,EAAUP,EADVC,EAAS,IAAIK,YAEjBL,EAAO0B,WAAWtB,GACXE,EA8FE,GAAIvpB,KAAKwqB,iBACd,OAAO3oB,QAAQC,QA5FrB,SAA+B4nB,GAI7B,IAHA,IAAIC,EAAO,IAAIlJ,WAAWiJ,GACtBkB,EAAQ,IAAI3iB,MAAM0hB,EAAKjsB,QAElBD,EAAI,EAAGA,EAAIksB,EAAKjsB,OAAQD,IAC/BmtB,EAAMntB,GAAK0Q,OAAO0c,aAAalB,EAAKlsB,IAEtC,OAAOmtB,EAAM7gB,KAAK,GACpB,CAoF6B+gB,CAAsB9qB,KAAKwqB,mBAC7C,GAAIxqB,KAAKqqB,cACd,MAAM,IAAI7mB,MAAM,wCAEhB,OAAO3B,QAAQC,QAAQ9B,KAAKiqB,UAEhC,EAEIhC,IACFjoB,KAAK+qB,SAAW,WACd,OAAO/qB,KAAKqZ,OAAOtX,KAAKyY,EAC1B,GAGFxa,KAAKmZ,KAAO,WACV,OAAOnZ,KAAKqZ,OAAOtX,KAAKyF,KAAK6U,MAC/B,EAEOrc,IACT,CA3MA+a,EAAQ1c,UAAUwqB,OAAS,SAASplB,EAAM1C,GACxC0C,EAAO8kB,EAAc9kB,GACrB1C,EAAQynB,EAAeznB,GACvB,IAAIiqB,EAAWhrB,KAAK6J,IAAIpG,GACxBzD,KAAK6J,IAAIpG,GAAQunB,EAAWA,EAAW,KAAOjqB,EAAQA,CACxD,EAEAga,EAAQ1c,UAAkB,OAAI,SAASoF,UAC9BzD,KAAK6J,IAAI0e,EAAc9kB,GAChC,EAEAsX,EAAQ1c,UAAUiC,IAAM,SAASmD,GAE/B,OADAA,EAAO8kB,EAAc9kB,GACdzD,KAAKsmB,IAAI7iB,GAAQzD,KAAK6J,IAAIpG,GAAQ,IAC3C,EAEAsX,EAAQ1c,UAAUioB,IAAM,SAAS7iB,GAC/B,OAAOzD,KAAK6J,IAAIlJ,eAAe4nB,EAAc9kB,GAC/C,EAEAsX,EAAQ1c,UAAU2K,IAAM,SAASvF,EAAM1C,GACrCf,KAAK6J,IAAI0e,EAAc9kB,IAAS+kB,EAAeznB,EACjD,EAEAga,EAAQ1c,UAAUiM,QAAU,SAASpJ,EAAU+pB,GAC7C,IAAK,IAAIxnB,KAAQzD,KAAK6J,IAChB7J,KAAK6J,IAAIlJ,eAAe8C,IAC1BvC,EAASxB,KAAKurB,EAASjrB,KAAK6J,IAAIpG,GAAOA,EAAMzD,KAGnD,EAEA+a,EAAQ1c,UAAUgM,KAAO,WACvB,IAAIqe,EAAQ,GAIZ,OAHA1oB,KAAKsK,SAAQ,SAASvJ,EAAO0C,GAC3BilB,EAAMrnB,KAAKoC,EACb,IACOglB,EAAYC,EACrB,EAEA3N,EAAQ1c,UAAU6sB,OAAS,WACzB,IAAIxC,EAAQ,GAIZ,OAHA1oB,KAAKsK,SAAQ,SAASvJ,GACpB2nB,EAAMrnB,KAAKN,EACb,IACO0nB,EAAYC,EACrB,EAEA3N,EAAQ1c,UAAU8sB,QAAU,WAC1B,IAAIzC,EAAQ,GAIZ,OAHA1oB,KAAKsK,SAAQ,SAASvJ,EAAO0C,GAC3BilB,EAAMrnB,KAAK,CAACoC,EAAM1C,GACpB,IACO0nB,EAAYC,EACrB,EAEIT,IACFlN,EAAQ1c,UAAUyF,OAAO6kB,UAAY5N,EAAQ1c,UAAU8sB,SAqJzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASjnB,EAAQkW,EAAOlZ,GAEtB,IAPuBkS,EACnBgY,EAMA/X,GADJnS,EAAUA,GAAW,CAAC,GACHmS,KAEnB,GAAI+G,aAAiBlW,EAAS,CAC5B,GAAIkW,EAAMnB,SACR,MAAM,IAAI7b,UAAU,gBAEtB2C,KAAKyN,IAAM4M,EAAM5M,IACjBzN,KAAKyX,YAAc4C,EAAM5C,YACpBtW,EAAQ+N,UACXlP,KAAKkP,QAAU,IAAI6L,EAAQV,EAAMnL,UAEnClP,KAAKqT,OAASgH,EAAMhH,OACpBrT,KAAK2X,KAAO0C,EAAM1C,KAClB3X,KAAK4D,OAASyW,EAAMzW,OACf0P,GAA2B,MAAnB+G,EAAM2P,YACjB1W,EAAO+G,EAAM2P,UACb3P,EAAMnB,UAAW,EAErB,MACElZ,KAAKyN,IAAMU,OAAOkM,GAYpB,GATAra,KAAKyX,YAActW,EAAQsW,aAAezX,KAAKyX,aAAe,eAC1DtW,EAAQ+N,SAAYlP,KAAKkP,UAC3BlP,KAAKkP,QAAU,IAAI6L,EAAQ5Z,EAAQ+N,UAErClP,KAAKqT,QAhCDgY,GADmBhY,EAiCOlS,EAAQkS,QAAUrT,KAAKqT,QAAU,OAhC1CiY,cACdF,EAAQ3e,QAAQ4e,IAAY,EAAIA,EAAUhY,GAgCjDrT,KAAK2X,KAAOxW,EAAQwW,MAAQ3X,KAAK2X,MAAQ,KACzC3X,KAAK4D,OAASzC,EAAQyC,QAAU5D,KAAK4D,OACrC5D,KAAKurB,SAAW,MAEK,QAAhBvrB,KAAKqT,QAAoC,SAAhBrT,KAAKqT,SAAsBC,EACvD,MAAM,IAAIjW,UAAU,6CAEtB2C,KAAK+pB,UAAUzW,EACjB,CAMA,SAASkH,EAAOlH,GACd,IAAIkY,EAAO,IAAIpB,SAYf,OAXA9W,EACGlF,OACAnE,MAAM,KACNK,SAAQ,SAASmhB,GAChB,GAAIA,EAAO,CACT,IAAIxhB,EAAQwhB,EAAMxhB,MAAM,KACpBxG,EAAOwG,EAAM4S,QAAQ1X,QAAQ,MAAO,KACpCpE,EAAQkJ,EAAMF,KAAK,KAAK5E,QAAQ,MAAO,KAC3CqmB,EAAK3C,OAAO6C,mBAAmBjoB,GAAOioB,mBAAmB3qB,GAC3D,CACF,IACKyqB,CACT,CAoBA,SAAS1gB,EAAS6gB,EAAUxqB,GACrBA,IACHA,EAAU,CAAC,GAGbnB,KAAKiB,KAAO,UACZjB,KAAK0P,YAA4B/M,IAAnBxB,EAAQuO,OAAuB,IAAMvO,EAAQuO,OAC3D1P,KAAKoc,GAAKpc,KAAK0P,QAAU,KAAO1P,KAAK0P,OAAS,IAC9C1P,KAAK6Y,WAAa,eAAgB1X,EAAUA,EAAQ0X,WAAa,KACjE7Y,KAAKkP,QAAU,IAAI6L,EAAQ5Z,EAAQ+N,SACnClP,KAAKyN,IAAMtM,EAAQsM,KAAO,GAC1BzN,KAAK+pB,UAAU4B,EACjB,CAlDAxnB,EAAQ9F,UAAUutB,MAAQ,WACxB,OAAO,IAAIznB,EAAQnE,KAAM,CAACsT,KAAMtT,KAAKgqB,WACvC,EAkCAF,EAAKpqB,KAAKyE,EAAQ9F,WAgBlByrB,EAAKpqB,KAAKoL,EAASzM,WAEnByM,EAASzM,UAAUutB,MAAQ,WACzB,OAAO,IAAI9gB,EAAS9K,KAAKgqB,UAAW,CAClCta,OAAQ1P,KAAK0P,OACbmJ,WAAY7Y,KAAK6Y,WACjB3J,QAAS,IAAI6L,EAAQ/a,KAAKkP,SAC1BzB,IAAKzN,KAAKyN,KAEd,EAEA3C,EAASpF,MAAQ,WACf,IAAI2O,EAAW,IAAIvJ,EAAS,KAAM,CAAC4E,OAAQ,EAAGmJ,WAAY,KAE1D,OADAxE,EAASpT,KAAO,QACToT,CACT,EAEA,IAAIwX,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5C/gB,EAASua,SAAW,SAAS5X,EAAKiC,GAChC,IAA0C,IAAtCmc,EAAiBpf,QAAQiD,GAC3B,MAAM,IAAIoc,WAAW,uBAGvB,OAAO,IAAIhhB,EAAS,KAAM,CAAC4E,OAAQA,EAAQR,QAAS,CAAC+K,SAAUxM,IACjE,EAEAlJ,EAAQb,aAAe3E,EAAK2E,aAC5B,IACE,IAAIa,EAAQb,YACd,CAAE,MAAOC,GACPY,EAAQb,aAAe,SAASgE,EAASjE,GACvCzD,KAAK0H,QAAUA,EACf1H,KAAKyD,KAAOA,EACZ,IAAIiC,EAAQlC,MAAMkE,GAClB1H,KAAKsB,MAAQoE,EAAMpE,KACrB,EACAiD,EAAQb,aAAarF,UAAYN,OAAOwE,OAAOiB,MAAMnF,WACrDkG,EAAQb,aAAarF,UAAU4B,YAAcsE,EAAQb,YACvD,CAEA,SAASoX,EAAMT,EAAOpR,GACpB,OAAO,IAAIpH,SAAQ,SAASC,EAASwO,GACnC,IAAInB,EAAU,IAAIhL,EAAQkW,EAAOpR,GAEjC,GAAIkG,EAAQvL,QAAUuL,EAAQvL,OAAOhB,QACnC,OAAO0N,EAAO,IAAI/L,EAAQb,aAAa,UAAW,eAGpD,IAAIqoB,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,OACN,CAEAH,EAAI7C,OAAS,WACX,IAxFgBiD,EAChBjd,EAuFI/N,EAAU,CACZuO,OAAQqc,EAAIrc,OACZmJ,WAAYkT,EAAIlT,WAChB3J,SA3Fcid,EA2FQJ,EAAIK,yBAA2B,GA1FvDld,EAAU,IAAI6L,EAGQoR,EAAWhnB,QAAQ,eAAgB,KACzC8E,MAAM,SAASK,SAAQ,SAAS+hB,GAClD,IAAIC,EAAQD,EAAKpiB,MAAM,KACnBhM,EAAMquB,EAAMzP,QAAQzO,OACxB,GAAInQ,EAAK,CACP,IAAI8C,EAAQurB,EAAMviB,KAAK,KAAKqE,OAC5Bc,EAAQ2Z,OAAO5qB,EAAK8C,EACtB,CACF,IACOmO,IAgFH/N,EAAQsM,IAAM,gBAAiBse,EAAMA,EAAIQ,YAAcprB,EAAQ+N,QAAQ5O,IAAI,iBAC3E,IAAIgT,EAAO,aAAcyY,EAAMA,EAAI1X,SAAW0X,EAAIS,aAClD1qB,EAAQ,IAAIgJ,EAASwI,EAAMnS,GAC7B,EAEA4qB,EAAI5C,QAAU,WACZ7Y,EAAO,IAAIjT,UAAU,0BACvB,EAEA0uB,EAAIU,UAAY,WACdnc,EAAO,IAAIjT,UAAU,0BACvB,EAEA0uB,EAAIlpB,QAAU,WACZyN,EAAO,IAAI/L,EAAQb,aAAa,UAAW,cAC7C,EAEAqoB,EAAI/N,KAAK7O,EAAQkE,OAAQlE,EAAQ1B,KAAK,GAEV,YAAxB0B,EAAQsI,YACVsU,EAAIW,iBAAkB,EACW,SAAxBvd,EAAQsI,cACjBsU,EAAIW,iBAAkB,GAGpB,iBAAkBX,GAAO9D,IAC3B8D,EAAIY,aAAe,QAGrBxd,EAAQD,QAAQ5E,SAAQ,SAASvJ,EAAO0C,GACtCsoB,EAAIa,iBAAiBnpB,EAAM1C,EAC7B,IAEIoO,EAAQvL,SACVuL,EAAQvL,OAAO6hB,iBAAiB,QAASwG,GAEzCF,EAAIc,mBAAqB,WAEA,IAAnBd,EAAIe,YACN3d,EAAQvL,OAAO3B,oBAAoB,QAASgqB,EAEhD,GAGFF,EAAIgB,UAAkC,IAAtB5d,EAAQ6a,UAA4B,KAAO7a,EAAQ6a,UACrE,GACF,CAEAlP,EAAMkS,UAAW,EAEZjuB,EAAK+b,QACR/b,EAAK+b,MAAQA,EACb/b,EAAKgc,QAAUA,EACfhc,EAAKoF,QAAUA,EACfpF,EAAK+L,SAAWA,GAGlBvG,EAAQwW,QAAUA,EAClBxW,EAAQJ,QAAUA,EAClBI,EAAQuG,SAAWA,EACnBvG,EAAQuW,MAAQA,EAEhB/c,OAAOC,eAAeuG,EAAS,aAAc,CAAExD,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBGgnB,GACHA,EAASjN,MAAMmS,UAAW,SAEnBlF,EAASjN,MAAMkS,SAGtB,IAAIE,EAAMnF,GACVxjB,EAAU2oB,EAAIpS,OACd,QAAkBoS,EAAIpS,MACtBvW,EAAQuW,MAAQoS,EAAIpS,MACpBvW,EAAQwW,QAAUmS,EAAInS,QACtBxW,EAAQJ,QAAU+oB,EAAI/oB,QACtBI,EAAQuG,SAAWoiB,EAAIpiB,SACvBlG,EAAOL,QAAUA,wBClhBE,oBAATxF,KAAuBA,KACT,oBAAXkH,OAAyBA,YACV,IAAX,EAAA5B,GAAyB,EAAAA,EAnBhCO,EAAOL,QAoBI,WACjB,aAYA,IAWQ4oB,EAXJC,EAAU,QAIVC,EAAUD,EACVE,EAA+B,mBAAXC,OACpBC,EAA6B,mBAAhBC,YAA6B,IAAIA,iBAAgB9qB,EAC9D+qB,EAA6B,mBAAhB1M,YAA6B,IAAIA,iBAAgBre,EAE9DgrB,EAAS1lB,MAAM5J,UAAUsD,MAAMjC,KADvB,qEAERkuB,GACIT,EAAM,CAAC,EAGZQ,EAFGrjB,SAAQ,SAAUvF,EAAGtH,GAAK,OAAO0vB,EAAIpoB,GAAKtH,CAAG,IACxC0vB,GAEPU,EAAQ,0EACRC,EAAU3f,OAAO0c,aAAansB,KAAKyP,QACnC4f,EAAsC,mBAApBtN,WAAWrB,KAC3BqB,WAAWrB,KAAK1gB,KAAK+hB,YACrB,SAAUuN,GAAM,OAAO,IAAIvN,WAAWxY,MAAM5J,UAAUsD,MAAMjC,KAAKsuB,EAAI,GAAK,EAC5EC,EAAa,SAAUC,GAAO,OAAOA,EACpC/oB,QAAQ,KAAM,IAAIA,QAAQ,UAAU,SAAUgpB,GAAM,MAAa,KAANA,EAAY,IAAM,GAAK,GAAI,EACvFC,EAAW,SAAUC,GAAK,OAAOA,EAAElpB,QAAQ,oBAAqB,GAAK,EAIrEmpB,EAAe,SAAUC,GAIzB,IAFA,IAAIC,EAAKC,EAAIC,EAAIC,EAAIC,EAAM,GACvBC,EAAMN,EAAI7wB,OAAS,EACdD,EAAI,EAAGA,EAAI8wB,EAAI7wB,QAAS,CAC7B,IAAK+wB,EAAKF,EAAI/jB,WAAW/M,MAAQ,MAC5BixB,EAAKH,EAAI/jB,WAAW/M,MAAQ,MAC5BkxB,EAAKJ,EAAI/jB,WAAW/M,MAAQ,IAC7B,MAAM,IAAIJ,UAAU,2BAExBuxB,GAAOjB,GADPa,EAAOC,GAAM,GAAOC,GAAM,EAAKC,IACV,GAAK,IACpBhB,EAAOa,GAAO,GAAK,IACnBb,EAAOa,GAAO,EAAI,IAClBb,EAAa,GAANa,EACjB,CACA,OAAOK,EAAMD,EAAIjtB,MAAM,EAAGktB,EAAM,GAAK,MAAMtlB,UAAUslB,GAAOD,CAChE,EAMIE,EAAwB,mBAATjc,KAAsB,SAAU0b,GAAO,OAAO1b,KAAK0b,EAAM,EACtEjB,EAAa,SAAUiB,GAAO,OAAOhB,OAAOnO,KAAKmP,EAAK,UAAUjlB,SAAS,SAAW,EAChFglB,EACNS,EAAkBzB,EAChB,SAAU0B,GAAO,OAAOzB,OAAOnO,KAAK4P,GAAK1lB,SAAS,SAAW,EAC7D,SAAU0lB,GAIR,IAFA,IACIC,EAAO,GACFxxB,EAAI,EAAG8D,EAAIytB,EAAItxB,OAAQD,EAAI8D,EAAG9D,GAFzB,KAGVwxB,EAAK5tB,KAAKysB,EAAQ3tB,MAAM,KAAM6uB,EAAIE,SAASzxB,EAAGA,EAHpC,QAKd,OAAOqxB,EAAMG,EAAKllB,KAAK,IAC3B,EAMAwQ,EAAiB,SAAUyU,EAAKG,GAEhC,YADgB,IAAZA,IAAsBA,GAAU,GAC7BA,EAAUlB,EAAWc,EAAgBC,IAAQD,EAAgBC,EACxE,EAIII,EAAU,SAAUrqB,GACpB,GAAIA,EAAErH,OAAS,EAEX,OADI2xB,EAAKtqB,EAAEyF,WAAW,IACV,IAAOzF,EACbsqB,EAAK,KAASvB,EAAQ,IAAQuB,IAAO,GACjCvB,EAAQ,IAAa,GAALuB,GACfvB,EAAQ,IAASuB,IAAO,GAAM,IAC3BvB,EAAQ,IAASuB,IAAO,EAAK,IAC7BvB,EAAQ,IAAa,GAALuB,GAG9B,IAAIA,EAAK,MAC0B,MAA5BtqB,EAAEyF,WAAW,GAAK,QAClBzF,EAAEyF,WAAW,GAAK,OACzB,OAAQsjB,EAAQ,IAASuB,IAAO,GAAM,GAChCvB,EAAQ,IAASuB,IAAO,GAAM,IAC9BvB,EAAQ,IAASuB,IAAO,EAAK,IAC7BvB,EAAQ,IAAa,GAALuB,EAE9B,EACIC,EAAU,gDAMVC,EAAO,SAAUC,GAAK,OAAOA,EAAErqB,QAAQmqB,EAASF,EAAU,EAE1DK,EAAUnC,EACR,SAAUe,GAAK,OAAOd,OAAOnO,KAAKiP,EAAG,QAAQ/kB,SAAS,SAAW,EACjEokB,EACI,SAAUW,GAAK,OAAOU,EAAgBrB,EAAIzM,OAAOoN,GAAK,EACtD,SAAUA,GAAK,OAAOS,EAAMS,EAAKlB,GAAK,EAM5CpN,EAAS,SAAUiN,EAAKiB,GAExB,YADgB,IAAZA,IAAsBA,GAAU,GAC7BA,EACDlB,EAAWwB,EAAQvB,IACnBuB,EAAQvB,EAClB,EAKIwB,EAAY,SAAUxB,GAAO,OAAOjN,EAAOiN,GAAK,EAAO,EAIvDyB,EAAU,8EACVC,EAAU,SAAUC,GACpB,OAAQA,EAAKnyB,QACT,KAAK,EACD,IAGmCoyB,IAHxB,EAAOD,EAAKrlB,WAAW,KAAO,IACjC,GAAOqlB,EAAKrlB,WAAW,KAAO,IAC9B,GAAOqlB,EAAKrlB,WAAW,KAAO,EAC/B,GAAOqlB,EAAKrlB,WAAW,IAAmB,MACjD,OAAQsjB,EAA0B,OAAjBgC,IAAW,KACtBhC,EAA2B,OAAT,KAATgC,IACnB,KAAK,EACD,OAAOhC,GAAU,GAAO+B,EAAKrlB,WAAW,KAAO,IACvC,GAAOqlB,EAAKrlB,WAAW,KAAO,EAC/B,GAAOqlB,EAAKrlB,WAAW,IAClC,QACI,OAAOsjB,GAAU,GAAO+B,EAAKrlB,WAAW,KAAO,EACxC,GAAOqlB,EAAKrlB,WAAW,IAE1C,EAMIulB,EAAO,SAAUC,GAAK,OAAOA,EAAE7qB,QAAQwqB,EAASC,EAAU,EAI1DK,EAAe,SAAUrB,GAGzB,GADAA,EAAMA,EAAIzpB,QAAQ,OAAQ,KACrB0oB,EAAMzjB,KAAKwkB,GACZ,MAAM,IAAIvxB,UAAU,qBACxBuxB,GAAO,KAAKjtB,MAAM,GAAkB,EAAbitB,EAAIlxB,SAE3B,IADA,IAAIwyB,EAAeC,EAAIC,EAAd7B,EAAM,GACN9wB,EAAI,EAAGA,EAAImxB,EAAIlxB,QACpBwyB,EAAMtC,EAAOgB,EAAI5P,OAAOvhB,OAAS,GAC3BmwB,EAAOgB,EAAI5P,OAAOvhB,OAAS,IAC1B0yB,EAAKvC,EAAOgB,EAAI5P,OAAOvhB,QAAU,GACjC2yB,EAAKxC,EAAOgB,EAAI5P,OAAOvhB,OAC9B8wB,GAAc,KAAP4B,EAAYrC,EAAQoC,GAAO,GAAK,KAC1B,KAAPE,EAAYtC,EAAQoC,GAAO,GAAK,IAAKA,GAAO,EAAI,KAC5CpC,EAAQoC,GAAO,GAAK,IAAKA,GAAO,EAAI,IAAW,IAANA,GAEvD,OAAO3B,CACX,EAMI8B,EAAwB,mBAATjW,KAAsB,SAAUwU,GAAO,OAAOxU,KAAKgU,EAASQ,GAAO,EAChFtB,EAAa,SAAUsB,GAAO,OAAOrB,OAAOnO,KAAKwP,EAAK,UAAUtlB,SAAS,SAAW,EAChF2mB,EAENK,EAAgBhD,EACd,SAAUiD,GAAK,OAAOxC,EAASR,OAAOnO,KAAKmR,EAAG,UAAY,EAC1D,SAAUA,GAAK,OAAOxC,EAASsC,EAAME,GAAGtmB,MAAM,IAAIJ,KAAI,SAAU9E,GAAK,OAAOA,EAAEyF,WAAW,EAAI,IAAK,EAIpGgmB,EAAe,SAAUD,GAAK,OAAOD,EAAcG,EAAOF,GAAK,EAE/DG,EAAUpD,EACR,SAAUiD,GAAK,OAAOhD,OAAOnO,KAAKmR,EAAG,UAAUjnB,SAAS,OAAS,EACjEkkB,EACI,SAAU+C,GAAK,OAAO/C,EAAIhT,OAAO8V,EAAcC,GAAK,EACpD,SAAUA,GAAK,OAAOR,EAAKM,EAAME,GAAK,EAC5CE,EAAS,SAAUF,GAAK,OAAOnC,EAASmC,EAAEprB,QAAQ,SAAS,SAAUgpB,GAAM,MAAa,KAANA,EAAY,IAAM,GAAK,IAAK,EAM9G3T,EAAS,SAAU0T,GAAO,OAAOwC,EAAQD,EAAOvC,GAAO,EAYvDyC,EAAU,SAAUppB,GACpB,MAAO,CACHxG,MAAOwG,EAAG3J,YAAY,EAAOE,UAAU,EAAMD,cAAc,EAEnE,EAII+yB,EAAe,WACf,IAAIC,EAAO,SAAUptB,EAAM6P,GAAQ,OAAOvV,OAAOC,eAAemQ,OAAO9P,UAAWoF,EAAMktB,EAAQrd,GAAQ,EACxGud,EAAK,cAAc,WAAc,OAAOrW,EAAOxa,KAAO,IACtD6wB,EAAK,YAAY,SAAU1B,GAAW,OAAOlO,EAAOjhB,KAAMmvB,EAAU,IACpE0B,EAAK,eAAe,WAAc,OAAO5P,EAAOjhB,MAAM,EAAO,IAC7D6wB,EAAK,eAAe,WAAc,OAAO5P,EAAOjhB,MAAM,EAAO,IAC7D6wB,EAAK,gBAAgB,WAAc,OAAOL,EAAaxwB,KAAO,GAClE,EAII8wB,EAAmB,WACnB,IAAID,EAAO,SAAUptB,EAAM6P,GAAQ,OAAOvV,OAAOC,eAAeyiB,WAAWpiB,UAAWoF,EAAMktB,EAAQrd,GAAQ,EAC5Gud,EAAK,YAAY,SAAU1B,GAAW,OAAO5U,EAAeva,KAAMmvB,EAAU,IAC5E0B,EAAK,eAAe,WAAc,OAAOtW,EAAeva,MAAM,EAAO,IACrE6wB,EAAK,eAAe,WAAc,OAAOtW,EAAeva,MAAM,EAAO,GACzE,EAQI+wB,EAAU,CACV3D,QAASA,EACTC,QAASA,EACTjT,KAAMiW,EACNJ,aAAcA,EACdpd,KAAMic,EACNR,aAAcA,EACd0C,WAAYxW,EACZyW,SAAUhQ,EACVA,OAAQA,EACRyO,UAAWA,EACXpV,UAAWoV,EACXH,KAAMA,EACNQ,KAAMA,EACNvV,OAAQA,EACR0W,QAtDU,SAAUhD,GACpB,GAAmB,iBAARA,EACP,OAAO,EACX,IAAIG,EAAIH,EAAI/oB,QAAQ,OAAQ,IAAIA,QAAQ,UAAW,IACnD,OAAQ,oBAAoBiF,KAAKikB,KAAO,oBAAoBjkB,KAAKikB,EACrE,EAkDI9T,eAAgBA,EAChBiW,aAAcA,EACdI,aAAcA,EACdE,iBAAkBA,EAClBK,eAxBiB,WACjBP,IACAE,GACJ,EA4BAC,OAAiB,CAAC,GAElB,OADAhzB,OAAOsM,KAAK0mB,GAASzmB,SAAQ,SAAU8mB,GAAK,OAAOL,EAAQM,OAAOD,GAAKL,EAAQK,EAAI,IAC5EL,CACX,CAnT2BO,qBCF3B,IAAIjD,EAAI,IACJznB,EAAQ,GAAJynB,EACJkD,EAAQ,GAAJ3qB,EACJ4qB,EAAQ,GAAJD,EACJE,EAAQ,EAAJD,EAsJR,SAASE,EAAOnpB,EAAIopB,EAAOC,EAAGnuB,GAC5B,IAAIouB,EAAWF,GAAa,IAAJC,EACxB,OAAOnnB,KAAKqnB,MAAMvpB,EAAKqpB,GAAK,IAAMnuB,GAAQouB,EAAW,IAAM,GAC7D,CAxIAjtB,EAAOL,QAAU,SAASsE,EAAK1H,GAC7BA,EAAUA,GAAW,CAAC,EACtB,IA8GeoH,EACXopB,EA/GA1wB,SAAc4H,EAClB,GAAa,WAAT5H,GAAqB4H,EAAInL,OAAS,EACpC,OAkBJ,SAAeyc,GAEb,MADAA,EAAMhM,OAAOgM,IACLzc,OAAS,KAAjB,CAGA,IAAI0H,EAAQ,mIAAmI2sB,KAC7I5X,GAEF,GAAK/U,EAAL,CAGA,IAAIwsB,EAAII,WAAW5sB,EAAM,IAEzB,QADYA,EAAM,IAAM,MAAMiB,eAE5B,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAzDEmrB,SAyDKI,EACT,IAAK,QACL,IAAK,OACL,IAAK,IACH,OAAOA,EAAIH,EACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOG,EAAIJ,EACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOI,EAAIL,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOK,EAAIhrB,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOgrB,EAAIvD,EACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOuD,EACT,QACE,OA3CJ,CANA,CAmDF,CAzEWvV,CAAMxT,GACR,GAAa,WAAT5H,GAAqBgxB,SAASppB,GACvC,OAAO1H,EAAQ+wB,MA0GF3pB,EA1GiBM,GA2G5B8oB,EAAQlnB,KAAKC,IAAInC,KACRipB,EACJE,EAAOnpB,EAAIopB,EAAOH,EAAG,OAE1BG,GAASJ,EACJG,EAAOnpB,EAAIopB,EAAOJ,EAAG,QAE1BI,GAAS/qB,EACJ8qB,EAAOnpB,EAAIopB,EAAO/qB,EAAG,UAE1B+qB,GAAStD,EACJqD,EAAOnpB,EAAIopB,EAAOtD,EAAG,UAEvB9lB,EAAK,OAvCd,SAAkBA,GAChB,IAAIopB,EAAQlnB,KAAKC,IAAInC,GACrB,OAAIopB,GAASH,EACJ/mB,KAAKqnB,MAAMvpB,EAAKipB,GAAK,IAE1BG,GAASJ,EACJ9mB,KAAKqnB,MAAMvpB,EAAKgpB,GAAK,IAE1BI,GAAS/qB,EACJ6D,KAAKqnB,MAAMvpB,EAAK3B,GAAK,IAE1B+qB,GAAStD,EACJ5jB,KAAKqnB,MAAMvpB,EAAK8lB,GAAK,IAEvB9lB,EAAK,IACd,CAhGyC4pB,CAAStpB,GAEhD,MAAM,IAAIrF,MACR,wDACEgE,KAAKC,UAAUoB,GAErB,kBChCAjE,EAAOL,QALP,SAA2BqB,EAAG2qB,IAC3B,MAAQA,GAAKA,EAAI3qB,EAAElI,UAAY6yB,EAAI3qB,EAAElI,QACtC,IAAK,IAAIiC,EAAI,EAAGiyB,EAAI3pB,MAAMsoB,GAAI5wB,EAAI4wB,EAAG5wB,IAAKiyB,EAAEjyB,GAAKiG,EAAEjG,GACnD,OAAOiyB,CACT,EACoChtB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCLzG,IAAI8tB,EAAmB,EAAQ,IAI/BztB,EAAOL,QAHP,SAA4BqB,GAC1B,GAAIqC,MAAM4G,QAAQjJ,GAAI,OAAOysB,EAAiBzsB,EAChD,EACqChB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCA1GK,EAAOL,QAJP,SAAgC5E,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAIX,eAAe,6DAC3C,OAAOW,CACT,EACyCiF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCJ9G,SAAS+tB,EAAmBV,EAAGnW,EAAG9b,EAAGiG,EAAGrH,EAAGgyB,EAAGxrB,GAC5C,IACE,IAAItH,EAAIm0B,EAAErB,GAAGxrB,GACXyqB,EAAI/xB,EAAEsD,KACV,CAAE,MAAO6wB,GACP,YAAYjyB,EAAEiyB,EAChB,CACAn0B,EAAEmrB,KAAOnN,EAAE+T,GAAK3tB,QAAQC,QAAQ0tB,GAAGztB,KAAK6D,EAAGrH,EAC7C,CAiBAqG,EAAOL,QAhBP,SAA2BqtB,GACzB,OAAO,WACL,IAAInW,EAAIzb,KACNL,EAAIO,UACN,OAAO,IAAI2B,SAAQ,SAAU+D,EAAGrH,GAC9B,IAAIgyB,EAAIqB,EAAEzxB,MAAMsb,EAAG9b,GACnB,SAAS4yB,EAAMX,GACbU,EAAmB/B,EAAG3qB,EAAGrH,EAAGg0B,EAAOC,EAAQ,OAAQZ,EACrD,CACA,SAASY,EAAOZ,GACdU,EAAmB/B,EAAG3qB,EAAGrH,EAAGg0B,EAAOC,EAAQ,QAASZ,EACtD,CACAW,OAAM,EACR,GACF,CACF,EACoC3tB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCtBzGK,EAAOL,QAHP,SAAyBgsB,EAAGqB,GAC1B,KAAMrB,aAAaqB,GAAI,MAAM,IAAIv0B,UAAU,oCAC7C,EACkCuH,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCHvG,IAAIkuB,EAA2B,EAAQ,MACnCj0B,EAAiB,EAAQ,MAQ7BoG,EAAOL,QAPP,SAAoBkX,EAAG9b,EAAGiG,GACxB,GAAI6sB,IAA4B,OAAOrzB,QAAQC,UAAUc,MAAM,KAAMD,WACrE,IAAI3B,EAAI,CAAC,MACTA,EAAE8C,KAAKlB,MAAM5B,EAAGoB,GAChB,IAAId,EAAI,IAAK4c,EAAE/c,KAAKyB,MAAMsb,EAAGld,IAC7B,OAAOqH,GAAKpH,EAAeK,EAAG+G,EAAEvH,WAAYQ,CAC9C,EAC6B+F,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCTlG,IAAImuB,EAAgB,EAAQ,MAC5B,SAASp1B,EAAkBqC,EAAGiG,GAC5B,IAAK,IAAI6V,EAAI,EAAGA,EAAI7V,EAAElI,OAAQ+d,IAAK,CACjC,IAAIld,EAAIqH,EAAE6V,GACVld,EAAEX,WAAaW,EAAEX,aAAc,EAAIW,EAAEV,cAAe,EAAI,UAAWU,IAAMA,EAAET,UAAW,GAAKC,OAAOC,eAAe2B,EAAG+yB,EAAcn0B,EAAEN,KAAMM,EAC5I,CACF,CAMAqG,EAAOL,QALP,SAAsB5E,EAAGiG,EAAG6V,GAC1B,OAAO7V,GAAKtI,EAAkBqC,EAAEtB,UAAWuH,GAAI6V,GAAKne,EAAkBqC,EAAG8b,GAAI1d,OAAOC,eAAe2B,EAAG,YAAa,CACjH7B,UAAU,IACR6B,CACN,EAC+BiF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCZpG,IAAImuB,EAAgB,EAAQ,MAS5B9tB,EAAOL,QARP,SAAyB5E,EAAGiG,EAAG6V,GAC7B,OAAQ7V,EAAI8sB,EAAc9sB,MAAOjG,EAAI5B,OAAOC,eAAe2B,EAAGiG,EAAG,CAC/D7E,MAAO0a,EACP7d,YAAY,EACZC,cAAc,EACdC,UAAU,IACP6B,EAAEiG,GAAK6V,EAAG9b,CACjB,EACkCiF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCTvG,SAASjG,EAAgBmd,GACvB,OAAO7W,EAAOL,QAAUjG,EAAkBP,OAAOS,eAAiBT,OAAOU,eAAeC,OAAS,SAAU+c,GACzG,OAAOA,EAAE9c,WAAaZ,OAAOU,eAAegd,EAC9C,EAAG7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,QAASjG,EAAgBmd,EACnG,CACA7W,EAAOL,QAAUjG,EAAiBsG,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCLvG,IAAI/F,EAAiB,EAAQ,MAa7BoG,EAAOL,QAZP,SAAmBkX,EAAG9b,GACpB,GAAI,mBAAqBA,GAAK,OAASA,EAAG,MAAM,IAAItC,UAAU,sDAC9Doe,EAAEpd,UAAYN,OAAOwE,OAAO5C,GAAKA,EAAEtB,UAAW,CAC5C4B,YAAa,CACXc,MAAO0a,EACP3d,UAAU,EACVD,cAAc,KAEdE,OAAOC,eAAeyd,EAAG,YAAa,CACxC3d,UAAU,IACR6B,GAAKnB,EAAeid,EAAG9b,EAC7B,EAC4BiF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCRjGK,EAAOL,QALP,SAAgC5E,GAC9B,OAAOA,GAAKA,EAAEyyB,WAAazyB,EAAI,CAC7B,QAAWA,EAEf,EACyCiF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,yBCE9GK,EAAOL,QAPP,SAA2BkX,GACzB,IACE,OAAQ,IAAMkX,SAASrpB,SAAS5J,KAAK+b,GAAGhP,QAAQ,gBAClD,CAAE,MAAOmlB,GACP,MAAO,mBAAqBnW,CAC9B,CACF,EACoC7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCPzG,SAAS3E,IACP,IACE,IAAI6b,GAAKjc,QAAQnB,UAAUoB,QAAQC,KAAKN,QAAQC,UAAUG,QAAS,IAAI,WAAa,IACtF,CAAE,MAAOic,GAAI,CACb,OAAQ7W,EAAOL,QAAU3E,EAA4B,WACnD,QAAS6b,CACX,EAAG7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,UAC1E,CACAK,EAAOL,QAAU3E,EAA2BgF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCLjHK,EAAOL,QAHP,SAA0BqB,GACxB,GAAI,oBAAsB9B,QAAU,MAAQ8B,EAAE9B,OAAO6kB,WAAa,MAAQ/iB,EAAE,cAAe,OAAOqC,MAAMmX,KAAKxZ,EAC/G,EACmChB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCAxGK,EAAOL,QAHP,WACE,MAAM,IAAIlH,UAAU,uIACtB,EACqCuH,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCH1G,IAAIquB,EAA+B,EAAQ,MAY3ChuB,EAAOL,QAXP,SAAkC5E,EAAG8b,GACnC,GAAI,MAAQ9b,EAAG,MAAO,CAAC,EACvB,IAAIpB,EACFqH,EACAnI,EAAIm1B,EAA6BjzB,EAAG8b,GACtC,GAAI1d,OAAO2d,sBAAuB,CAChC,IAAI2S,EAAItwB,OAAO2d,sBAAsB/b,GACrC,IAAKiG,EAAI,EAAGA,EAAIyoB,EAAE3wB,OAAQkI,IAAKrH,EAAI8vB,EAAEzoB,GAAI6V,EAAEoG,SAAStjB,IAAM,CAAC,EAAEs0B,qBAAqBnzB,KAAKC,EAAGpB,KAAOd,EAAEc,GAAKoB,EAAEpB,GAC5G,CACA,OAAOd,CACT,EAC2CmH,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCHhHK,EAAOL,QATP,SAAuCqB,EAAGjG,GACxC,GAAI,MAAQiG,EAAG,MAAO,CAAC,EACvB,IAAI6V,EAAI,CAAC,EACT,IAAK,IAAImW,KAAKhsB,EAAG,GAAI,CAAC,EAAEjF,eAAejB,KAAKkG,EAAGgsB,GAAI,CACjD,GAAIjyB,EAAEkiB,SAAS+P,GAAI,SACnBnW,EAAEmW,GAAKhsB,EAAEgsB,EACX,CACA,OAAOnW,CACT,EACgD7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCTrH,IAAIuuB,EAAU,gBACVC,EAAwB,EAAQ,MAMpCnuB,EAAOL,QALP,SAAoCkX,EAAG9b,GACrC,GAAIA,IAAM,UAAYmzB,EAAQnzB,IAAM,mBAAqBA,GAAI,OAAOA,EACpE,QAAI,IAAWA,EAAG,MAAM,IAAItC,UAAU,4DACtC,OAAO01B,EAAsBtX,EAC/B,EAC6C7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCPlH,IAAIuuB,EAAU,gBACd,SAASE,IACP,aACApuB,EAAOL,QAAUyuB,EAAsB,WACrC,OAAOrzB,CACT,EAAGiF,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,QACxE,IAAIkX,EACF9b,EAAI,CAAC,EACLiG,EAAI7H,OAAOM,UACXuzB,EAAIhsB,EAAEjF,eACNpC,EAAIR,OAAOC,gBAAkB,SAAUyd,EAAG9b,EAAGiG,GAC3C6V,EAAE9b,GAAKiG,EAAE7E,KACX,EACAtD,EAAI,mBAAqBqG,OAASA,OAAS,CAAC,EAC5CysB,EAAI9yB,EAAEkrB,UAAY,aAClB5jB,EAAItH,EAAEw1B,eAAiB,kBACvBzD,EAAI/xB,EAAEsG,aAAe,gBACvB,SAASmvB,EAAOzX,EAAG9b,EAAGiG,GACpB,OAAO7H,OAAOC,eAAeyd,EAAG9b,EAAG,CACjCoB,MAAO6E,EACPhI,YAAY,EACZC,cAAc,EACdC,UAAU,IACR2d,EAAE9b,EACR,CACA,IACEuzB,EAAO,CAAC,EAAG,GACb,CAAE,MAAOzX,GACPyX,EAAS,SAAgBzX,EAAG9b,EAAGiG,GAC7B,OAAO6V,EAAE9b,GAAKiG,CAChB,CACF,CACA,SAASgG,EAAK6P,EAAG9b,EAAGiG,EAAGgsB,GACrB,IAAIn0B,EAAIkC,GAAKA,EAAEtB,qBAAqB80B,EAAYxzB,EAAIwzB,EAClD5C,EAAIxyB,OAAOwE,OAAO9E,EAAEY,WACpB0G,EAAI,IAAIquB,EAAQxB,GAAK,IACvB,OAAOrzB,EAAEgyB,EAAG,UAAW,CACrBxvB,MAAOsyB,EAAiB5X,EAAG7V,EAAGb,KAC5BwrB,CACN,CACA,SAAS+C,EAAS7X,EAAG9b,EAAGiG,GACtB,IACE,MAAO,CACL3E,KAAM,SACN6b,IAAKrB,EAAE/b,KAAKC,EAAGiG,GAEnB,CAAE,MAAO6V,GACP,MAAO,CACLxa,KAAM,QACN6b,IAAKrB,EAET,CACF,CACA9b,EAAEiM,KAAOA,EACT,IAAI2lB,EAAI,iBACNhwB,EAAI,iBACJgyB,EAAI,YACJlF,EAAI,YACJmF,EAAI,CAAC,EACP,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAI70B,EAAI,CAAC,EACTq0B,EAAOr0B,EAAG0xB,GAAG,WACX,OAAOvwB,IACT,IACA,IAAIwxB,EAAIzzB,OAAOU,eACb8I,EAAIiqB,GAAKA,EAAEA,EAAEtG,EAAO,MACtB3jB,GAAKA,IAAM3B,GAAKgsB,EAAElyB,KAAK6H,EAAGgpB,KAAO1xB,EAAI0I,GACrC,IAAIlD,EAAIqvB,EAA2Br1B,UAAY80B,EAAU90B,UAAYN,OAAOwE,OAAO1D,GACnF,SAAS80B,EAAsBlY,GAC7B,CAAC,OAAQ,QAAS,UAAUnR,SAAQ,SAAU3K,GAC5CuzB,EAAOzX,EAAG9b,GAAG,SAAU8b,GACrB,OAAOzb,KAAK4zB,QAAQj0B,EAAG8b,EACzB,GACF,GACF,CACA,SAASoY,EAAcpY,EAAG9b,GACxB,SAASm0B,EAAOluB,EAAGrH,EAAGd,EAAG8yB,GACvB,IAAIxrB,EAAIuuB,EAAS7X,EAAE7V,GAAI6V,EAAGld,GAC1B,GAAI,UAAYwG,EAAE9D,KAAM,CACtB,IAAIuuB,EAAIzqB,EAAE+X,IACRyU,EAAI/B,EAAEzuB,MACR,OAAOwwB,GAAK,UAAYuB,EAAQvB,IAAMK,EAAElyB,KAAK6xB,EAAG,WAAa5xB,EAAEmC,QAAQyvB,EAAEwC,SAAShyB,MAAK,SAAU0Z,GAC/FqY,EAAO,OAAQrY,EAAGhe,EAAG8yB,EACvB,IAAG,SAAU9U,GACXqY,EAAO,QAASrY,EAAGhe,EAAG8yB,EACxB,IAAK5wB,EAAEmC,QAAQyvB,GAAGxvB,MAAK,SAAU0Z,GAC/B+T,EAAEzuB,MAAQ0a,EAAGhe,EAAE+xB,EACjB,IAAG,SAAU/T,GACX,OAAOqY,EAAO,QAASrY,EAAGhe,EAAG8yB,EAC/B,GACF,CACAA,EAAExrB,EAAE+X,IACN,CACA,IAAIlX,EACJrH,EAAEyB,KAAM,UAAW,CACjBe,MAAO,SAAe0a,EAAGmW,GACvB,SAASoC,IACP,OAAO,IAAIr0B,GAAE,SAAUA,EAAGiG,GACxBkuB,EAAOrY,EAAGmW,EAAGjyB,EAAGiG,EAClB,GACF,CACA,OAAOA,EAAIA,EAAIA,EAAE7D,KAAKiyB,EAA4BA,GAA8BA,GAClF,GAEJ,CACA,SAASX,EAAiB1zB,EAAGiG,EAAGgsB,GAC9B,IAAIrzB,EAAIgzB,EACR,OAAO,SAAU9zB,EAAG8yB,GAClB,GAAIhyB,IAAMg1B,EAAG,MAAM/vB,MAAM,gCACzB,GAAIjF,IAAM8vB,EAAG,CACX,GAAI,UAAY5wB,EAAG,MAAM8yB,EACzB,MAAO,CACLxvB,MAAO0a,EACPmN,MAAM,EAEV,CACA,IAAKgJ,EAAEve,OAAS5V,EAAGm0B,EAAE9U,IAAMyT,IAAK,CAC9B,IAAIxrB,EAAI6sB,EAAEqC,SACV,GAAIlvB,EAAG,CACL,IAAIyqB,EAAI0E,EAAoBnvB,EAAG6sB,GAC/B,GAAIpC,EAAG,CACL,GAAIA,IAAMgE,EAAG,SACb,OAAOhE,CACT,CACF,CACA,GAAI,SAAWoC,EAAEve,OAAQue,EAAE/kB,KAAO+kB,EAAEuC,MAAQvC,EAAE9U,SAAS,GAAI,UAAY8U,EAAEve,OAAQ,CAC/E,GAAI9U,IAAMgzB,EAAG,MAAMhzB,EAAI8vB,EAAGuD,EAAE9U,IAC5B8U,EAAEwC,kBAAkBxC,EAAE9U,IACxB,KAAO,WAAa8U,EAAEve,QAAUue,EAAE1kB,OAAO,SAAU0kB,EAAE9U,KACrDve,EAAIg1B,EACJ,IAAI10B,EAAIy0B,EAAS3zB,EAAGiG,EAAGgsB,GACvB,GAAI,WAAa/yB,EAAEoC,KAAM,CACvB,GAAI1C,EAAIqzB,EAAEhJ,KAAOyF,EAAI9sB,EAAG1C,EAAEie,MAAQ0W,EAAG,SACrC,MAAO,CACLzyB,MAAOlC,EAAEie,IACT8L,KAAMgJ,EAAEhJ,KAEZ,CACA,UAAY/pB,EAAEoC,OAAS1C,EAAI8vB,EAAGuD,EAAEve,OAAS,QAASue,EAAE9U,IAAMje,EAAEie,IAC9D,CACF,CACF,CACA,SAASoX,EAAoBv0B,EAAGiG,GAC9B,IAAIgsB,EAAIhsB,EAAEyN,OACR9U,EAAIoB,EAAEgpB,SAASiJ,GACjB,GAAIrzB,IAAMkd,EAAG,OAAO7V,EAAEquB,SAAW,KAAM,UAAYrC,GAAKjyB,EAAEgpB,SAAiB,SAAM/iB,EAAEyN,OAAS,SAAUzN,EAAEkX,IAAMrB,EAAGyY,EAAoBv0B,EAAGiG,GAAI,UAAYA,EAAEyN,SAAW,WAAaue,IAAMhsB,EAAEyN,OAAS,QAASzN,EAAEkX,IAAM,IAAIzf,UAAU,oCAAsCu0B,EAAI,aAAc4B,EAC1R,IAAI/1B,EAAI61B,EAAS/0B,EAAGoB,EAAEgpB,SAAU/iB,EAAEkX,KAClC,GAAI,UAAYrf,EAAEwD,KAAM,OAAO2E,EAAEyN,OAAS,QAASzN,EAAEkX,IAAMrf,EAAEqf,IAAKlX,EAAEquB,SAAW,KAAMT,EACrF,IAAIjD,EAAI9yB,EAAEqf,IACV,OAAOyT,EAAIA,EAAE3H,MAAQhjB,EAAEjG,EAAE00B,YAAc9D,EAAExvB,MAAO6E,EAAEkG,KAAOnM,EAAE20B,QAAS,WAAa1uB,EAAEyN,SAAWzN,EAAEyN,OAAS,OAAQzN,EAAEkX,IAAMrB,GAAI7V,EAAEquB,SAAW,KAAMT,GAAKjD,GAAK3qB,EAAEyN,OAAS,QAASzN,EAAEkX,IAAM,IAAIzf,UAAU,oCAAqCuI,EAAEquB,SAAW,KAAMT,EAC9P,CACA,SAASe,EAAa9Y,GACpB,IAAI9b,EAAI,CACN60B,OAAQ/Y,EAAE,IAEZ,KAAKA,IAAM9b,EAAE80B,SAAWhZ,EAAE,IAAK,KAAKA,IAAM9b,EAAE+0B,WAAajZ,EAAE,GAAI9b,EAAEg1B,SAAWlZ,EAAE,IAAKzb,KAAK40B,WAAWvzB,KAAK1B,EAC1G,CACA,SAASk1B,EAAcpZ,GACrB,IAAI9b,EAAI8b,EAAEqZ,YAAc,CAAC,EACzBn1B,EAAEsB,KAAO,gBAAiBtB,EAAEmd,IAAKrB,EAAEqZ,WAAan1B,CAClD,CACA,SAASyzB,EAAQ3X,GACfzb,KAAK40B,WAAa,CAAC,CACjBJ,OAAQ,SACN/Y,EAAEnR,QAAQiqB,EAAcv0B,MAAOA,KAAK+0B,OAAM,EAChD,CACA,SAAS7J,EAAOvrB,GACd,GAAIA,GAAK,KAAOA,EAAG,CACjB,IAAIiG,EAAIjG,EAAE4wB,GACV,GAAI3qB,EAAG,OAAOA,EAAElG,KAAKC,GACrB,GAAI,mBAAqBA,EAAEmM,KAAM,OAAOnM,EACxC,IAAKq1B,MAAMr1B,EAAEjC,QAAS,CACpB,IAAIa,GAAK,EACPd,EAAI,SAASqO,IACX,OAASvN,EAAIoB,EAAEjC,QAAS,GAAIk0B,EAAElyB,KAAKC,EAAGpB,GAAI,OAAOuN,EAAK/K,MAAQpB,EAAEpB,GAAIuN,EAAK8c,MAAO,EAAI9c,EACpF,OAAOA,EAAK/K,MAAQ0a,EAAG3P,EAAK8c,MAAO,EAAI9c,CACzC,EACF,OAAOrO,EAAEqO,KAAOrO,CAClB,CACF,CACA,MAAM,IAAIJ,UAAUy1B,EAAQnzB,GAAK,mBACnC,CACA,OAAO8zB,EAAkBp1B,UAAYq1B,EAA4Bn1B,EAAE8F,EAAG,cAAe,CACnFtD,MAAO2yB,EACP71B,cAAc,IACZU,EAAEm1B,EAA4B,cAAe,CAC/C3yB,MAAO0yB,EACP51B,cAAc,IACZ41B,EAAkBwB,YAAc/B,EAAOQ,EAA4BlE,EAAG,qBAAsB7vB,EAAEu1B,oBAAsB,SAAUzZ,GAChI,IAAI9b,EAAI,mBAAqB8b,GAAKA,EAAExb,YACpC,QAASN,IAAMA,IAAM8zB,GAAqB,uBAAyB9zB,EAAEs1B,aAAet1B,EAAE8D,MACxF,EAAG9D,EAAE2L,KAAO,SAAUmQ,GACpB,OAAO1d,OAAOS,eAAiBT,OAAOS,eAAeid,EAAGiY,IAA+BjY,EAAE9c,UAAY+0B,EAA4BR,EAAOzX,EAAG+T,EAAG,sBAAuB/T,EAAEpd,UAAYN,OAAOwE,OAAO8B,GAAIoX,CACvM,EAAG9b,EAAEw1B,MAAQ,SAAU1Z,GACrB,MAAO,CACLsY,QAAStY,EAEb,EAAGkY,EAAsBE,EAAcx1B,WAAY60B,EAAOW,EAAcx1B,UAAW0G,GAAG,WACpF,OAAO/E,IACT,IAAIL,EAAEk0B,cAAgBA,EAAel0B,EAAEy1B,MAAQ,SAAU3Z,EAAG7V,EAAGgsB,EAAGrzB,EAAGd,QACnE,IAAWA,IAAMA,EAAIoE,SACrB,IAAI0uB,EAAI,IAAIsD,EAAcjoB,EAAK6P,EAAG7V,EAAGgsB,EAAGrzB,GAAId,GAC5C,OAAOkC,EAAEu1B,oBAAoBtvB,GAAK2qB,EAAIA,EAAEzkB,OAAO/J,MAAK,SAAU0Z,GAC5D,OAAOA,EAAEmN,KAAOnN,EAAE1a,MAAQwvB,EAAEzkB,MAC9B,GACF,EAAG6nB,EAAsBtvB,GAAI6uB,EAAO7uB,EAAGmrB,EAAG,aAAc0D,EAAO7uB,EAAGksB,GAAG,WACnE,OAAOvwB,IACT,IAAIkzB,EAAO7uB,EAAG,YAAY,WACxB,MAAO,oBACT,IAAI1E,EAAE0K,KAAO,SAAUoR,GACrB,IAAI9b,EAAI5B,OAAO0d,GACb7V,EAAI,GACN,IAAK,IAAIgsB,KAAKjyB,EAAGiG,EAAEvE,KAAKuwB,GACxB,OAAOhsB,EAAEyvB,UAAW,SAASvpB,IAC3B,KAAOlG,EAAElI,QAAS,CAChB,IAAI+d,EAAI7V,EAAE0G,MACV,GAAImP,KAAK9b,EAAG,OAAOmM,EAAK/K,MAAQ0a,EAAG3P,EAAK8c,MAAO,EAAI9c,CACrD,CACA,OAAOA,EAAK8c,MAAO,EAAI9c,CACzB,CACF,EAAGnM,EAAEurB,OAASA,EAAQkI,EAAQ/0B,UAAY,CACxC4B,YAAamzB,EACb2B,MAAO,SAAep1B,GACpB,GAAIK,KAAKwI,KAAO,EAAGxI,KAAK8L,KAAO,EAAG9L,KAAK6M,KAAO7M,KAAKm0B,MAAQ1Y,EAAGzb,KAAK4oB,MAAO,EAAI5oB,KAAKi0B,SAAW,KAAMj0B,KAAKqT,OAAS,OAAQrT,KAAK8c,IAAMrB,EAAGzb,KAAK40B,WAAWtqB,QAAQuqB,IAAiBl1B,EAAG,IAAK,IAAIiG,KAAK5F,KAAM,MAAQ4F,EAAEoZ,OAAO,IAAM4S,EAAElyB,KAAKM,KAAM4F,KAAOovB,OAAOpvB,EAAEjE,MAAM,MAAQ3B,KAAK4F,GAAK6V,EACtR,EACArO,KAAM,WACJpN,KAAK4oB,MAAO,EACZ,IAAInN,EAAIzb,KAAK40B,WAAW,GAAGE,WAC3B,GAAI,UAAYrZ,EAAExa,KAAM,MAAMwa,EAAEqB,IAChC,OAAO9c,KAAKs1B,IACd,EACAlB,kBAAmB,SAA2Bz0B,GAC5C,GAAIK,KAAK4oB,KAAM,MAAMjpB,EACrB,IAAIiG,EAAI5F,KACR,SAASu1B,EAAO3D,EAAGrzB,GACjB,OAAOgyB,EAAEtvB,KAAO,QAASsvB,EAAEzT,IAAMnd,EAAGiG,EAAEkG,KAAO8lB,EAAGrzB,IAAMqH,EAAEyN,OAAS,OAAQzN,EAAEkX,IAAMrB,KAAMld,CACzF,CACA,IAAK,IAAIA,EAAIyB,KAAK40B,WAAWl3B,OAAS,EAAGa,GAAK,IAAKA,EAAG,CACpD,IAAId,EAAIuC,KAAK40B,WAAWr2B,GACtBgyB,EAAI9yB,EAAEq3B,WACR,GAAI,SAAWr3B,EAAE+2B,OAAQ,OAAOe,EAAO,OACvC,GAAI93B,EAAE+2B,QAAUx0B,KAAKwI,KAAM,CACzB,IAAIzD,EAAI6sB,EAAElyB,KAAKjC,EAAG,YAChB+xB,EAAIoC,EAAElyB,KAAKjC,EAAG,cAChB,GAAIsH,GAAKyqB,EAAG,CACV,GAAIxvB,KAAKwI,KAAO/K,EAAEg3B,SAAU,OAAOc,EAAO93B,EAAEg3B,UAAU,GACtD,GAAIz0B,KAAKwI,KAAO/K,EAAEi3B,WAAY,OAAOa,EAAO93B,EAAEi3B,WAChD,MAAO,GAAI3vB,GACT,GAAI/E,KAAKwI,KAAO/K,EAAEg3B,SAAU,OAAOc,EAAO93B,EAAEg3B,UAAU,OACjD,CACL,IAAKjF,EAAG,MAAMhsB,MAAM,0CACpB,GAAIxD,KAAKwI,KAAO/K,EAAEi3B,WAAY,OAAOa,EAAO93B,EAAEi3B,WAChD,CACF,CACF,CACF,EACAxnB,OAAQ,SAAgBuO,EAAG9b,GACzB,IAAK,IAAIiG,EAAI5F,KAAK40B,WAAWl3B,OAAS,EAAGkI,GAAK,IAAKA,EAAG,CACpD,IAAIrH,EAAIyB,KAAK40B,WAAWhvB,GACxB,GAAIrH,EAAEi2B,QAAUx0B,KAAKwI,MAAQopB,EAAElyB,KAAKnB,EAAG,eAAiByB,KAAKwI,KAAOjK,EAAEm2B,WAAY,CAChF,IAAIj3B,EAAIc,EACR,KACF,CACF,CACAd,IAAM,UAAYge,GAAK,aAAeA,IAAMhe,EAAE+2B,QAAU70B,GAAKA,GAAKlC,EAAEi3B,aAAej3B,EAAI,MACvF,IAAI8yB,EAAI9yB,EAAIA,EAAEq3B,WAAa,CAAC,EAC5B,OAAOvE,EAAEtvB,KAAOwa,EAAG8U,EAAEzT,IAAMnd,EAAGlC,GAAKuC,KAAKqT,OAAS,OAAQrT,KAAK8L,KAAOrO,EAAEi3B,WAAYlB,GAAKxzB,KAAKw1B,SAASjF,EACxG,EACAiF,SAAU,SAAkB/Z,EAAG9b,GAC7B,GAAI,UAAY8b,EAAExa,KAAM,MAAMwa,EAAEqB,IAChC,MAAO,UAAYrB,EAAExa,MAAQ,aAAewa,EAAExa,KAAOjB,KAAK8L,KAAO2P,EAAEqB,IAAM,WAAarB,EAAExa,MAAQjB,KAAKs1B,KAAOt1B,KAAK8c,IAAMrB,EAAEqB,IAAK9c,KAAKqT,OAAS,SAAUrT,KAAK8L,KAAO,OAAS,WAAa2P,EAAExa,MAAQtB,IAAMK,KAAK8L,KAAOnM,GAAI6zB,CAC1N,EACAiC,OAAQ,SAAgBha,GACtB,IAAK,IAAI9b,EAAIK,KAAK40B,WAAWl3B,OAAS,EAAGiC,GAAK,IAAKA,EAAG,CACpD,IAAIiG,EAAI5F,KAAK40B,WAAWj1B,GACxB,GAAIiG,EAAE8uB,aAAejZ,EAAG,OAAOzb,KAAKw1B,SAAS5vB,EAAEkvB,WAAYlvB,EAAE+uB,UAAWE,EAAcjvB,GAAI4tB,CAC5F,CACF,EACA,MAAS,SAAgB/X,GACvB,IAAK,IAAI9b,EAAIK,KAAK40B,WAAWl3B,OAAS,EAAGiC,GAAK,IAAKA,EAAG,CACpD,IAAIiG,EAAI5F,KAAK40B,WAAWj1B,GACxB,GAAIiG,EAAE4uB,SAAW/Y,EAAG,CAClB,IAAImW,EAAIhsB,EAAEkvB,WACV,GAAI,UAAYlD,EAAE3wB,KAAM,CACtB,IAAI1C,EAAIqzB,EAAE9U,IACV+X,EAAcjvB,EAChB,CACA,OAAOrH,CACT,CACF,CACA,MAAMiF,MAAM,wBACd,EACAkyB,cAAe,SAAuB/1B,EAAGiG,EAAGgsB,GAC1C,OAAO5xB,KAAKi0B,SAAW,CACrBtL,SAAUuC,EAAOvrB,GACjB00B,WAAYzuB,EACZ0uB,QAAS1C,GACR,SAAW5xB,KAAKqT,SAAWrT,KAAK8c,IAAMrB,GAAI+X,CAC/C,GACC7zB,CACL,CACAiF,EAAOL,QAAUyuB,EAAqBpuB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BC/S3G,SAAS3F,EAAgB6c,EAAG9b,GAC1B,OAAOiF,EAAOL,QAAU3F,EAAkBb,OAAOS,eAAiBT,OAAOS,eAAeE,OAAS,SAAU+c,EAAG9b,GAC5G,OAAO8b,EAAE9c,UAAYgB,EAAG8b,CAC1B,EAAG7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,QAAS3F,EAAgB6c,EAAG9b,EACtG,CACAiF,EAAOL,QAAU3F,EAAiBgG,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCLvG,IAAIoxB,EAAoB,EAAQ,MAC5BC,EAAkB,EAAQ,MAC1BC,EAA6B,EAAQ,MACrCC,EAAoB,EAAQ,MAIhClxB,EAAOL,QAHP,SAA4BqB,GAC1B,OAAO+vB,EAAkB/vB,IAAMgwB,EAAgBhwB,IAAMiwB,EAA2BjwB,IAAMkwB,GACxF,EACqClxB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCP1G,IAAIuuB,EAAU,gBAWdluB,EAAOL,QAVP,SAAqBkX,EAAG7V,GACtB,GAAI,UAAYktB,EAAQrX,KAAOA,EAAG,OAAOA,EACzC,IAAI9b,EAAI8b,EAAE3X,OAAOiyB,aACjB,QAAI,IAAWp2B,EAAG,CAChB,IAAIlC,EAAIkC,EAAED,KAAK+b,EAAG7V,GAAK,WACvB,GAAI,UAAYktB,EAAQr1B,GAAI,OAAOA,EACnC,MAAM,IAAIJ,UAAU,+CACtB,CACA,OAAQ,WAAauI,EAAIuI,OAAS9F,QAAQoT,EAC5C,EAC8B7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCXnG,IAAIuuB,EAAU,gBACViD,EAAc,EAAQ,MAK1BnxB,EAAOL,QAJP,SAAuBkX,GACrB,IAAIhe,EAAIs4B,EAAYta,EAAG,UACvB,MAAO,UAAYqX,EAAQr1B,GAAKA,EAAIA,EAAI,EAC1C,EACgCmH,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,0BCNrG,SAASuuB,EAAQv0B,GAGf,OAAOqG,EAAOL,QAAUuuB,EAAU,mBAAqBhvB,QAAU,iBAAmBA,OAAO6kB,SAAW,SAAUpqB,GAC9G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBuF,QAAUvF,EAAE0B,cAAgB6D,QAAUvF,IAAMuF,OAAOzF,UAAY,gBAAkBE,CACpH,EAAGqG,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,QAASuuB,EAAQv0B,EAC3F,CACAqG,EAAOL,QAAUuuB,EAASluB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCT/F,IAAI8tB,EAAmB,EAAQ,IAQ/BztB,EAAOL,QAPP,SAAqCqB,EAAG2qB,GACtC,GAAI3qB,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAOysB,EAAiBzsB,EAAG2qB,GACrD,IAAI9U,EAAI,CAAC,EAAEnS,SAAS5J,KAAKkG,GAAGjE,MAAM,GAAI,GACtC,MAAO,WAAa8Z,GAAK7V,EAAE3F,cAAgBwb,EAAI7V,EAAE3F,YAAYwD,MAAO,QAAUgY,GAAK,QAAUA,EAAIxT,MAAMmX,KAAKxZ,GAAK,cAAgB6V,GAAK,2CAA2CrR,KAAKqR,GAAK4W,EAAiBzsB,EAAG2qB,QAAK,CACtN,CACF,EAC8C3rB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCRnH,IAAI9F,EAAiB,EAAQ,MACzBD,EAAiB,EAAQ,MACzBw3B,EAAmB,EAAQ,KAC3B32B,EAAY,EAAQ,MACxB,SAAS42B,EAAiBxa,GACxB,IAAI7V,EAAI,mBAAqBswB,IAAM,IAAIA,SAAQ,EAC/C,OAAOtxB,EAAOL,QAAU0xB,EAAmB,SAA0Bxa,GACnE,GAAI,OAASA,IAAMua,EAAiBva,GAAI,OAAOA,EAC/C,GAAI,mBAAqBA,EAAG,MAAM,IAAIpe,UAAU,sDAChD,QAAI,IAAWuI,EAAG,CAChB,GAAIA,EAAE0gB,IAAI7K,GAAI,OAAO7V,EAAEtF,IAAImb,GAC3B7V,EAAEoD,IAAIyS,EAAG0a,EACX,CACA,SAASA,IACP,OAAO92B,EAAUoc,EAAGvb,UAAWzB,EAAeuB,MAAMC,YACtD,CACA,OAAOk2B,EAAQ93B,UAAYN,OAAOwE,OAAOkZ,EAAEpd,UAAW,CACpD4B,YAAa,CACXc,MAAOo1B,EACPv4B,YAAY,EACZE,UAAU,EACVD,cAAc,KAEdW,EAAe23B,EAAS1a,EAC9B,EAAG7W,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,QAAS0xB,EAAiBxa,EACpG,CACA7W,EAAOL,QAAU0xB,EAAkBrxB,EAAOL,QAAQ6tB,YAAa,EAAMxtB,EAAOL,QAAiB,QAAIK,EAAOL,8BCxBxG,IAAI6xB,EAAU,EAAQ,KAAR,GACdxxB,EAAOL,QAAU6xB,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,iBAAftW,WACTA,WAAWqW,mBAAqBD,EAEhCzD,SAAS,IAAK,yBAAdA,CAAwCyD,EAE5C,qCCbA,IAAIG,EAAa,EAAQ,MACrBC,EAAc,EAAQ,MAEtBC,EAAap5B,UAGjBuH,EAAOL,QAAU,SAAUmyB,GACzB,GAAIH,EAAWG,GAAW,OAAOA,EACjC,MAAM,IAAID,EAAWD,EAAYE,GAAY,qBAC/C,qCCTA,IAAIC,EAAgB,EAAQ,MACxBH,EAAc,EAAQ,MAEtBC,EAAap5B,UAGjBuH,EAAOL,QAAU,SAAUmyB,GACzB,GAAIC,EAAcD,GAAW,OAAOA,EACpC,MAAM,IAAID,EAAWD,EAAYE,GAAY,wBAC/C,qCCTA,IAAIE,EAAsB,EAAQ,MAE9BC,EAAU1oB,OACVsoB,EAAap5B,UAEjBuH,EAAOL,QAAU,SAAUmyB,GACzB,GAAIE,EAAoBF,GAAW,OAAOA,EAC1C,MAAM,IAAID,EAAW,aAAeI,EAAQH,GAAY,kBAC1D,qCCRA,IAAII,EAAkB,EAAQ,MAC1Bv0B,EAAS,EAAQ,MACjBvE,EAAiB,UAEjB+4B,EAAcD,EAAgB,eAC9BE,EAAiB/uB,MAAM5J,eAISsE,IAAhCq0B,EAAeD,IACjB/4B,EAAeg5B,EAAgBD,EAAa,CAC1Cl5B,cAAc,EACdkD,MAAOwB,EAAO,QAKlBqC,EAAOL,QAAU,SAAUtG,GACzB+4B,EAAeD,GAAa94B,IAAO,CACrC,qCCnBA,IAAI+gB,EAAS,eAIbpa,EAAOL,QAAU,SAAU0yB,EAAGhyB,EAAOiyB,GACnC,OAAOjyB,GAASiyB,EAAUlY,EAAOiY,EAAGhyB,GAAOvH,OAAS,EACtD,oCCNA,IAAIwsB,EAAgB,EAAQ,MAExBuM,EAAap5B,UAEjBuH,EAAOL,QAAU,SAAUypB,EAAImJ,GAC7B,GAAIjN,EAAciN,EAAWnJ,GAAK,OAAOA,EACzC,MAAM,IAAIyI,EAAW,uBACvB,qCCPA,IAAIW,EAAW,EAAQ,IAEnBP,EAAU1oB,OACVsoB,EAAap5B,UAGjBuH,EAAOL,QAAU,SAAUmyB,GACzB,GAAIU,EAASV,GAAW,OAAOA,EAC/B,MAAM,IAAID,EAAWI,EAAQH,GAAY,oBAC3C,iCCRA9xB,EAAOL,QAAgC,oBAAf8jB,aAAiD,oBAAZkC,4CCD7D,IAmCI8M,EAAMj6B,EAAa+5B,EAnCnBG,EAAsB,EAAQ,MAC9BC,EAAc,EAAQ,MACtBvX,EAAa,EAAQ,MACrBuW,EAAa,EAAQ,MACrBa,EAAW,EAAQ,IACnBI,EAAS,EAAQ,MACjBC,EAAU,EAAQ,MAClBjB,EAAc,EAAQ,MACtBkB,EAA8B,EAAQ,MACtCC,EAAgB,EAAQ,MACxBC,EAAwB,EAAQ,MAChC1N,EAAgB,EAAQ,MACxBzrB,EAAiB,EAAQ,MACzBD,EAAiB,EAAQ,MACzBs4B,EAAkB,EAAQ,MAC1Be,EAAM,EAAQ,MACdC,EAAsB,EAAQ,MAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBx3B,IACvC43B,EAAYlY,EAAWkY,UACvBC,EAAqBD,GAAaA,EAAU75B,UAC5C+5B,EAAoBpY,EAAWoY,kBAC/BC,EAA6BD,GAAqBA,EAAkB/5B,UACpEi6B,EAAaJ,GAAaz5B,EAAey5B,GACzCK,EAAsBJ,GAAsB15B,EAAe05B,GAC3DK,EAAkBz6B,OAAOM,UACzBhB,EAAY2iB,EAAW3iB,UAEvBo7B,EAAgB3B,EAAgB,eAChC4B,EAAkBb,EAAI,mBACtBc,EAA0B,wBAE1BC,EAA4BtB,KAAyB94B,GAAgD,UAA9Bi5B,EAAQzX,EAAW6Y,OAC1FC,GAA2B,EAG3BC,EAA6B,CAC/Bb,UAAW,EACXzX,WAAY,EACZ2X,kBAAmB,EACnBY,WAAY,EACZC,YAAa,EACbC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,aAAc,GAGZC,EAA8B,CAChCC,cAAe,EACfC,eAAgB,GAWdC,EAA2B,SAAUzL,GACvC,IAAI0L,EAAQj7B,EAAeuvB,GAC3B,GAAKoJ,EAASsC,GAAd,CACA,IAAI/sB,EAAQsrB,EAAiByB,GAC7B,OAAQ/sB,GAAS6qB,EAAO7qB,EAAOgsB,GAA4BhsB,EAAMgsB,GAA2Bc,EAAyBC,EAFzF,CAG9B,EAEIC,EAAe,SAAU3L,GAC3B,IAAKoJ,EAASpJ,GAAK,OAAO,EAC1B,IAAI4L,EAAQnC,EAAQzJ,GACpB,OAAOwJ,EAAOuB,EAA4Ba,IACrCpC,EAAO8B,EAA6BM,EAC3C,EAwDA,IAAKvC,KAAQ0B,GAEX5B,GADA/5B,EAAc4iB,EAAWqX,KACEj6B,EAAYiB,WACxB05B,EAAqBZ,GAAWwB,GAA2Bv7B,EACrEw7B,GAA4B,EAGnC,IAAKvB,KAAQiC,GAEXnC,GADA/5B,EAAc4iB,EAAWqX,KACEj6B,EAAYiB,aACxB05B,EAAqBZ,GAAWwB,GAA2Bv7B,GAI5E,KAAKw7B,IAA8BrC,EAAW+B,IAAeA,IAAe3F,SAASt0B,aAEnFi6B,EAAa,WACX,MAAM,IAAIj7B,EAAU,uBACtB,EACIu7B,GAA2B,IAAKvB,KAAQ0B,EACtC/Y,EAAWqX,IAAO74B,EAAewhB,EAAWqX,GAAOiB,GAI3D,KAAKM,IAA8BL,GAAuBA,IAAwBC,KAChFD,EAAsBD,EAAWj6B,UAC7Bu6B,GAA2B,IAAKvB,KAAQ0B,EACtC/Y,EAAWqX,IAAO74B,EAAewhB,EAAWqX,GAAMh5B,UAAWk6B,GASrE,GAJIK,GAA6Bn6B,EAAe45B,KAAgCE,GAC9E/5B,EAAe65B,EAA4BE,GAGzChB,IAAgBC,EAAOe,EAAqBE,GAQ9C,IAAKpB,KAPLyB,GAA2B,EAC3BlB,EAAsBW,EAAqBE,EAAe,CACxD56B,cAAc,EACdyC,IAAK,WACH,OAAO82B,EAASp3B,MAAQA,KAAK04B,QAAmB/1B,CAClD,IAEWo2B,EAAgC/Y,EAAWqX,IACtDK,EAA4B1X,EAAWqX,GAAOqB,EAAiBrB,GAInEzyB,EAAOL,QAAU,CACfq0B,0BAA2BA,EAC3BF,gBAAiBI,GAA4BJ,EAC7CmB,YA1GgB,SAAU7L,GAC1B,GAAI2L,EAAa3L,GAAK,OAAOA,EAC7B,MAAM,IAAI3wB,EAAU,8BACtB,EAwGEy8B,uBAtG2B,SAAUC,GACrC,GAAIxD,EAAWwD,MAAQv7B,GAAkB0rB,EAAcoO,EAAYyB,IAAK,OAAOA,EAC/E,MAAM,IAAI18B,EAAUm5B,EAAYuD,GAAK,oCACvC,EAoGEC,uBAlG2B,SAAUC,EAAK15B,EAAU25B,EAAQ/4B,GAC5D,GAAKo2B,EAAL,CACA,GAAI2C,EAAQ,IAAK,IAAIC,KAASpB,EAA4B,CACxD,IAAIqB,EAAwBpa,EAAWma,GACvC,GAAIC,GAAyB5C,EAAO4C,EAAsB/7B,UAAW47B,GAAM,WAClEG,EAAsB/7B,UAAU47B,EACzC,CAAE,MAAOv0B,GAEP,IACE00B,EAAsB/7B,UAAU47B,GAAO15B,CACzC,CAAE,MAAO85B,GAAsB,CACjC,CACF,CACK9B,EAAoB0B,KAAQC,GAC/BvC,EAAcY,EAAqB0B,EAAKC,EAAS35B,EAC7Cq4B,GAA6BT,EAAmB8B,IAAQ15B,EAAUY,EAdhD,CAgB1B,EAkFEm5B,6BAhFiC,SAAUL,EAAK15B,EAAU25B,GAC1D,IAAIC,EAAOC,EACX,GAAK7C,EAAL,CACA,GAAI/4B,EAAgB,CAClB,GAAI07B,EAAQ,IAAKC,KAASpB,EAExB,IADAqB,EAAwBpa,EAAWma,KACN3C,EAAO4C,EAAuBH,GAAM,WACxDG,EAAsBH,EAC/B,CAAE,MAAOv0B,GAAqB,CAEhC,GAAK4yB,EAAW2B,KAAQC,EAKjB,OAHL,IACE,OAAOvC,EAAcW,EAAY2B,EAAKC,EAAS35B,EAAWq4B,GAA6BN,EAAW2B,IAAQ15B,EAC5G,CAAE,MAAOmF,GAAqB,CAElC,CACA,IAAKy0B,KAASpB,IACZqB,EAAwBpa,EAAWma,KACJC,EAAsBH,KAAQC,GAC3DvC,EAAcyC,EAAuBH,EAAK15B,EAlBtB,CAqB1B,EA0DEk5B,yBAA0BA,EAC1BnR,OArIW,SAAgB0F,GAC3B,IAAKoJ,EAASpJ,GAAK,OAAO,EAC1B,IAAI4L,EAAQnC,EAAQzJ,GACpB,MAAiB,aAAV4L,GACFpC,EAAOuB,EAA4Ba,IACnCpC,EAAO8B,EAA6BM,EAC3C,EAgIED,aAAcA,EACdrB,WAAYA,EACZC,oBAAqBA,sCC9LvB,IAAIvY,EAAa,EAAQ,MACrBua,EAAc,EAAQ,MACtBhD,EAAc,EAAQ,MACtBD,EAAsB,EAAQ,MAC9BkD,EAAe,EAAQ,KACvB9C,EAA8B,EAAQ,MACtCE,EAAwB,EAAQ,MAChC6C,EAAiB,EAAQ,MACzBC,EAAQ,EAAQ,MAChBC,EAAa,EAAQ,KACrBC,EAAsB,EAAQ,MAC9BC,EAAW,EAAQ,MACnBC,EAAU,EAAQ,MAClBC,EAAS,EAAQ,MACjBC,EAAU,EAAQ,MAClBv8B,EAAiB,EAAQ,MACzBD,EAAiB,EAAQ,MACzBy8B,EAAY,EAAQ,MACpBC,EAAa,EAAQ,MACrBC,EAAoB,EAAQ,MAC5BC,EAA4B,EAAQ,MACpCC,EAAiB,EAAQ,KACzBvD,EAAsB,EAAQ,MAE9BwD,EAAuBd,EAAae,OACpCC,EAA6BhB,EAAaiB,aAC1CC,EAAe,cACfC,EAAY,WACZC,EAAY,YAEZC,EAAc,cACdC,EAA8BhE,EAAoBiE,UAAUL,GAC5DM,EAA2BlE,EAAoBiE,UAAUJ,GACzDM,EAAmBnE,EAAoB9uB,IACvCkzB,EAAoBlc,EAAW0b,GAC/BS,EAAeD,EACfE,EAAuBD,GAAgBA,EAAaP,GACpDS,EAAYrc,EAAW2b,GACvBW,EAAoBD,GAAaA,EAAUT,GAC3CpD,EAAkBz6B,OAAOM,UACzB4J,EAAQ+X,EAAW/X,MACnB6jB,EAAa9L,EAAW8L,WACxByQ,EAAOhC,EAAYU,GACnB5F,EAAUkF,EAAY,GAAGlF,SAEzBmH,EAAcxB,EAAQyB,KACtBC,EAAgB1B,EAAQ2B,OAExBC,EAAW,SAAUC,GACvB,MAAO,CAAU,IAATA,EACV,EAEIC,EAAY,SAAUD,GACxB,MAAO,CAAU,IAATA,EAAeA,GAAU,EAAI,IACvC,EAEIE,EAAY,SAAUF,GACxB,MAAO,CAAU,IAATA,EAAeA,GAAU,EAAI,IAAMA,GAAU,GAAK,IAAMA,GAAU,GAAK,IACjF,EAEIG,EAAc,SAAUnT,GAC1B,OAAOA,EAAO,IAAM,GAAKA,EAAO,IAAM,GAAKA,EAAO,IAAM,EAAIA,EAAO,EACrE,EAEIoT,EAAc,SAAUJ,GAC1B,OAAOL,EAAYzB,EAAO8B,GAAS,GAAI,EACzC,EAEIK,EAAc,SAAUL,GAC1B,OAAOL,EAAYK,EAAQ,GAAI,EACjC,EAEIM,EAAY,SAAU//B,EAAaa,EAAKg6B,GAC1CL,EAAsBx6B,EAAYw+B,GAAY39B,EAAK,CACjDJ,cAAc,EACdyC,IAAK,WACH,OAAO23B,EAAiBj4B,MAAM/B,EAChC,GAEJ,EAEIqC,GAAM,SAAUqpB,EAAMhJ,EAAO1b,EAAOm4B,GACtC,IAAIC,EAAQrB,EAAyBrS,GACjC2T,EAAWxC,EAAQ71B,GACnBs4B,IAAuBH,EAC3B,GAAIE,EAAW3c,EAAQ0c,EAAMzT,WAAY,MAAM,IAAIkC,EAAW+P,GAC9D,IAAIpQ,EAAQ4R,EAAM5R,MACd+R,EAAQF,EAAWD,EAAMI,WACzBhB,EAAOvB,EAAWzP,EAAO+R,EAAOA,EAAQ7c,GAC5C,OAAO4c,EAAqBd,EAAOpH,EAAQoH,EAC7C,EAEIzzB,GAAM,SAAU2gB,EAAMhJ,EAAO1b,EAAOy4B,EAAY38B,EAAOq8B,GACzD,IAAIC,EAAQrB,EAAyBrS,GACjC2T,EAAWxC,EAAQ71B,GACnBw3B,EAAOiB,GAAY38B,GACnBw8B,IAAuBH,EAC3B,GAAIE,EAAW3c,EAAQ0c,EAAMzT,WAAY,MAAM,IAAIkC,EAAW+P,GAG9D,IAFA,IAAIpQ,EAAQ4R,EAAM5R,MACd+R,EAAQF,EAAWD,EAAMI,WACpBhgC,EAAI,EAAGA,EAAIkjB,EAAOljB,IAAKguB,EAAM+R,EAAQ//B,GAAKg/B,EAAKc,EAAqB9/B,EAAIkjB,EAAQljB,EAAI,EAC/F,EAEA,GAAK65B,EAqGE,CACL,IAAIqG,GAA8BrC,GAAwBY,EAAkBz4B,OAASi4B,EAEhFhB,GAAM,WACTwB,EAAkB,EACpB,KAAOxB,GAAM,WACX,IAAIwB,GAAmB,EACzB,MAAMxB,GAAM,WAIV,OAHA,IAAIwB,EACJ,IAAIA,EAAkB,KACtB,IAAIA,EAAkB0B,KACc,IAA7B1B,EAAkBx+B,QAAgBigC,KAAgCnC,CAC3E,IAYWmC,IAA+BnC,GACxC9D,EAA4BwE,EAAmB,OAAQR,KAXvDS,EAAe,SAAqBz+B,GAElC,OADAi9B,EAAW36B,KAAMo8B,GACVjB,EAAkB,IAAIe,EAAkBpB,EAAQp9B,IAAUsC,KAAMm8B,EACzE,GAEaP,GAAaQ,EAE1BA,EAAqBn8B,YAAck8B,EAEnCf,EAA0Be,EAAcD,IAMtC19B,GAAkBC,EAAe69B,KAAuB9D,GAC1Dh6B,EAAe89B,EAAmB9D,GAIpC,IAAIqF,GAAW,IAAIxB,EAAU,IAAIF,EAAa,IAC1C2B,GAAWvD,EAAY+B,EAAkByB,SAC7CF,GAASE,QAAQ,EAAG,YACpBF,GAASE,QAAQ,EAAG,aAChBF,GAASG,QAAQ,IAAOH,GAASG,QAAQ,IAAIvD,EAAe6B,EAAmB,CACjFyB,QAAS,SAAiBN,EAAY18B,GACpC+8B,GAAS99B,KAAMy9B,EAAY18B,GAAS,IAAM,GAC5C,EACAk9B,SAAU,SAAkBR,EAAY18B,GACtC+8B,GAAS99B,KAAMy9B,EAAY18B,GAAS,IAAM,GAC5C,GACC,CAAEm9B,QAAQ,GACf,MApIE9B,GAdAD,EAAe,SAAqBz+B,GAClCi9B,EAAW36B,KAAMo8B,GACjB,IAAIxS,EAAakR,EAAQp9B,GACzBu+B,EAAiBj8B,KAAM,CACrBiB,KAAMy6B,EACNjQ,MAAO8Q,EAAKt0B,EAAM2hB,GAAa,GAC/BA,WAAYA,IAET2N,IACHv3B,KAAK4pB,WAAaA,EAClB5pB,KAAKm+B,UAAW,EAEpB,GAEoCvC,GAyBpCU,GAvBAD,EAAY,SAAkBxS,EAAQ4T,EAAY7T,GAChD+Q,EAAW36B,KAAMs8B,GACjB3B,EAAW9Q,EAAQuS,GACnB,IAAIgC,EAActC,EAA4BjS,GAC1CwU,EAAeD,EAAYxU,WAC3BkG,EAAS8K,EAAoB6C,GACjC,GAAI3N,EAAS,GAAKA,EAASuO,EAAc,MAAM,IAAIvS,EAAW,gBAE9D,GAAIgE,GADJlG,OAA4BjnB,IAAfinB,EAA2ByU,EAAevO,EAAS+K,EAASjR,IAC/CyU,EAAc,MAAM,IAAIvS,EAnGnC,gBAoGfmQ,EAAiBj8B,KAAM,CACrBiB,KAAM06B,EACN9R,OAAQA,EACRD,WAAYA,EACZ6T,WAAY3N,EACZrE,MAAO2S,EAAY3S,QAEhB8L,IACHv3B,KAAK6pB,OAASA,EACd7pB,KAAK4pB,WAAaA,EAClB5pB,KAAKy9B,WAAa3N,EAEtB,GAE8B8L,GAE1BrE,IACF4F,EAAUhB,EAAc,aAAcL,GACtCqB,EAAUd,EAAW,SAAUL,GAC/BmB,EAAUd,EAAW,aAAcL,GACnCmB,EAAUd,EAAW,aAAcL,IAGrCvB,EAAe6B,EAAmB,CAChC0B,QAAS,SAAiBP,GACxB,OAAOn9B,GAAIN,KAAM,EAAGy9B,GAAY,IAAM,IAAM,EAC9C,EACAa,SAAU,SAAkBb,GAC1B,OAAOn9B,GAAIN,KAAM,EAAGy9B,GAAY,EAClC,EACAc,SAAU,SAAkBd,GAC1B,IAAIhS,EAAQnrB,GAAIN,KAAM,EAAGy9B,EAAYv9B,UAAUxC,OAAS,GAAIwC,UAAU,IACtE,OAAQurB,EAAM,IAAM,EAAIA,EAAM,KAAO,IAAM,EAC7C,EACA+S,UAAW,SAAmBf,GAC5B,IAAIhS,EAAQnrB,GAAIN,KAAM,EAAGy9B,EAAYv9B,UAAUxC,OAAS,GAAIwC,UAAU,IACtE,OAAOurB,EAAM,IAAM,EAAIA,EAAM,EAC/B,EACAgT,SAAU,SAAkBhB,GAC1B,OAAOT,EAAY18B,GAAIN,KAAM,EAAGy9B,EAAYv9B,UAAUxC,OAAS,GAAIwC,UAAU,IAC/E,EACAw+B,UAAW,SAAmBjB,GAC5B,OAAOT,EAAY18B,GAAIN,KAAM,EAAGy9B,EAAYv9B,UAAUxC,OAAS,GAAIwC,UAAU,OAAiB,CAChG,EACAy+B,WAAY,SAAoBlB,GAC9B,OAAOf,EAAcp8B,GAAIN,KAAM,EAAGy9B,EAAYv9B,UAAUxC,OAAS,GAAIwC,UAAU,IAAa,GAC9F,EACA0+B,WAAY,SAAoBnB,GAC9B,OAAOf,EAAcp8B,GAAIN,KAAM,EAAGy9B,EAAYv9B,UAAUxC,OAAS,GAAIwC,UAAU,IAAa,GAC9F,EACA69B,QAAS,SAAiBN,EAAY18B,GACpCiI,GAAIhJ,KAAM,EAAGy9B,EAAYb,EAAU77B,EACrC,EACAk9B,SAAU,SAAkBR,EAAY18B,GACtCiI,GAAIhJ,KAAM,EAAGy9B,EAAYb,EAAU77B,EACrC,EACA89B,SAAU,SAAkBpB,EAAY18B,GACtCiI,GAAIhJ,KAAM,EAAGy9B,EAAYX,EAAW/7B,EAAOb,UAAUxC,OAAS,GAAIwC,UAAU,GAC9E,EACA4+B,UAAW,SAAmBrB,EAAY18B,GACxCiI,GAAIhJ,KAAM,EAAGy9B,EAAYX,EAAW/7B,EAAOb,UAAUxC,OAAS,GAAIwC,UAAU,GAC9E,EACA6+B,SAAU,SAAkBtB,EAAY18B,GACtCiI,GAAIhJ,KAAM,EAAGy9B,EAAYV,EAAWh8B,EAAOb,UAAUxC,OAAS,GAAIwC,UAAU,GAC9E,EACA8+B,UAAW,SAAmBvB,EAAY18B,GACxCiI,GAAIhJ,KAAM,EAAGy9B,EAAYV,EAAWh8B,EAAOb,UAAUxC,OAAS,GAAIwC,UAAU,GAC9E,EACA++B,WAAY,SAAoBxB,EAAY18B,GAC1CiI,GAAIhJ,KAAM,EAAGy9B,EAAYR,EAAal8B,EAAOb,UAAUxC,OAAS,GAAIwC,UAAU,GAChF,EACAg/B,WAAY,SAAoBzB,EAAY18B,GAC1CiI,GAAIhJ,KAAM,EAAGy9B,EAAYP,EAAan8B,EAAOb,UAAUxC,OAAS,GAAIwC,UAAU,GAChF,IAkDJm7B,EAAec,EAAcT,GAC7BL,EAAegB,EAAWV,GAE1B/2B,EAAOL,QAAU,CACf8jB,YAAa8T,EACb5R,SAAU8R,sCCjQZ,IAAI8C,EAAW,EAAQ,MACnBC,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,MAC5BC,EAAwB,EAAQ,MAEhCC,EAAM90B,KAAK80B,IAKf36B,EAAOL,QAAU,GAAGi7B,YAAc,SAAoBjiC,EAAkBigC,GACtE,IAAIiC,EAAIN,EAASn/B,MACbkK,EAAMm1B,EAAkBI,GACxBvlB,EAAKklB,EAAgB7hC,EAAQ2M,GAC7BkV,EAAOggB,EAAgB5B,EAAOtzB,GAC9Bw1B,EAAMx/B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAC5Cge,EAAQ4e,QAAa58B,IAAR+8B,EAAoBx1B,EAAMk1B,EAAgBM,EAAKx1B,IAAQkV,EAAMlV,EAAMgQ,GAChFylB,EAAM,EAMV,IALIvgB,EAAOlF,GAAMA,EAAKkF,EAAOuB,IAC3Bgf,GAAO,EACPvgB,GAAQuB,EAAQ,EAChBzG,GAAMyG,EAAQ,GAETA,KAAU,GACXvB,KAAQqgB,EAAGA,EAAEvlB,GAAMulB,EAAErgB,GACpBkgB,EAAsBG,EAAGvlB,GAC9BA,GAAMylB,EACNvgB,GAAQugB,EACR,OAAOF,CACX,qCC7BA,IAAIN,EAAW,EAAQ,MACnBC,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,MAIhCz6B,EAAOL,QAAU,SAAcxD,GAO7B,IANA,IAAI0+B,EAAIN,EAASn/B,MACbtC,EAAS2hC,EAAkBI,GAC3BG,EAAkB1/B,UAAUxC,OAC5BuH,EAAQm6B,EAAgBQ,EAAkB,EAAI1/B,UAAU,QAAKyC,EAAWjF,GACxEgiC,EAAME,EAAkB,EAAI1/B,UAAU,QAAKyC,EAC3Ck9B,OAAiBl9B,IAAR+8B,EAAoBhiC,EAAS0hC,EAAgBM,EAAKhiC,GACxDmiC,EAAS56B,GAAOw6B,EAAEx6B,KAAWlE,EACpC,OAAO0+B,CACT,oCCfA,IAAIK,EAAW,gBAGXC,EAFsB,EAAQ,KAEdC,CAAoB,WAIxCp7B,EAAOL,QAAWw7B,EAGd,GAAGz1B,QAH2B,SAAiB21B,GACjD,OAAOH,EAAS9/B,KAAMigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAE1E,qCCVA,IAAI08B,EAAoB,EAAQ,MAEhCz6B,EAAOL,QAAU,SAAUnH,EAAa8iC,EAAMC,GAI5C,IAHA,IAAIl7B,EAAQ,EACRvH,EAASwC,UAAUxC,OAAS,EAAIyiC,EAAUd,EAAkBa,GAC5DrgC,EAAS,IAAIzC,EAAYM,GACtBA,EAASuH,GAAOpF,EAAOoF,GAASi7B,EAAKj7B,KAC5C,OAAOpF,CACT,qCCRA,IAAInB,EAAO,EAAQ,MACfgB,EAAO,EAAQ,MACfy/B,EAAW,EAAQ,MACnBiB,EAA+B,EAAQ,MACvCC,EAAwB,EAAQ,MAChC1J,EAAgB,EAAQ,MACxB0I,EAAoB,EAAQ,MAC5BiB,EAAiB,EAAQ,MACzBC,EAAc,EAAQ,IACtBC,EAAoB,EAAQ,KAE5BC,EAASx4B,MAIbrD,EAAOL,QAAU,SAAcm8B,GAC7B,IAAIjB,EAAIN,EAASuB,GACbC,EAAiBhK,EAAc32B,MAC/B4/B,EAAkB1/B,UAAUxC,OAC5BkjC,EAAQhB,EAAkB,EAAI1/B,UAAU,QAAKyC,EAC7Ck+B,OAAoBl+B,IAAVi+B,EACVC,IAASD,EAAQliC,EAAKkiC,EAAOhB,EAAkB,EAAI1/B,UAAU,QAAKyC,IACtE,IAEIjF,EAAQmC,EAAQihC,EAAMnY,EAAU7c,EAAM/K,EAFtCggC,EAAiBP,EAAkBf,GACnCx6B,EAAQ,EAGZ,IAAI87B,GAAoB/gC,OAASygC,GAAUJ,EAAsBU,GAW/D,IAFArjC,EAAS2hC,EAAkBI,GAC3B5/B,EAAS8gC,EAAiB,IAAI3gC,KAAKtC,GAAU+iC,EAAO/iC,GAC9CA,EAASuH,EAAOA,IACpBlE,EAAQ8/B,EAAUD,EAAMnB,EAAEx6B,GAAQA,GAASw6B,EAAEx6B,GAC7Cq7B,EAAezgC,EAAQoF,EAAOlE,QAThC,IAHAlB,EAAS8gC,EAAiB,IAAI3gC,KAAS,GAEvC8L,GADA6c,EAAW4X,EAAYd,EAAGsB,IACVj1B,OACRg1B,EAAOphC,EAAKoM,EAAM6c,IAAWC,KAAM3jB,IACzClE,EAAQ8/B,EAAUT,EAA6BzX,EAAUiY,EAAO,CAACE,EAAK//B,MAAOkE,IAAQ,GAAQ67B,EAAK//B,MAClGu/B,EAAezgC,EAAQoF,EAAOlE,GAWlC,OADAlB,EAAOnC,OAASuH,EACTpF,CACT,qCC5CA,IAAImhC,EAAkB,EAAQ,MAC1B5B,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,MAG5B4B,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOC,EAAIC,GAC1B,IAAI5B,EAAIuB,EAAgBG,GACpBzjC,EAAS2hC,EAAkBI,GAC/B,GAAe,IAAX/hC,EAAc,OAAQwjC,IAAgB,EAC1C,IACIngC,EADAkE,EAAQm6B,EAAgBiC,EAAW3jC,GAIvC,GAAIwjC,GAAeE,GAAOA,GAAI,KAAO1jC,EAASuH,GAG5C,IAFAlE,EAAQ0+B,EAAEx6B,OAEIlE,EAAO,OAAO,OAEvB,KAAMrD,EAASuH,EAAOA,IAC3B,IAAKi8B,GAAej8B,KAASw6B,IAAMA,EAAEx6B,KAAWm8B,EAAI,OAAOF,GAAej8B,GAAS,EACnF,OAAQi8B,IAAgB,CAC5B,CACF,EAEAt8B,EAAOL,QAAU,CAGfsd,SAAUof,GAAa,GAGvBx0B,QAASw0B,GAAa,uCC/BxB,IAAIviC,EAAO,EAAQ,MACf67B,EAAc,EAAQ,MACtB+G,EAAgB,EAAQ,MACxBnC,EAAW,EAAQ,MACnBE,EAAoB,EAAQ,MAC5BkC,EAAqB,EAAQ,MAE7BlgC,EAAOk5B,EAAY,GAAGl5B,MAGtB4/B,EAAe,SAAUO,GAC3B,IAAIC,EAAkB,IAATD,EACTE,EAAqB,IAATF,EACZG,EAAmB,IAATH,EACVI,EAAoB,IAATJ,EACXK,EAAyB,IAATL,EAChBM,EAA4B,IAATN,EACnBO,EAAoB,IAATP,GAAcK,EAC7B,OAAO,SAAUV,EAAOlB,EAAY+B,EAAMC,GASxC,IARA,IAOIlhC,EAAOlB,EAPP4/B,EAAIN,EAASgC,GACbpiC,EAAOuiC,EAAc7B,GACrB/hC,EAAS2hC,EAAkBtgC,GAC3BmjC,EAAgBxjC,EAAKuhC,EAAY+B,GACjC/8B,EAAQ,EACR1C,EAAS0/B,GAAkBV,EAC3BhkC,EAASkkC,EAASl/B,EAAO4+B,EAAOzjC,GAAUgkC,GAAaI,EAAmBv/B,EAAO4+B,EAAO,QAAKx+B,EAE3FjF,EAASuH,EAAOA,IAAS,IAAI88B,GAAY98B,KAASlG,KAEtDc,EAASqiC,EADTnhC,EAAQhC,EAAKkG,GACiBA,EAAOw6B,GACjC+B,GACF,GAAIC,EAAQlkC,EAAO0H,GAASpF,OACvB,GAAIA,EAAQ,OAAQ2hC,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOzgC,EACf,KAAK,EAAG,OAAOkE,EACf,KAAK,EAAG5D,EAAK9D,EAAQwD,QAChB,OAAQygC,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAGngC,EAAK9D,EAAQwD,GAI3B,OAAO8gC,GAAiB,EAAIF,GAAWC,EAAWA,EAAWrkC,CAC/D,CACF,EAEAqH,EAAOL,QAAU,CAGf+F,QAAS22B,EAAa,GAGtBp3B,IAAKo3B,EAAa,GAGlBhzB,OAAQgzB,EAAa,GAGrBkB,KAAMlB,EAAa,GAGnBmB,MAAOnB,EAAa,GAGpB5qB,KAAM4qB,EAAa,GAGnBoB,UAAWpB,EAAa,GAGxBqB,aAAcrB,EAAa,uCCtE7B,IAAI9gC,EAAQ,EAAQ,MAChB6gC,EAAkB,EAAQ,MAC1BpG,EAAsB,EAAQ,MAC9ByE,EAAoB,EAAQ,MAC5BW,EAAsB,EAAQ,MAE9BT,EAAM90B,KAAK80B,IACXgD,EAAe,GAAGC,YAClBC,IAAkBF,GAAgB,EAAI,CAAC,GAAGC,YAAY,GAAI,GAAK,EAC/DzC,EAAgBC,EAAoB,eACpC0C,EAASD,IAAkB1C,EAI/Bn7B,EAAOL,QAAUm+B,EAAS,SAAqBC,GAE7C,GAAIF,EAAe,OAAOtiC,EAAMoiC,EAAcviC,KAAME,YAAc,EAClE,IAAIu/B,EAAIuB,EAAgBhhC,MACpBtC,EAAS2hC,EAAkBI,GAC/B,GAAe,IAAX/hC,EAAc,OAAQ,EAC1B,IAAIuH,EAAQvH,EAAS,EAGrB,IAFIwC,UAAUxC,OAAS,IAAGuH,EAAQs6B,EAAIt6B,EAAO21B,EAAoB16B,UAAU,MACvE+E,EAAQ,IAAGA,EAAQvH,EAASuH,GAC1BA,GAAS,EAAGA,IAAS,GAAIA,KAASw6B,GAAKA,EAAEx6B,KAAW09B,EAAe,OAAO19B,GAAS,EACzF,OAAQ,CACV,EAAIs9B,oCC1BJ,IAAI7H,EAAQ,EAAQ,MAChB5D,EAAkB,EAAQ,MAC1B8L,EAAa,EAAQ,MAErBC,EAAU/L,EAAgB,WAE9BlyB,EAAOL,QAAU,SAAUu+B,GAIzB,OAAOF,GAAc,KAAOlI,GAAM,WAChC,IAAIqI,EAAQ,GAKZ,OAJkBA,EAAM9iC,YAAc,CAAC,GAC3B4iC,GAAW,WACrB,MAAO,CAAEG,IAAK,EAChB,EAC2C,IAApCD,EAAMD,GAAatjC,SAASwjC,GACrC,GACF,qCClBA,IAAItI,EAAQ,EAAQ,MAEpB91B,EAAOL,QAAU,SAAUu+B,EAAapM,GACtC,IAAIrjB,EAAS,GAAGyvB,GAChB,QAASzvB,GAAUqnB,GAAM,WAEvBrnB,EAAO3T,KAAK,KAAMg3B,GAAY,WAAc,OAAO,CAAG,EAAG,EAC3D,GACF,oCCRA,IAAIuM,EAAY,EAAQ,MACpB9D,EAAW,EAAQ,MACnBmC,EAAgB,EAAQ,MACxBjC,EAAoB,EAAQ,MAE5B5I,EAAap5B,UAEb6lC,EAAe,8CAGfjC,EAAe,SAAUkC,GAC3B,OAAO,SAAUnB,EAAM/B,EAAYL,EAAiBwD,GAClD,IAAI3D,EAAIN,EAAS6C,GACbjjC,EAAOuiC,EAAc7B,GACrB/hC,EAAS2hC,EAAkBI,GAE/B,GADAwD,EAAUhD,GACK,IAAXviC,GAAgBkiC,EAAkB,EAAG,MAAM,IAAInJ,EAAWyM,GAC9D,IAAIj+B,EAAQk+B,EAAWzlC,EAAS,EAAI,EAChCD,EAAI0lC,GAAY,EAAI,EACxB,GAAIvD,EAAkB,EAAG,OAAa,CACpC,GAAI36B,KAASlG,EAAM,CACjBqkC,EAAOrkC,EAAKkG,GACZA,GAASxH,EACT,KACF,CAEA,GADAwH,GAASxH,EACL0lC,EAAWl+B,EAAQ,EAAIvH,GAAUuH,EACnC,MAAM,IAAIwxB,EAAWyM,EAEzB,CACA,KAAMC,EAAWl+B,GAAS,EAAIvH,EAASuH,EAAOA,GAASxH,EAAOwH,KAASlG,IACrEqkC,EAAOnD,EAAWmD,EAAMrkC,EAAKkG,GAAQA,EAAOw6B,IAE9C,OAAO2D,CACT,CACF,EAEAx+B,EAAOL,QAAU,CAGf8+B,KAAMpC,GAAa,GAGnBqC,MAAOrC,GAAa,uCC3CtB,IAAI1J,EAAc,EAAQ,MACtB1oB,EAAU,EAAQ,MAElB4nB,EAAap5B,UAEbyD,EAA2B/C,OAAO+C,yBAGlCyiC,EAAoChM,IAAgB,WAEtD,QAAa50B,IAAT3C,KAAoB,OAAO,EAC/B,IAEEjC,OAAOC,eAAe,GAAI,SAAU,CAAEF,UAAU,IAASJ,OAAS,CACpE,CAAE,MAAOgI,GACP,OAAOA,aAAiBrI,SAC1B,CACF,CATwD,GAWxDuH,EAAOL,QAAUg/B,EAAoC,SAAU9D,EAAG/hC,GAChE,GAAImR,EAAQ4wB,KAAO3+B,EAAyB2+B,EAAG,UAAU3hC,SACvD,MAAM,IAAI24B,EAAW,gCACrB,OAAOgJ,EAAE/hC,OAASA,CACtB,EAAI,SAAU+hC,EAAG/hC,GACf,OAAO+hC,EAAE/hC,OAASA,CACpB,qCCzBA,IAAI68B,EAAc,EAAQ,MAE1B31B,EAAOL,QAAUg2B,EAAY,GAAG54B,0CCFhC,IAAIu5B,EAAa,EAAQ,MAErBjc,EAAQxU,KAAKwU,MAEb1Q,EAAO,SAAUw0B,EAAOS,GAC1B,IAAI9lC,EAASqlC,EAAMrlC,OAEnB,GAAIA,EAAS,EAKX,IAHA,IACI+lC,EAASn8B,EADT7J,EAAI,EAGDA,EAAIC,GAAQ,CAGjB,IAFA4J,EAAI7J,EACJgmC,EAAUV,EAAMtlC,GACT6J,GAAKk8B,EAAUT,EAAMz7B,EAAI,GAAIm8B,GAAW,GAC7CV,EAAMz7B,GAAKy7B,IAAQz7B,GAEjBA,IAAM7J,MAAKslC,EAAMz7B,GAAKm8B,EAC5B,MAWA,IARA,IAAIC,EAASzkB,EAAMvhB,EAAS,GACxB2lC,EAAO90B,EAAK2sB,EAAW6H,EAAO,EAAGW,GAASF,GAC1CF,EAAQ/0B,EAAK2sB,EAAW6H,EAAOW,GAASF,GACxCG,EAAUN,EAAK3lC,OACfkmC,EAAUN,EAAM5lC,OAChBmmC,EAAS,EACTC,EAAS,EAEND,EAASF,GAAWG,EAASF,GAClCb,EAAMc,EAASC,GAAWD,EAASF,GAAWG,EAASF,EACnDJ,EAAUH,EAAKQ,GAASP,EAAMQ,KAAY,EAAIT,EAAKQ,KAAYP,EAAMQ,KACrED,EAASF,EAAUN,EAAKQ,KAAYP,EAAMQ,KAIlD,OAAOf,CACT,EAEAn+B,EAAOL,QAAUgK,qCCxCjB,IAAIM,EAAU,EAAQ,MAClB8nB,EAAgB,EAAQ,MACxBS,EAAW,EAAQ,IAGnByL,EAFkB,EAAQ,KAEhB/L,CAAgB,WAC1B2J,EAASx4B,MAIbrD,EAAOL,QAAU,SAAUw/B,GACzB,IAAIhK,EASF,OARElrB,EAAQk1B,KACVhK,EAAIgK,EAAc9jC,aAEd02B,EAAcoD,KAAOA,IAAM0G,GAAU5xB,EAAQkrB,EAAE17B,aAC1C+4B,EAAS2C,IAEN,QADVA,EAAIA,EAAE8I,OAFwD9I,OAAIp3B,SAKvDA,IAANo3B,EAAkB0G,EAAS1G,CACtC,qCCrBA,IAAIiK,EAA0B,EAAQ,MAItCp/B,EAAOL,QAAU,SAAUw/B,EAAermC,GACxC,OAAO,IAAKsmC,EAAwBD,GAA7B,CAAwD,IAAXrmC,EAAe,EAAIA,EACzE,qCCNA,IAAIumC,EAAW,EAAQ,MACnBC,EAAgB,EAAQ,MAG5Bt/B,EAAOL,QAAU,SAAUokB,EAAUwb,EAAIpjC,EAAOqjC,GAC9C,IACE,OAAOA,EAAUD,EAAGF,EAASljC,GAAO,GAAIA,EAAM,IAAMojC,EAAGpjC,EACzD,CAAE,MAAO2E,GACPw+B,EAAcvb,EAAU,QAASjjB,EACnC,CACF,qCCVA,IAEI2+B,EAFkB,EAAQ,KAEfvN,CAAgB,YAC3BwN,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvB14B,KAAM,WACJ,MAAO,CAAE8c,OAAQ2b,IACnB,EACA,OAAU,WACRD,GAAe,CACjB,GAEFE,EAAmBH,GAAY,WAC7B,OAAOrkC,IACT,EAEAiI,MAAMmX,KAAKolB,GAAoB,WAAc,MAAM,CAAG,GACxD,CAAE,MAAO9+B,GAAqB,CAE9Bd,EAAOL,QAAU,SAAUwtB,EAAM0S,GAC/B,IACE,IAAKA,IAAiBH,EAAc,OAAO,CAC7C,CAAE,MAAO5+B,GAAS,OAAO,CAAO,CAChC,IAAIg/B,GAAoB,EACxB,IACE,IAAIhkC,EAAS,CAAC,EACdA,EAAO2jC,GAAY,WACjB,MAAO,CACLv4B,KAAM,WACJ,MAAO,CAAE8c,KAAM8b,GAAoB,EACrC,EAEJ,EACA3S,EAAKrxB,EACP,CAAE,MAAOgF,GAAqB,CAC9B,OAAOg/B,CACT,qCCvCA,IAAInK,EAAc,EAAQ,MAEtBjxB,EAAWixB,EAAY,CAAC,EAAEjxB,UAC1Bq7B,EAAcpK,EAAY,GAAG54B,OAEjCiD,EAAOL,QAAU,SAAUypB,GACzB,OAAO2W,EAAYr7B,EAAS0kB,GAAK,GAAI,EACvC,qCCPA,IAAI4W,EAAwB,EAAQ,MAChCrO,EAAa,EAAQ,MACrBsO,EAAa,EAAQ,MAGrBpM,EAFkB,EAAQ,KAEV3B,CAAgB,eAChCgO,EAAU/mC,OAGVgnC,EAAwE,cAApDF,EAAW,WAAc,OAAO3kC,SAAW,CAAhC,IAUnC0E,EAAOL,QAAUqgC,EAAwBC,EAAa,SAAU7W,GAC9D,IAAIyR,EAAGuF,EAAKnlC,EACZ,YAAc8C,IAAPqrB,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjDgX,EAXD,SAAUhX,EAAI/vB,GACzB,IACE,OAAO+vB,EAAG/vB,EACZ,CAAE,MAAOyH,GAAqB,CAChC,CAOoBu/B,CAAOxF,EAAIqF,EAAQ9W,GAAKyK,IAA8BuM,EAEpED,EAAoBF,EAAWpF,GAEF,YAA5B5/B,EAASglC,EAAWpF,KAAoBlJ,EAAWkJ,EAAEyF,QAAU,YAAcrlC,CACpF,qCC5BA,IAAI23B,EAAS,EAAQ,MACjBhc,EAAU,EAAQ,MAClB2pB,EAAiC,EAAQ,MACzCC,EAAuB,EAAQ,MAEnCxgC,EAAOL,QAAU,SAAUhH,EAAQ8nC,EAAQC,GAIzC,IAHA,IAAIj7B,EAAOmR,EAAQ6pB,GACfrnC,EAAiBonC,EAAqB7R,EACtCzyB,EAA2BqkC,EAA+B5R,EACrD91B,EAAI,EAAGA,EAAI4M,EAAK3M,OAAQD,IAAK,CACpC,IAAIQ,EAAMoM,EAAK5M,GACV+5B,EAAOj6B,EAAQU,IAAUqnC,GAAc9N,EAAO8N,EAAYrnC,IAC7DD,EAAeT,EAAQU,EAAK6C,EAAyBukC,EAAQpnC,GAEjE,CACF,qCCfA,IAEIsnC,EAFkB,EAAQ,KAElBzO,CAAgB,SAE5BlyB,EAAOL,QAAU,SAAUu+B,GACzB,IAAIz5B,EAAS,IACb,IACE,MAAMy5B,GAAaz5B,EACrB,CAAE,MAAOm8B,GACP,IAEE,OADAn8B,EAAOk8B,IAAS,EACT,MAAMzC,GAAaz5B,EAC5B,CAAE,MAAOgxB,GAAsB,CACjC,CAAE,OAAO,CACX,qCCdA,IAAIK,EAAQ,EAAQ,MAEpB91B,EAAOL,SAAWm2B,GAAM,WACtB,SAAS1S,IAAkB,CAG3B,OAFAA,EAAE3pB,UAAU4B,YAAc,KAEnBlC,OAAOU,eAAe,IAAIupB,KAASA,EAAE3pB,SAC9C,uCCPA,IAAIk8B,EAAc,EAAQ,MACtBkL,EAAyB,EAAQ,MACjCn8B,EAAW,EAAQ,KAEnBo8B,EAAO,KACPvgC,EAAUo1B,EAAY,GAAGp1B,SAI7BP,EAAOL,QAAU,SAAUohC,EAAQX,EAAKY,EAAW7kC,GACjD,IAAIk2B,EAAI3tB,EAASm8B,EAAuBE,IACpCE,EAAK,IAAMb,EAEf,MADkB,KAAdY,IAAkBC,GAAM,IAAMD,EAAY,KAAOzgC,EAAQmE,EAASvI,GAAQ2kC,EAAM,UAAY,KACzFG,EAAK,IAAM5O,EAAI,KAAO+N,EAAM,GACrC,iCCZApgC,EAAOL,QAAU,SAAUxD,EAAO6nB,GAChC,MAAO,CAAE7nB,MAAOA,EAAO6nB,KAAMA,EAC/B,qCCJA,IAAI2O,EAAc,EAAQ,MACtB6N,EAAuB,EAAQ,MAC/BU,EAA2B,EAAQ,MAEvClhC,EAAOL,QAAUgzB,EAAc,SAAU72B,EAAQzC,EAAK8C,GACpD,OAAOqkC,EAAqB7R,EAAE7yB,EAAQzC,EAAK6nC,EAAyB,EAAG/kC,GACzE,EAAI,SAAUL,EAAQzC,EAAK8C,GAEzB,OADAL,EAAOzC,GAAO8C,EACPL,CACT,iCCTAkE,EAAOL,QAAU,SAAUwhC,EAAQhlC,GACjC,MAAO,CACLnD,aAAuB,EAATmoC,GACdloC,eAAyB,EAATkoC,GAChBjoC,WAAqB,EAATioC,GACZhlC,MAAOA,EAEX,qCCPA,IAAIw2B,EAAc,EAAQ,MACtB6N,EAAuB,EAAQ,MAC/BU,EAA2B,EAAQ,MAEvClhC,EAAOL,QAAU,SAAU7D,EAAQzC,EAAK8C,GAClCw2B,EAAa6N,EAAqB7R,EAAE7yB,EAAQzC,EAAK6nC,EAAyB,EAAG/kC,IAC5EL,EAAOzC,GAAO8C,CACrB,qCCPA,IAAIilC,EAAc,EAAQ,KACtBhoC,EAAiB,EAAQ,MAE7B4G,EAAOL,QAAU,SAAUhH,EAAQkG,EAAM9F,GAGvC,OAFIA,EAAW2C,KAAK0lC,EAAYroC,EAAW2C,IAAKmD,EAAM,CAAEwiC,QAAQ,IAC5DtoC,EAAWqL,KAAKg9B,EAAYroC,EAAWqL,IAAKvF,EAAM,CAAEyiC,QAAQ,IACzDloC,EAAeu1B,EAAEh2B,EAAQkG,EAAM9F,EACxC,qCCPA,IAAI44B,EAAa,EAAQ,MACrB6O,EAAuB,EAAQ,MAC/BY,EAAc,EAAQ,KACtBG,EAAuB,EAAQ,MAEnCvhC,EAAOL,QAAU,SAAUk7B,EAAGxhC,EAAK8C,EAAOI,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAIilC,EAASjlC,EAAQvD,WACjB6F,OAAwBd,IAAjBxB,EAAQsC,KAAqBtC,EAAQsC,KAAOxF,EAEvD,GADIs4B,EAAWx1B,IAAQilC,EAAYjlC,EAAO0C,EAAMtC,GAC5CA,EAAQ2mB,OACNse,EAAQ3G,EAAExhC,GAAO8C,EAChBolC,EAAqBloC,EAAK8C,OAC1B,CACL,IACOI,EAAQ+8B,OACJuB,EAAExhC,KAAMmoC,GAAS,UADE3G,EAAExhC,EAEhC,CAAE,MAAOyH,GAAqB,CAC1B0gC,EAAQ3G,EAAExhC,GAAO8C,EAChBqkC,EAAqB7R,EAAEkM,EAAGxhC,EAAK,CAClC8C,MAAOA,EACPnD,YAAY,EACZC,cAAesD,EAAQklC,gBACvBvoC,UAAWqD,EAAQmlC,aAEvB,CAAE,OAAO7G,CACX,qCC1BA,IAAI9H,EAAgB,EAAQ,MAE5B/yB,EAAOL,QAAU,SAAUhH,EAAQ2wB,EAAK/sB,GACtC,IAAK,IAAIlD,KAAOiwB,EAAKyJ,EAAcp6B,EAAQU,EAAKiwB,EAAIjwB,GAAMkD,GAC1D,OAAO5D,CACT,qCCLA,IAAIyiB,EAAa,EAAQ,MAGrBhiB,EAAiBD,OAAOC,eAE5B4G,EAAOL,QAAU,SAAUtG,EAAK8C,GAC9B,IACE/C,EAAegiB,EAAY/hB,EAAK,CAAE8C,MAAOA,EAAOlD,cAAc,EAAMC,UAAU,GAChF,CAAE,MAAO4H,GACPsa,EAAW/hB,GAAO8C,CACpB,CAAE,OAAOA,CACX,qCCXA,IAAIy1B,EAAc,EAAQ,MAEtBC,EAAap5B,UAEjBuH,EAAOL,QAAU,SAAUk7B,EAAG8G,GAC5B,WAAY9G,EAAE8G,GAAI,MAAM,IAAI9P,EAAW,0BAA4BD,EAAY+P,GAAK,OAAS/P,EAAYiJ,GAC3G,qCCNA,IAAI/E,EAAQ,EAAQ,MAGpB91B,EAAOL,SAAWm2B,GAAM,WAEtB,OAA+E,IAAxE38B,OAAOC,eAAe,CAAC,EAAG,EAAG,CAAEsC,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,uCCNA,IAAI0f,EAAa,EAAQ,MACrBoX,EAAW,EAAQ,IAEnBn0B,EAAW+c,EAAW/c,SAEtBujC,EAASpP,EAASn0B,IAAam0B,EAASn0B,EAASwjC,eAErD7hC,EAAOL,QAAU,SAAUypB,GACzB,OAAOwY,EAASvjC,EAASwjC,cAAczY,GAAM,CAAC,CAChD,iCCTA,IAAIyI,EAAap5B,UAGjBuH,EAAOL,QAAU,SAAUypB,GACzB,GAAIA,EAHiB,iBAGM,MAAMyI,EAAW,kCAC5C,OAAOzI,CACT,iCCJAppB,EAAOL,QAAU,CACfmiC,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,sCChCb,IAEIC,EAFwB,EAAQ,KAEpBC,CAAsB,QAAQD,UAC1CE,EAAwBF,GAAaA,EAAUxoC,aAAewoC,EAAUxoC,YAAY5B,UAExFuG,EAAOL,QAAUokC,IAA0B5qC,OAAOM,eAAYsE,EAAYgmC,iCCL1E/jC,EAAOL,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,8CCRF,IAEIqkC,EAFY,EAAQ,MAEAxjC,MAAM,mBAE9BR,EAAOL,UAAYqkC,IAAYA,EAAQ,sCCJvC,IAAIC,EAAK,EAAQ,MAEjBjkC,EAAOL,QAAU,eAAe6F,KAAKy+B,sCCFrC,IAAIziC,EAAY,EAAQ,MAExBxB,EAAOL,QAAU,oBAAoB6F,KAAKhE,IAA+B,oBAAV0iC,0CCF/D,IAAI1iC,EAAY,EAAQ,MAGxBxB,EAAOL,QAAU,qCAAqC6F,KAAKhE,sCCH3D,IAAI2iC,EAAc,EAAQ,MAE1BnkC,EAAOL,QAA0B,SAAhBwkC,qCCFjB,IAAI3iC,EAAY,EAAQ,MAExBxB,EAAOL,QAAU,qBAAqB6F,KAAKhE,sCCF3C,IAEID,EAFa,EAAQ,MAEEA,UACvBC,EAAYD,GAAaA,EAAUC,UAEvCxB,EAAOL,QAAU6B,EAAY+H,OAAO/H,GAAa,sCCLjD,IAOIhB,EAAOgoB,EAPPpN,EAAa,EAAQ,MACrB5Z,EAAY,EAAQ,MAEpBN,EAAUka,EAAWla,QACrBkjC,EAAOhpB,EAAWgpB,KAClBC,EAAWnjC,GAAWA,EAAQmjC,UAAYD,GAAQA,EAAK5b,QACvD8b,EAAKD,GAAYA,EAASC,GAG1BA,IAIF9b,GAHAhoB,EAAQ8jC,EAAGj/B,MAAM,MAGD,GAAK,GAAK7E,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DgoB,GAAWhnB,MACdhB,EAAQgB,EAAUhB,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQgB,EAAUhB,MAAM,oBACbgoB,GAAWhoB,EAAM,IAIhCR,EAAOL,QAAU6oB,qCC1BjB,IAEI+b,EAFY,EAAQ,MAED/jC,MAAM,wBAE7BR,EAAOL,UAAY4kC,IAAWA,EAAO,sCCHrC,IAAInpB,EAAa,EAAQ,MACrB5Z,EAAY,EAAQ,MACpBqxB,EAAU,EAAQ,MAElB2R,EAAsB,SAAUzD,GAClC,OAAOv/B,EAAUzE,MAAM,EAAGgkC,EAAOjoC,UAAYioC,CAC/C,EAEA/gC,EAAOL,QACD6kC,EAAoB,QAAgB,MACpCA,EAAoB,sBAA8B,aAClDA,EAAoB,SAAiB,OACrCA,EAAoB,YAAoB,OACxCppB,EAAWqpB,KAA6B,iBAAfA,IAAIjc,QAA4B,MACzDpN,EAAWgpB,MAA+B,iBAAhBA,KAAK5b,QAA4B,OAC3B,YAAhCqK,EAAQzX,EAAWla,SAA+B,OAClDka,EAAW/Z,QAAU+Z,EAAW/c,SAAiB,UAC9C,0CClBT,IAAI+c,EAAa,EAAQ,MACrBlf,EAA2B,UAC3B42B,EAA8B,EAAQ,MACtCC,EAAgB,EAAQ,MACxBwO,EAAuB,EAAQ,MAC/B/K,EAA4B,EAAQ,MACpCkO,EAAW,EAAQ,MAiBvB1kC,EAAOL,QAAU,SAAUpD,EAASkkC,GAClC,IAGY9nC,EAAQU,EAAKsrC,EAAgBC,EAAgB7rC,EAHrD8rC,EAAStoC,EAAQ5D,OACjBmsC,EAASvoC,EAAQ2mB,OACjB6hB,EAASxoC,EAAQyoC,KASrB,GANErsC,EADEmsC,EACO1pB,EACA2pB,EACA3pB,EAAWypB,IAAWtD,EAAqBsD,EAAQ,CAAC,GAEpDzpB,EAAWypB,IAAWzpB,EAAWypB,GAAQprC,UAExC,IAAKJ,KAAOonC,EAAQ,CAQ9B,GAPAmE,EAAiBnE,EAAOpnC,GAGtBsrC,EAFEpoC,EAAQ0oC,gBACVlsC,EAAamD,EAAyBvD,EAAQU,KACfN,EAAWoD,MACpBxD,EAAOU,IACtBqrC,EAASI,EAASzrC,EAAMwrC,GAAUE,EAAS,IAAM,KAAO1rC,EAAKkD,EAAQ+4B,cAE5Cv3B,IAAnB4mC,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDnO,EAA0BoO,EAAgBD,EAC5C,EAEIpoC,EAAQ7B,MAASiqC,GAAkBA,EAAejqC,OACpDo4B,EAA4B8R,EAAgB,QAAQ,GAEtD7R,EAAcp6B,EAAQU,EAAKurC,EAAgBroC,EAC7C,CACF,iCCrDAyD,EAAOL,QAAU,SAAUwtB,GACzB,IACE,QAASA,GACX,CAAE,MAAOrsB,GACP,OAAO,CACT,CACF,qCCLA,EAAQ,MACR,IAAIhG,EAAO,EAAQ,MACfi4B,EAAgB,EAAQ,MACxBmS,EAAa,EAAQ,MACrBpP,EAAQ,EAAQ,MAChB5D,EAAkB,EAAQ,MAC1BY,EAA8B,EAAQ,MAEtCmL,EAAU/L,EAAgB,WAC1BiT,EAAkB5/B,OAAO9L,UAE7BuG,EAAOL,QAAU,SAAU01B,EAAKlI,EAAM2Q,EAAQsH,GAC5C,IAAIC,EAASnT,EAAgBmD,GAEzBiQ,GAAuBxP,GAAM,WAE/B,IAAI+E,EAAI,CAAC,EAET,OADAA,EAAEwK,GAAU,WAAc,OAAO,CAAG,EACd,IAAf,GAAGhQ,GAAKwF,EACjB,IAEI0K,EAAoBD,IAAwBxP,GAAM,WAEpD,IAAI0P,GAAa,EACbC,EAAK,IAqBT,MAnBY,UAARpQ,KAIFoQ,EAAK,CAAC,GAGHpqC,YAAc,CAAC,EAClBoqC,EAAGpqC,YAAY4iC,GAAW,WAAc,OAAOwH,CAAI,EACnDA,EAAGC,MAAQ,GACXD,EAAGJ,GAAU,IAAIA,IAGnBI,EAAGtY,KAAO,WAER,OADAqY,GAAa,EACN,IACT,EAEAC,EAAGJ,GAAQ,KACHG,CACV,IAEA,IACGF,IACAC,GACDzH,EACA,CACA,IAAI6H,EAAqB,IAAIN,GACzB7e,EAAU2G,EAAKkY,EAAQ,GAAGhQ,IAAM,SAAUuQ,EAAcnhC,EAAQ8Q,EAAKswB,EAAMC,GAC7E,IAAIC,EAAQthC,EAAO0oB,KACnB,OAAI4Y,IAAUb,GAAca,IAAUZ,EAAgBhY,KAChDmY,IAAwBQ,EAInB,CAAE9hB,MAAM,EAAM7nB,MAAOrB,EAAK6qC,EAAoBlhC,EAAQ8Q,EAAKswB,IAE7D,CAAE7hB,MAAM,EAAM7nB,MAAOrB,EAAK8qC,EAAcrwB,EAAK9Q,EAAQohC,IAEvD,CAAE7hB,MAAM,EACjB,IAEA+O,EAAcxpB,OAAO9P,UAAW47B,EAAK7O,EAAQ,IAC7CuM,EAAcoS,EAAiBE,EAAQ7e,EAAQ,GACjD,CAEI4e,GAAMtS,EAA4BqS,EAAgBE,GAAS,QAAQ,EACzE,oCC1EA,IAAIp7B,EAAU,EAAQ,MAClBwwB,EAAoB,EAAQ,MAC5BuL,EAA2B,EAAQ,MACnClsC,EAAO,EAAQ,MAIfmsC,EAAmB,SAAUttC,EAAQutC,EAAUzF,EAAQ0F,EAAWvN,EAAOwN,EAAOC,EAAQhgB,GAM1F,IALA,IAGIwY,EAASyH,EAHTC,EAAc3N,EACd4N,EAAc,EACdC,IAAQJ,GAASvsC,EAAKusC,EAAQhgB,GAG3BmgB,EAAcL,GACfK,KAAe/F,IACjB5B,EAAU4H,EAAQA,EAAMhG,EAAO+F,GAAcA,EAAaN,GAAYzF,EAAO+F,GAEzEJ,EAAQ,GAAKn8B,EAAQ40B,IACvByH,EAAa7L,EAAkBoE,GAC/B0H,EAAcN,EAAiBttC,EAAQutC,EAAUrH,EAASyH,EAAYC,EAAaH,EAAQ,GAAK,IAEhGJ,EAAyBO,EAAc,GACvC5tC,EAAO4tC,GAAe1H,GAGxB0H,KAEFC,IAEF,OAAOD,CACT,EAEAvmC,EAAOL,QAAUsmC,qCChCjB,IAAIS,EAAc,EAAQ,KAEtBC,EAAoB5Y,SAASt0B,UAC7B8B,EAAQorC,EAAkBprC,MAC1BT,EAAO6rC,EAAkB7rC,KAG7BkF,EAAOL,QAA4B,iBAAXnF,SAAuBA,QAAQe,QAAUmrC,EAAc5rC,EAAKhB,KAAKyB,GAAS,WAChG,OAAOT,EAAKS,MAAMA,EAAOD,UAC3B,sCCTA,IAAIq6B,EAAc,EAAQ,MACtB0I,EAAY,EAAQ,MACpBqI,EAAc,EAAQ,KAEtB5sC,EAAO67B,EAAYA,EAAY77B,MAGnCkG,EAAOL,QAAU,SAAU4/B,EAAInC,GAE7B,OADAiB,EAAUkB,QACMxhC,IAATq/B,EAAqBmC,EAAKmH,EAAc5sC,EAAKylC,EAAInC,GAAQ,WAC9D,OAAOmC,EAAGhkC,MAAM6hC,EAAM9hC,UACxB,CACF,oCCZA,IAAIw6B,EAAQ,EAAQ,MAEpB91B,EAAOL,SAAWm2B,GAAM,WAEtB,IAAItwB,EAAO,WAA4B,EAAE1L,OAEzC,MAAsB,mBAAR0L,GAAsBA,EAAKzJ,eAAe,YAC1D,sCCPA,IAAI45B,EAAc,EAAQ,MACtB0I,EAAY,EAAQ,MACpB7L,EAAW,EAAQ,IACnBI,EAAS,EAAQ,MACjB0D,EAAa,EAAQ,MACrBoQ,EAAc,EAAQ,KAEtBE,EAAY7Y,SACZjpB,EAAS6wB,EAAY,GAAG7wB,QACxBK,EAAOwwB,EAAY,GAAGxwB,MACtB0hC,EAAY,CAAC,EAcjB7mC,EAAOL,QAAU+mC,EAAcE,EAAU9sC,KAAO,SAAcsjC,GAC5D,IAAIha,EAAIib,EAAUjjC,MACdm3B,EAAYnP,EAAE3pB,UACdqtC,EAAWxQ,EAAWh7B,UAAW,GACjCgiC,EAAgB,WAClB,IAAIz9B,EAAOiF,EAAOgiC,EAAUxQ,EAAWh7B,YACvC,OAAOF,gBAAgBkiC,EAlBX,SAAUnI,EAAG4R,EAAYlnC,GACvC,IAAK+yB,EAAOiU,EAAWE,GAAa,CAGlC,IAFA,IAAIzL,EAAO,GACPziC,EAAI,EACDA,EAAIkuC,EAAYluC,IAAKyiC,EAAKziC,GAAK,KAAOA,EAAI,IACjDguC,EAAUE,GAAcH,EAAU,MAAO,gBAAkBzhC,EAAKm2B,EAAM,KAAO,IAC/E,CAAE,OAAOuL,EAAUE,GAAY5R,EAAGt1B,EACpC,CAW2CpF,CAAU2oB,EAAGvjB,EAAK/G,OAAQ+G,GAAQujB,EAAE7nB,MAAM6hC,EAAMv9B,EACzF,EAEA,OADI2yB,EAASD,KAAY+K,EAAc7jC,UAAY84B,GAC5C+K,CACT,qCClCA,IAAIoJ,EAAc,EAAQ,KAEtB5rC,EAAOizB,SAASt0B,UAAUqB,KAE9BkF,EAAOL,QAAU+mC,EAAc5rC,EAAKhB,KAAKgB,GAAQ,WAC/C,OAAOA,EAAKS,MAAMT,EAAMQ,UAC1B,oCCNA,IAAIq3B,EAAc,EAAQ,MACtBC,EAAS,EAAQ,MAEjB+T,EAAoB5Y,SAASt0B,UAE7ButC,EAAgBrU,GAAex5B,OAAO+C,yBAEtC0lC,EAAShP,EAAO+T,EAAmB,QAEnChQ,EAASiL,GAA0D,cAAhD,WAAqC,EAAE/iC,KAC1Dg4B,EAAe+K,KAAYjP,GAAgBA,GAAeqU,EAAcL,EAAmB,QAAQ1tC,cAEvG+G,EAAOL,QAAU,CACfiiC,OAAQA,EACRjL,OAAQA,EACRE,aAAcA,sCCfhB,IAAIlB,EAAc,EAAQ,MACtB0I,EAAY,EAAQ,MAExBr+B,EAAOL,QAAU,SAAU7D,EAAQzC,EAAKoV,GACtC,IAEE,OAAOknB,EAAY0I,EAAUllC,OAAO+C,yBAAyBJ,EAAQzC,GAAKoV,IAC5E,CAAE,MAAO3N,GAAqB,CAChC,qCCRA,IAAIm/B,EAAa,EAAQ,MACrBtK,EAAc,EAAQ,MAE1B31B,EAAOL,QAAU,SAAU4/B,GAIzB,GAAuB,aAAnBU,EAAWV,GAAoB,OAAO5J,EAAY4J,EACxD,qCCRA,IAAImH,EAAc,EAAQ,KAEtBC,EAAoB5Y,SAASt0B,UAC7BqB,EAAO6rC,EAAkB7rC,KACzBmsC,EAAsBP,GAAeC,EAAkB7sC,KAAKA,KAAKgB,EAAMA,GAE3EkF,EAAOL,QAAU+mC,EAAcO,EAAsB,SAAU1H,GAC7D,OAAO,WACL,OAAOzkC,EAAKS,MAAMgkC,EAAIjkC,UACxB,CACF,qCCVA,IAAI8f,EAAa,EAAQ,MACrBuW,EAAa,EAAQ,MAMzB3xB,EAAOL,QAAU,SAAUI,EAAW0O,GACpC,OAAOnT,UAAUxC,OAAS,GALFg5B,EAKgB1W,EAAWrb,GAJ5C4xB,EAAWG,GAAYA,OAAW/zB,GAIwBqd,EAAWrb,IAAcqb,EAAWrb,GAAW0O,GALlG,IAAUqjB,CAM1B,oCCTA,IAAIe,EAAU,EAAQ,MAClBqU,EAAY,EAAQ,MACpBC,EAAoB,EAAQ,MAC5BC,EAAY,EAAQ,MAGpB3H,EAFkB,EAAQ,KAEfvN,CAAgB,YAE/BlyB,EAAOL,QAAU,SAAUypB,GACzB,IAAK+d,EAAkB/d,GAAK,OAAO8d,EAAU9d,EAAIqW,IAC5CyH,EAAU9d,EAAI,eACdge,EAAUvU,EAAQzJ,GACzB,mCCZA,IAAItuB,EAAO,EAAQ,MACfujC,EAAY,EAAQ,MACpBgB,EAAW,EAAQ,MACnBzN,EAAc,EAAQ,MACtBgK,EAAoB,EAAQ,KAE5B/J,EAAap5B,UAEjBuH,EAAOL,QAAU,SAAUmyB,EAAUuV,GACnC,IAAIlL,EAAiB7gC,UAAUxC,OAAS,EAAI8iC,EAAkB9J,GAAYuV,EAC1E,GAAIhJ,EAAUlC,GAAiB,OAAOkD,EAASvkC,EAAKqhC,EAAgBrK,IACpE,MAAM,IAAID,EAAWD,EAAYE,GAAY,mBAC/C,qCCZA,IAAI6D,EAAc,EAAQ,MACtB1rB,EAAU,EAAQ,MAClB0nB,EAAa,EAAQ,MACrBkB,EAAU,EAAQ,MAClBnuB,EAAW,EAAQ,KAEnBjI,EAAOk5B,EAAY,GAAGl5B,MAE1BuD,EAAOL,QAAU,SAAU2nC,GACzB,GAAI3V,EAAW2V,GAAW,OAAOA,EACjC,GAAKr9B,EAAQq9B,GAAb,CAGA,IAFA,IAAIC,EAAYD,EAASxuC,OACrB2M,EAAO,GACF5M,EAAI,EAAGA,EAAI0uC,EAAW1uC,IAAK,CAClC,IAAIgmC,EAAUyI,EAASzuC,GACD,iBAAXgmC,EAAqBpiC,EAAKgJ,EAAMo5B,GAChB,iBAAXA,GAA4C,WAArBhM,EAAQgM,IAA8C,WAArBhM,EAAQgM,IAAuBpiC,EAAKgJ,EAAMf,EAASm6B,GAC7H,CACA,IAAI2I,EAAa/hC,EAAK3M,OAClB2uC,GAAO,EACX,OAAO,SAAUpuC,EAAK8C,GACpB,GAAIsrC,EAEF,OADAA,GAAO,EACAtrC,EAET,GAAI8N,EAAQ7O,MAAO,OAAOe,EAC1B,IAAK,IAAIuG,EAAI,EAAGA,EAAI8kC,EAAY9kC,IAAK,GAAI+C,EAAK/C,KAAOrJ,EAAK,OAAO8C,CACnE,CAjB8B,CAkBhC,qCC5BA,IAAIkiC,EAAY,EAAQ,MACpB8I,EAAoB,EAAQ,MAIhCnnC,EAAOL,QAAU,SAAU+nC,EAAG/F,GAC5B,IAAIgG,EAAOD,EAAE/F,GACb,OAAOwF,EAAkBQ,QAAQ5pC,EAAYsgC,EAAUsJ,EACzD,qCCRA,IAAIhS,EAAc,EAAQ,MACtB4E,EAAW,EAAQ,MAEnBlgB,EAAQxU,KAAKwU,MACbD,EAASub,EAAY,GAAGvb,QACxB7Z,EAAUo1B,EAAY,GAAGp1B,SACzBw/B,EAAcpK,EAAY,GAAG54B,OAE7B6qC,EAAuB,8BACvBC,EAAgC,sBAIpC7nC,EAAOL,QAAU,SAAUmoC,EAASvyB,EAAKwyB,EAAUC,EAAUC,EAAeC,GAC1E,IAAIC,EAAUJ,EAAWD,EAAQhvC,OAC7BkJ,EAAIgmC,EAASlvC,OACbsvC,EAAUP,EAKd,YAJsB9pC,IAAlBkqC,IACFA,EAAgB1N,EAAS0N,GACzBG,EAAUR,GAELrnC,EAAQ2nC,EAAaE,GAAS,SAAU5nC,EAAO6nC,GACpD,IAAIC,EACJ,OAAQluB,EAAOiuB,EAAI,IACjB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAOP,EACjB,IAAK,IAAK,OAAO/H,EAAYxqB,EAAK,EAAGwyB,GACrC,IAAK,IAAK,OAAOhI,EAAYxqB,EAAK4yB,GAClC,IAAK,IACHG,EAAUL,EAAclI,EAAYsI,EAAI,GAAI,IAC5C,MACF,QACE,IAAIrb,GAAKqb,EACT,GAAU,IAANrb,EAAS,OAAOxsB,EACpB,GAAIwsB,EAAIhrB,EAAG,CACT,IAAI2sB,EAAItU,EAAM2S,EAAI,IAClB,OAAU,IAAN2B,EAAgBnuB,EAChBmuB,GAAK3sB,OAA8BjE,IAApBiqC,EAASrZ,EAAI,GAAmBvU,EAAOiuB,EAAI,GAAKL,EAASrZ,EAAI,GAAKvU,EAAOiuB,EAAI,GACzF7nC,CACT,CACA8nC,EAAUN,EAAShb,EAAI,GAE3B,YAAmBjvB,IAAZuqC,EAAwB,GAAKA,CACtC,GACF,qCC5CA,IAAIC,EAAQ,SAAUnf,GACpB,OAAOA,GAAMA,EAAGvjB,OAASA,MAAQujB,CACnC,EAGAppB,EAAOL,QAEL4oC,EAA2B,iBAAdntB,YAA0BA,aACvCmtB,EAAuB,iBAAVlnC,QAAsBA,SAEnCknC,EAAqB,iBAARpuC,MAAoBA,OACjCouC,EAAuB,iBAAV,EAAA9oC,GAAsB,EAAAA,IACnC8oC,EAAqB,iBAARntC,MAAoBA,OAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoC2yB,SAAS,cAATA,sCCdtC,IAAI4H,EAAc,EAAQ,MACtB4E,EAAW,EAAQ,MAEnBx+B,EAAiB45B,EAAY,CAAC,EAAE55B,gBAKpCiE,EAAOL,QAAUxG,OAAOy5B,QAAU,SAAgBxJ,EAAI/vB,GACpD,OAAO0C,EAAew+B,EAASnR,GAAK/vB,EACtC,gCCVA2G,EAAOL,QAAU,CAAC,iCCAlBK,EAAOL,QAAU,SAAUgsB,EAAGP,GAC5B,IAEuB,IAArB9vB,UAAUxC,OAAeuG,QAAQyB,MAAM6qB,GAAKtsB,QAAQyB,MAAM6qB,EAAGP,EAC/D,CAAE,MAAOtqB,GAAqB,CAChC,oCCLA,IAAI0nC,EAAa,EAAQ,MAEzBxoC,EAAOL,QAAU6oC,EAAW,WAAY,sDCFxC,IAAI7V,EAAc,EAAQ,MACtBmD,EAAQ,EAAQ,MAChB+L,EAAgB,EAAQ,MAG5B7hC,EAAOL,SAAWgzB,IAAgBmD,GAAM,WAEtC,OAES,IAFF38B,OAAOC,eAAeyoC,EAAc,OAAQ,IAAK,CACtDnmC,IAAK,WAAc,OAAO,CAAG,IAC5BiwB,CACL,mCCTA,IAAIkQ,EAASx4B,MACTyC,EAAMD,KAAKC,IACX2iC,EAAM5iC,KAAK4iC,IACXpuB,EAAQxU,KAAKwU,MACb/a,EAAMuG,KAAKvG,IACXopC,EAAM7iC,KAAK6iC,IA4Ff1oC,EAAOL,QAAU,CACfk4B,KA3FS,SAAUI,EAAQ0Q,EAAgB9hB,GAC3C,IAOI+hB,EAAUC,EAAU1oC,EAPpB8kB,EAAS4W,EAAOhV,GAChBiiB,EAAyB,EAARjiB,EAAY8hB,EAAiB,EAC9CI,GAAQ,GAAKD,GAAkB,EAC/BE,EAAQD,GAAQ,EAChBE,EAAwB,KAAnBN,EAAwBF,EAAI,GAAI,IAAMA,EAAI,GAAI,IAAM,EACzD9qB,EAAOsa,EAAS,GAAgB,IAAXA,GAAgB,EAAIA,EAAS,EAAI,EAAI,EAC1D53B,EAAQ,EAmCZ,KAjCA43B,EAASnyB,EAAImyB,KAEEA,GAAUA,IAAWiR,KAElCL,EAAW5Q,GAAWA,EAAS,EAAI,EACnC2Q,EAAWG,IAEXH,EAAWvuB,EAAM/a,EAAI24B,GAAUyQ,GAE3BzQ,GADJ93B,EAAIsoC,EAAI,GAAIG,IACK,IACfA,IACAzoC,GAAK,IAGL83B,GADE2Q,EAAWI,GAAS,EACZC,EAAK9oC,EAEL8oC,EAAKR,EAAI,EAAG,EAAIO,IAEf7oC,GAAK,IAChByoC,IACAzoC,GAAK,GAEHyoC,EAAWI,GAASD,GACtBF,EAAW,EACXD,EAAWG,GACFH,EAAWI,GAAS,GAC7BH,GAAY5Q,EAAS93B,EAAI,GAAKsoC,EAAI,EAAGE,GACrCC,GAAYI,IAEZH,EAAW5Q,EAASwQ,EAAI,EAAGO,EAAQ,GAAKP,EAAI,EAAGE,GAC/CC,EAAW,IAGRD,GAAkB,GACvB1jB,EAAO5kB,KAAsB,IAAXwoC,EAClBA,GAAY,IACZF,GAAkB,EAIpB,IAFAC,EAAWA,GAAYD,EAAiBE,EACxCC,GAAkBH,EACXG,EAAiB,GACtB7jB,EAAO5kB,KAAsB,IAAXuoC,EAClBA,GAAY,IACZE,GAAkB,EAGpB,OADA7jB,EAAO5kB,EAAQ,IAAa,IAAPsd,EACdsH,CACT,EAoCE8S,OAlCW,SAAU9S,EAAQ0jB,GAC7B,IAQIE,EARAhiB,EAAQ5B,EAAOnsB,OACfgwC,EAAyB,EAARjiB,EAAY8hB,EAAiB,EAC9CI,GAAQ,GAAKD,GAAkB,EAC/BE,EAAQD,GAAQ,EAChBI,EAAQL,EAAiB,EACzBzoC,EAAQwmB,EAAQ,EAChBlJ,EAAOsH,EAAO5kB,KACduoC,EAAkB,IAAPjrB,EAGf,IADAA,IAAS,EACFwrB,EAAQ,GACbP,EAAsB,IAAXA,EAAiB3jB,EAAO5kB,KACnC8oC,GAAS,EAKX,IAHAN,EAAWD,GAAY,IAAMO,GAAS,EACtCP,KAAcO,EACdA,GAASR,EACFQ,EAAQ,GACbN,EAAsB,IAAXA,EAAiB5jB,EAAO5kB,KACnC8oC,GAAS,EAEX,GAAiB,IAAbP,EACFA,EAAW,EAAII,MACV,IAAIJ,IAAaG,EACtB,OAAOF,EAAW7P,IAAMrb,GAAO,IAAYurB,IAE3CL,GAAYJ,EAAI,EAAGE,GACnBC,GAAYI,CACd,CAAE,OAAQrrB,GAAQ,EAAI,GAAKkrB,EAAWJ,EAAI,EAAGG,EAAWD,EAC1D,sCChGA,IAAIhT,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAChBjD,EAAU,EAAQ,MAElBqN,EAAU/mC,OACVkM,EAAQswB,EAAY,GAAGtwB,OAG3BrF,EAAOL,QAAUm2B,GAAM,WAGrB,OAAQoK,EAAQ,KAAKjS,qBAAqB,EAC5C,IAAK,SAAU7E,GACb,MAAuB,WAAhByJ,EAAQzJ,GAAmB/jB,EAAM+jB,EAAI,IAAM8W,EAAQ9W,EAC5D,EAAI8W,qCCdJ,IAAIvO,EAAa,EAAQ,MACrBa,EAAW,EAAQ,IACnB54B,EAAiB,EAAQ,MAG7BoG,EAAOL,QAAU,SAAU48B,EAAO6M,EAAO7X,GACvC,IAAIp2B,EAAWkuC,EAUf,OAPEzvC,GAEA+3B,EAAWx2B,EAAYiuC,EAAM/tC,cAC7BF,IAAco2B,GACdiB,EAAS6W,EAAqBluC,EAAU1B,YACxC4vC,IAAuB9X,EAAQ93B,WAC/BG,EAAe2iC,EAAO8M,GACjB9M,CACT,qCCjBA,IAAI5G,EAAc,EAAQ,MACtBhE,EAAa,EAAQ,MACrB8G,EAAQ,EAAQ,MAEhB6Q,EAAmB3T,EAAY5H,SAASrpB,UAGvCitB,EAAW8G,EAAM8Q,iBACpB9Q,EAAM8Q,cAAgB,SAAUngB,GAC9B,OAAOkgB,EAAiBlgB,EAC1B,GAGFppB,EAAOL,QAAU84B,EAAM8Q,iDCbvB,IAYInlC,EAAK1I,EAAKgmB,EAZV8nB,EAAkB,EAAQ,MAC1BpuB,EAAa,EAAQ,MACrBoX,EAAW,EAAQ,IACnBM,EAA8B,EAAQ,MACtCF,EAAS,EAAQ,MACjB6W,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,KAErBC,EAA6B,6BAC7BnxC,EAAY2iB,EAAW3iB,UACvBoxC,EAAUzuB,EAAWyuB,QAgBzB,GAAIL,GAAmBC,EAAO1hC,MAAO,CACnC,IAAI0wB,EAAQgR,EAAO1hC,QAAU0hC,EAAO1hC,MAAQ,IAAI8hC,GAEhDpR,EAAM/8B,IAAM+8B,EAAM/8B,IAClB+8B,EAAM/W,IAAM+W,EAAM/W,IAClB+W,EAAMr0B,IAAMq0B,EAAMr0B,IAElBA,EAAM,SAAUglB,EAAI1V,GAClB,GAAI+kB,EAAM/W,IAAI0H,GAAK,MAAM,IAAI3wB,EAAUmxC,GAGvC,OAFAl2B,EAASo2B,OAAS1gB,EAClBqP,EAAMr0B,IAAIglB,EAAI1V,GACPA,CACT,EACAhY,EAAM,SAAU0tB,GACd,OAAOqP,EAAM/8B,IAAI0tB,IAAO,CAAC,CAC3B,EACA1H,EAAM,SAAU0H,GACd,OAAOqP,EAAM/W,IAAI0H,EACnB,CACF,KAAO,CACL,IAAI2gB,EAAQL,EAAU,SACtBC,EAAWI,IAAS,EACpB3lC,EAAM,SAAUglB,EAAI1V,GAClB,GAAIkf,EAAOxJ,EAAI2gB,GAAQ,MAAM,IAAItxC,EAAUmxC,GAG3C,OAFAl2B,EAASo2B,OAAS1gB,EAClB0J,EAA4B1J,EAAI2gB,EAAOr2B,GAChCA,CACT,EACAhY,EAAM,SAAU0tB,GACd,OAAOwJ,EAAOxJ,EAAI2gB,GAAS3gB,EAAG2gB,GAAS,CAAC,CAC1C,EACAroB,EAAM,SAAU0H,GACd,OAAOwJ,EAAOxJ,EAAI2gB,EACpB,CACF,CAEA/pC,EAAOL,QAAU,CACfyE,IAAKA,EACL1I,IAAKA,EACLgmB,IAAKA,EACL0R,QArDY,SAAUhK,GACtB,OAAO1H,EAAI0H,GAAM1tB,EAAI0tB,GAAMhlB,EAAIglB,EAAI,CAAC,EACtC,EAoDE+N,UAlDc,SAAUyF,GACxB,OAAO,SAAUxT,GACf,IAAIrhB,EACJ,IAAKyqB,EAASpJ,KAAQrhB,EAAQrM,EAAI0tB,IAAK/sB,OAASugC,EAC9C,MAAM,IAAInkC,EAAU,0BAA4BmkC,EAAO,aACvD,OAAO70B,CACX,CACF,sCCzBA,IAAImqB,EAAkB,EAAQ,MAC1BkV,EAAY,EAAQ,MAEpB3H,EAAWvN,EAAgB,YAC3BE,EAAiB/uB,MAAM5J,UAG3BuG,EAAOL,QAAU,SAAUypB,GACzB,YAAcrrB,IAAPqrB,IAAqBge,EAAU/jC,QAAU+lB,GAAMgJ,EAAeqN,KAAcrW,EACrF,qCCTA,IAAIyJ,EAAU,EAAQ,MAKtB7yB,EAAOL,QAAU0D,MAAM4G,SAAW,SAAiB6nB,GACjD,MAA6B,UAAtBe,EAAQf,EACjB,qCCPA,IAAIe,EAAU,EAAQ,MAEtB7yB,EAAOL,QAAU,SAAUypB,GACzB,IAAI4L,EAAQnC,EAAQzJ,GACpB,MAAiB,kBAAV4L,GAAuC,mBAAVA,CACtC,iCCJA,IAAIgV,EAAiC,iBAAZ3rC,UAAwBA,SAASwL,IAK1D7J,EAAOL,aAAgC,IAAfqqC,QAA8CjsC,IAAhBisC,EAA4B,SAAUlY,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAakY,CACvD,EAAI,SAAUlY,GACZ,MAA0B,mBAAZA,CAChB,qCCVA,IAAI6D,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAChBnE,EAAa,EAAQ,MACrBkB,EAAU,EAAQ,MAClB2V,EAAa,EAAQ,MACrBe,EAAgB,EAAQ,MAExBU,EAAO,WAA0B,EACjCxvC,EAAY+tC,EAAW,UAAW,aAClC0B,EAAoB,2BACpB/c,EAAOwI,EAAYuU,EAAkB/c,MACrCgd,GAAuBD,EAAkB1kC,KAAKykC,GAE9CG,EAAsB,SAAuBtY,GAC/C,IAAKH,EAAWG,GAAW,OAAO,EAClC,IAEE,OADAr3B,EAAUwvC,EAAM,GAAInY,IACb,CACT,CAAE,MAAOhxB,GACP,OAAO,CACT,CACF,EAEIupC,EAAsB,SAAuBvY,GAC/C,IAAKH,EAAWG,GAAW,OAAO,EAClC,OAAQe,EAAQf,IACd,IAAK,gBACL,IAAK,oBACL,IAAK,yBAA0B,OAAO,EAExC,IAIE,OAAOqY,KAAyBhd,EAAK+c,EAAmBX,EAAczX,GACxE,CAAE,MAAOhxB,GACP,OAAO,CACT,CACF,EAEAupC,EAAoB3vC,MAAO,EAI3BsF,EAAOL,SAAWlF,GAAaq7B,GAAM,WACnC,IAAI6J,EACJ,OAAOyK,EAAoBA,EAAoBtvC,QACzCsvC,EAAoBjxC,UACpBixC,GAAoB,WAAczK,GAAS,CAAM,KAClDA,CACP,IAAK0K,EAAsBD,qCClD3B,IAAItU,EAAQ,EAAQ,MAChBnE,EAAa,EAAQ,MAErBuW,EAAc,kBAEdxD,EAAW,SAAU4F,EAASC,GAChC,IAAIpuC,EAAQyU,EAAK45B,EAAUF,IAC3B,OAAOnuC,IAAUsuC,GACbtuC,IAAUuuC,IACV/Y,EAAW4Y,GAAazU,EAAMyU,KAC5BA,EACR,EAEIC,EAAY9F,EAAS8F,UAAY,SAAUzJ,GAC7C,OAAOx3B,OAAOw3B,GAAQxgC,QAAQ2nC,EAAa,KAAKzmC,aAClD,EAEImP,EAAO8zB,EAAS9zB,KAAO,CAAC,EACxB85B,EAAShG,EAASgG,OAAS,IAC3BD,EAAW/F,EAAS+F,SAAW,IAEnCzqC,EAAOL,QAAU+kC,qCCrBjB,IAAIlS,EAAW,EAAQ,IAEnBnY,EAAQxU,KAAKwU,MAKjBra,EAAOL,QAAU8D,OAAOknC,WAAa,SAAmBvhB,GACtD,OAAQoJ,EAASpJ,IAAOiE,SAASjE,IAAO/O,EAAM+O,KAAQA,CACxD,iCCPAppB,EAAOL,QAAU,SAAUypB,GACzB,OAAOA,OACT,mCCJA,IAAIuI,EAAa,EAAQ,MAEzB3xB,EAAOL,QAAU,SAAUypB,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAcuI,EAAWvI,EAC1D,qCCJA,IAAIoJ,EAAW,EAAQ,IAEvBxyB,EAAOL,QAAU,SAAUmyB,GACzB,OAAOU,EAASV,IAA0B,OAAbA,CAC/B,iCCJA9xB,EAAOL,SAAU,oCCAjB,IAAI6yB,EAAW,EAAQ,IACnBK,EAAU,EAAQ,MAGlB8N,EAFkB,EAAQ,KAElBzO,CAAgB,SAI5BlyB,EAAOL,QAAU,SAAUypB,GACzB,IAAIwhB,EACJ,OAAOpY,EAASpJ,UAAmCrrB,KAA1B6sC,EAAWxhB,EAAGuX,MAA0BiK,EAA2B,WAAhB/X,EAAQzJ,GACtF,oCCXA,IAAIof,EAAa,EAAQ,MACrB7W,EAAa,EAAQ,MACrBrM,EAAgB,EAAQ,MACxBulB,EAAoB,EAAQ,MAE5B3K,EAAU/mC,OAEd6G,EAAOL,QAAUkrC,EAAoB,SAAUzhB,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAI0hB,EAAUtC,EAAW,UACzB,OAAO7W,EAAWmZ,IAAYxlB,EAAcwlB,EAAQrxC,UAAWymC,EAAQ9W,GACzE,qCCZA,IAAItvB,EAAO,EAAQ,MACfgB,EAAO,EAAQ,MACfukC,EAAW,EAAQ,MACnBzN,EAAc,EAAQ,MACtB6J,EAAwB,EAAQ,MAChChB,EAAoB,EAAQ,MAC5BnV,EAAgB,EAAQ,MACxBqW,EAAc,EAAQ,IACtBC,EAAoB,EAAQ,KAC5B0D,EAAgB,EAAQ,MAExBzN,EAAap5B,UAEbsyC,EAAS,SAAUC,EAAS/vC,GAC9BG,KAAK4vC,QAAUA,EACf5vC,KAAKH,OAASA,CAChB,EAEIgwC,EAAkBF,EAAOtxC,UAE7BuG,EAAOL,QAAU,SAAUurC,EAAUC,EAAiB5uC,GACpD,IAMIwnB,EAAUqnB,EAAQ/qC,EAAOvH,EAAQmC,EAAQiM,EAAMg1B,EAN/CkB,EAAO7gC,GAAWA,EAAQ6gC,KAC1BiO,KAAgB9uC,IAAWA,EAAQ8uC,YACnCC,KAAe/uC,IAAWA,EAAQ+uC,WAClCC,KAAiBhvC,IAAWA,EAAQgvC,aACpCC,KAAiBjvC,IAAWA,EAAQivC,aACpCjM,EAAKzlC,EAAKqxC,EAAiB/N,GAG3B50B,EAAO,SAAUgR,GAEnB,OADIuK,GAAUub,EAAcvb,EAAU,SAAUvK,GACzC,IAAIuxB,GAAO,EAAMvxB,EAC1B,EAEIiyB,EAAS,SAAUtvC,GACrB,OAAIkvC,GACFhM,EAASljC,GACFqvC,EAAcjM,EAAGpjC,EAAM,GAAIA,EAAM,GAAIqM,GAAQ+2B,EAAGpjC,EAAM,GAAIA,EAAM,KAChEqvC,EAAcjM,EAAGpjC,EAAOqM,GAAQ+2B,EAAGpjC,EAC9C,EAEA,GAAImvC,EACFvnB,EAAWmnB,EAASnnB,cACf,GAAIwnB,EACTxnB,EAAWmnB,MACN,CAEL,KADAE,EAASxP,EAAkBsP,IACd,MAAM,IAAIrZ,EAAWD,EAAYsZ,GAAY,oBAE1D,GAAIzP,EAAsB2P,GAAS,CACjC,IAAK/qC,EAAQ,EAAGvH,EAAS2hC,EAAkByQ,GAAWpyC,EAASuH,EAAOA,IAEpE,IADApF,EAASwwC,EAAOP,EAAS7qC,MACXilB,EAAc2lB,EAAiBhwC,GAAS,OAAOA,EAC7D,OAAO,IAAI8vC,GAAO,EACtB,CACAhnB,EAAW4X,EAAYuP,EAAUE,EACnC,CAGA,IADAlkC,EAAOokC,EAAYJ,EAAShkC,KAAO6c,EAAS7c,OACnCg1B,EAAOphC,EAAKoM,EAAM6c,IAAWC,MAAM,CAC1C,IACE/oB,EAASwwC,EAAOvP,EAAK//B,MACvB,CAAE,MAAO2E,GACPw+B,EAAcvb,EAAU,QAASjjB,EACnC,CACA,GAAqB,iBAAV7F,GAAsBA,GAAUqqB,EAAc2lB,EAAiBhwC,GAAS,OAAOA,CAC5F,CAAE,OAAO,IAAI8vC,GAAO,EACtB,qCCnEA,IAAIjwC,EAAO,EAAQ,MACfukC,EAAW,EAAQ,MACnB6H,EAAY,EAAQ,MAExBlnC,EAAOL,QAAU,SAAUokB,EAAU2nB,EAAMvvC,GACzC,IAAIwvC,EAAaC,EACjBvM,EAAStb,GACT,IAEE,KADA4nB,EAAczE,EAAUnjB,EAAU,WAChB,CAChB,GAAa,UAAT2nB,EAAkB,MAAMvvC,EAC5B,OAAOA,CACT,CACAwvC,EAAc7wC,EAAK6wC,EAAa5nB,EAClC,CAAE,MAAOjjB,GACP8qC,GAAa,EACbD,EAAc7qC,CAChB,CACA,GAAa,UAAT4qC,EAAkB,MAAMvvC,EAC5B,GAAIyvC,EAAY,MAAMD,EAEtB,OADAtM,EAASsM,GACFxvC,CACT,qCCtBA,IAAI0vC,EAAoB,0BACpBluC,EAAS,EAAQ,MACjBujC,EAA2B,EAAQ,MACnCzK,EAAiB,EAAQ,KACzB2Q,EAAY,EAAQ,MAEpB0E,EAAa,WAAc,OAAO1wC,IAAM,EAE5C4E,EAAOL,QAAU,SAAUosC,EAAqBtZ,EAAMvrB,EAAM8kC,GAC1D,IAAInY,EAAgBpB,EAAO,YAI3B,OAHAsZ,EAAoBtyC,UAAYkE,EAAOkuC,EAAmB,CAAE3kC,KAAMg6B,IAA2B8K,EAAiB9kC,KAC9GuvB,EAAesV,EAAqBlY,GAAe,GAAO,GAC1DuT,EAAUvT,GAAiBiY,EACpBC,CACT,qCCdA,IAAIE,EAAI,EAAQ,MACZnxC,EAAO,EAAQ,MACfoxC,EAAU,EAAQ,MAClBtW,EAAe,EAAQ,KACvBjE,EAAa,EAAQ,MACrBwa,EAA4B,EAAQ,MACpCtyC,EAAiB,EAAQ,MACzBD,EAAiB,EAAQ,MACzB68B,EAAiB,EAAQ,KACzB3D,EAA8B,EAAQ,MACtCC,EAAgB,EAAQ,MACxBb,EAAkB,EAAQ,MAC1BkV,EAAY,EAAQ,MACpBgF,EAAgB,EAAQ,MAExB1V,EAAuBd,EAAae,OACpCC,EAA6BhB,EAAaiB,aAC1CgV,EAAoBO,EAAcP,kBAClCQ,EAAyBD,EAAcC,uBACvC5M,EAAWvN,EAAgB,YAC3Boa,EAAO,OACPC,EAAS,SACT/M,EAAU,UAEVsM,EAAa,WAAc,OAAO1wC,IAAM,EAE5C4E,EAAOL,QAAU,SAAU6sC,EAAU/Z,EAAMsZ,EAAqB7kC,EAAMulC,EAASC,EAAQ5O,GACrFqO,EAA0BJ,EAAqBtZ,EAAMvrB,GAErD,IAqBIylC,EAA0BnmB,EAAS6O,EArBnCuX,EAAqB,SAAUC,GACjC,GAAIA,IAASJ,GAAWK,EAAiB,OAAOA,EAChD,IAAKT,GAA0BQ,GAAQA,KAAQE,EAAmB,OAAOA,EAAkBF,GAE3F,OAAQA,GACN,KAAKP,EACL,KAAKC,EACL,KAAK/M,EAAS,OAAO,WAAqB,OAAO,IAAIuM,EAAoB3wC,KAAMyxC,EAAO,EAGxF,OAAO,WAAc,OAAO,IAAId,EAAoB3wC,KAAO,CAC7D,EAEIy4B,EAAgBpB,EAAO,YACvBua,GAAwB,EACxBD,EAAoBP,EAAS/yC,UAC7BwzC,EAAiBF,EAAkBtN,IAClCsN,EAAkB,eAClBN,GAAWM,EAAkBN,GAC9BK,GAAmBT,GAA0BY,GAAkBL,EAAmBH,GAClFS,EAA6B,UAATza,GAAmBsa,EAAkBxmB,SAA4B0mB,EA+BzF,GA3BIC,IACFP,EAA2B9yC,EAAeqzC,EAAkBpyC,KAAK,IAAI0xC,OACpCrzC,OAAOM,WAAakzC,EAAyBzlC,OACvEglC,GAAWryC,EAAe8yC,KAA8Bd,IACvDjyC,EACFA,EAAe+yC,EAA0Bd,GAC/Bla,EAAWgb,EAAyBlN,KAC9C1M,EAAc4Z,EAA0BlN,EAAUqM,IAItDrV,EAAekW,EAA0B9Y,GAAe,GAAM,GAC1DqY,IAAS9E,EAAUvT,GAAiBiY,IAKxCpV,GAAwB+V,IAAYF,GAAUU,GAAkBA,EAAepuC,OAAS0tC,KACrFL,GAAWtV,EACd9D,EAA4Bia,EAAmB,OAAQR,IAEvDS,GAAwB,EACxBF,EAAkB,WAAoB,OAAOhyC,EAAKmyC,EAAgB7xC,KAAO,IAKzEqxC,EAMF,GALAjmB,EAAU,CACRF,OAAQsmB,EAAmBL,GAC3B9mC,KAAMinC,EAASI,EAAkBF,EAAmBN,GACpD/lB,QAASqmB,EAAmBpN,IAE1B1B,EAAQ,IAAKzI,KAAO7O,GAClB6lB,GAA0BW,KAA2B3X,KAAO0X,KAC9Dha,EAAcga,EAAmB1X,EAAK7O,EAAQ6O,SAE3C4W,EAAE,CAAEtzC,OAAQ85B,EAAMqC,OAAO,EAAMQ,OAAQ+W,GAA0BW,GAAyBxmB,GASnG,OALM0lB,IAAWpO,GAAWiP,EAAkBtN,KAAcqN,GAC1D/Z,EAAcga,EAAmBtN,EAAUqN,EAAiB,CAAEjuC,KAAM4tC,IAEtErF,EAAU3U,GAAQqa,EAEXtmB,CACT,qCCpGA,IAcIqlB,EAAmBsB,EAAmCC,EAdtDtX,EAAQ,EAAQ,MAChBnE,EAAa,EAAQ,MACrBa,EAAW,EAAQ,IACnB70B,EAAS,EAAQ,MACjB9D,EAAiB,EAAQ,MACzBk5B,EAAgB,EAAQ,MACxBb,EAAkB,EAAQ,MAC1Bga,EAAU,EAAQ,MAElBzM,EAAWvN,EAAgB,YAC3Bma,GAAyB,EAOzB,GAAG5mC,OAGC,SAFN2nC,EAAgB,GAAG3nC,SAIjB0nC,EAAoCtzC,EAAeA,EAAeuzC,OACxBj0C,OAAOM,YAAWoyC,EAAoBsB,GAHlDd,GAAyB,IAO7B7Z,EAASqZ,IAAsB/V,GAAM,WACjE,IAAItwB,EAAO,CAAC,EAEZ,OAAOqmC,EAAkBpM,GAAU3kC,KAAK0K,KAAUA,CACpD,IAE4BqmC,EAAoB,CAAC,EACxCK,IAASL,EAAoBluC,EAAOkuC,IAIxCla,EAAWka,EAAkBpM,KAChC1M,EAAc8Y,EAAmBpM,GAAU,WACzC,OAAOrkC,IACT,IAGF4E,EAAOL,QAAU,CACfksC,kBAAmBA,EACnBQ,uBAAwBA,kCC9C1BrsC,EAAOL,QAAU,CAAC,qCCAlB,IAAIs2B,EAAW,EAAQ,MAIvBj2B,EAAOL,QAAU,SAAUoJ,GACzB,OAAOktB,EAASltB,EAAIjQ,OACtB,oCCNA,IAAI68B,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAChBnE,EAAa,EAAQ,MACrBiB,EAAS,EAAQ,MACjBD,EAAc,EAAQ,MACtBiE,EAA6B,oBAC7B2S,EAAgB,EAAQ,MACxBrW,EAAsB,EAAQ,MAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBx3B,IACvCu2B,EAAU1oB,OAEVnQ,EAAiBD,OAAOC,eACxB2mC,EAAcpK,EAAY,GAAG54B,OAC7BwD,EAAUo1B,EAAY,GAAGp1B,SACzB4E,EAAOwwB,EAAY,GAAGxwB,MAEtBkoC,EAAsB1a,IAAgBmD,GAAM,WAC9C,OAAsF,IAA/E18B,GAAe,WAA0B,GAAG,SAAU,CAAE+C,MAAO,IAAKrD,MAC7E,IAEIw0C,EAAW/jC,OAAOA,QAAQlE,MAAM,UAEhC+7B,EAAcphC,EAAOL,QAAU,SAAUxD,EAAO0C,EAAMtC,GACf,YAArCwjC,EAAY9N,EAAQpzB,GAAO,EAAG,KAChCA,EAAO,IAAM0B,EAAQ0xB,EAAQpzB,GAAO,wBAAyB,MAAQ,KAEnEtC,GAAWA,EAAQ8kC,SAAQxiC,EAAO,OAASA,GAC3CtC,GAAWA,EAAQ+kC,SAAQziC,EAAO,OAASA,KAC1C+zB,EAAOz2B,EAAO,SAAYy6B,GAA8Bz6B,EAAM0C,OAASA,KACtE8zB,EAAav5B,EAAe+C,EAAO,OAAQ,CAAEA,MAAO0C,EAAM5F,cAAc,IACvEkD,EAAM0C,KAAOA,GAEhBwuC,GAAuB9wC,GAAWq2B,EAAOr2B,EAAS,UAAYJ,EAAMrD,SAAWyD,EAAQgxC,OACzFn0C,EAAe+C,EAAO,SAAU,CAAEA,MAAOI,EAAQgxC,QAEnD,IACMhxC,GAAWq2B,EAAOr2B,EAAS,gBAAkBA,EAAQlB,YACnDs3B,GAAav5B,EAAe+C,EAAO,YAAa,CAAEjD,UAAU,IAEvDiD,EAAM1C,YAAW0C,EAAM1C,eAAYsE,EAChD,CAAE,MAAO+C,GAAqB,CAC9B,IAAIiH,EAAQorB,EAAqBh3B,GAG/B,OAFGy2B,EAAO7qB,EAAO,YACjBA,EAAM04B,OAASt7B,EAAKmoC,EAAyB,iBAARzuC,EAAmBA,EAAO,KACxD1C,CACX,EAIA4xB,SAASt0B,UAAUiL,SAAW08B,GAAY,WACxC,OAAOzP,EAAWv2B,OAASi4B,EAAiBj4B,MAAMqlC,QAAU8I,EAAcnuC,KAC5E,GAAG,+CCrDH,IAAIuiB,EAAO,EAAQ,MAEf7X,EAAMD,KAAKC,IAEX0nC,EAAU,qBACVC,EAAkB,EAAID,EAM1BxtC,EAAOL,QAAU,SAAUob,EAAG2yB,EAAeC,EAAiBC,GAC5D,IAAI5gB,GAAKjS,EACLrS,EAAW5C,EAAIknB,GACfvD,EAAI9L,EAAKqP,GACb,GAAItkB,EAAWklC,EAAiB,OAAOnkB,EARnB,SAAUuD,GAC9B,OAAOA,EAAIygB,EAAkBA,CAC/B,CAM6CI,CAAgBnlC,EAAWklC,EAAkBF,GAAiBE,EAAkBF,EAC3H,IAAI/hB,GAAK,EAAI+hB,EAAgBF,GAAW9kC,EACpCzN,EAAS0wB,GAAKA,EAAIjjB,GAEtB,OAAIzN,EAAS0yC,GAAmB1yC,GAAWA,EAAewuB,GAAIyf,KACvDzf,EAAIxuB,CACb,qCCrBA,IAAI6yC,EAAa,EAAQ,MASzB9tC,EAAOL,QAAUkG,KAAKswB,QAAU,SAAgBpb,GAC9C,OAAO+yB,EAAW/yB,EARE,sBACE,qBACA,sBAOxB,iCCRA/a,EAAOL,QAAUkG,KAAK8X,MAAQ,SAAc5C,GAC1C,IAAIiS,GAAKjS,EAET,OAAa,IAANiS,GAAWA,GAAMA,EAAIA,EAAIA,EAAI,GAAK,EAAI,CAC/C,gCCPA,IAAI+gB,EAAOloC,KAAKkoC,KACZ1zB,EAAQxU,KAAKwU,MAKjBra,EAAOL,QAAUkG,KAAKmoC,OAAS,SAAejzB,GAC5C,IAAIiS,GAAKjS,EACT,OAAQiS,EAAI,EAAI3S,EAAQ0zB,GAAM/gB,EAChC,qCCTA,IAeIihB,EAAQC,EAAQnkC,EAAM4a,EAASxnB,EAf/Bie,EAAa,EAAQ,MACrB+yB,EAAiB,EAAQ,MACzBr0C,EAAO,EAAQ,MACfs0C,EAAY,YACZC,EAAQ,EAAQ,MAChBC,EAAS,EAAQ,MACjBC,EAAgB,EAAQ,MACxBC,EAAkB,EAAQ,MAC1BC,EAAU,EAAQ,MAElBC,EAAmBtzB,EAAWszB,kBAAoBtzB,EAAWuzB,uBAC7DtwC,EAAW+c,EAAW/c,SACtB6C,EAAUka,EAAWla,QACrBjE,EAAUme,EAAWne,QACrB2xC,EAAYT,EAAe,kBAI/B,IAAKS,EAAW,CACd,IAAIC,EAAQ,IAAIR,EAEZS,EAAQ,WACV,IAAI51B,EAAQqmB,EAEZ,IADIkP,IAAYv1B,EAAShY,EAAQ6tC,SAAS71B,EAAO81B,OAC1CzP,EAAKsP,EAAMnzC,WAChB6jC,GACF,CAAE,MAAOz+B,GAEP,MADI+tC,EAAMI,MAAMhB,IACVntC,CACR,CACIoY,GAAQA,EAAOg2B,OACrB,EAIKZ,GAAWG,GAAYD,IAAmBE,IAAoBrwC,GAQvDkwC,GAAiBtxC,GAAWA,EAAQC,UAE9CynB,EAAU1nB,EAAQC,aAAQa,IAElB1C,YAAc4B,EACtBE,EAAOrD,EAAK6qB,EAAQxnB,KAAMwnB,GAC1BspB,EAAS,WACP9wC,EAAK2xC,EACP,GAESL,EACTR,EAAS,WACP/sC,EAAQiuC,SAASL,EACnB,GASAV,EAAYt0C,EAAKs0C,EAAWhzB,GAC5B6yB,EAAS,WACPG,EAAUU,EACZ,IAhCAZ,GAAS,EACTnkC,EAAO1L,EAAS+wC,eAAe,IAC/B,IAAIV,EAAiBI,GAAOO,QAAQtlC,EAAM,CAAEulC,eAAe,IAC3DrB,EAAS,WACPlkC,EAAK6G,KAAOs9B,GAAUA,CACxB,GA8BFU,EAAY,SAAUrP,GACfsP,EAAMI,MAAMhB,IACjBY,EAAMU,IAAIhQ,EACZ,CACF,CAEAv/B,EAAOL,QAAUivC,qCC7EjB,IAAIvQ,EAAY,EAAQ,MAEpBxM,EAAap5B,UAEb+2C,EAAoB,SAAUra,GAChC,IAAIj4B,EAASwO,EACbtQ,KAAKupB,QAAU,IAAIwQ,GAAE,SAAUsa,EAAWC,GACxC,QAAgB3xC,IAAZb,QAAoCa,IAAX2N,EAAsB,MAAM,IAAImmB,EAAW,2BACxE30B,EAAUuyC,EACV/jC,EAASgkC,CACX,IACAt0C,KAAK8B,QAAUmhC,EAAUnhC,GACzB9B,KAAKsQ,OAAS2yB,EAAU3yB,EAC1B,EAIA1L,EAAOL,QAAQgvB,EAAI,SAAUwG,GAC3B,OAAO,IAAIqa,EAAkBra,EAC/B,qCCnBA,IAAIyV,EAAW,EAAQ,KAEnB/Y,EAAap5B,UAEjBuH,EAAOL,QAAU,SAAUypB,GACzB,GAAIwhB,EAASxhB,GACX,MAAM,IAAIyI,EAAW,iDACrB,OAAOzI,CACX,qCCRA,IAAIuJ,EAAc,EAAQ,MACtBgD,EAAc,EAAQ,MACtB76B,EAAO,EAAQ,MACfg7B,EAAQ,EAAQ,MAChB6Z,EAAa,EAAQ,MACrBC,EAA8B,EAAQ,MACtCC,EAA6B,EAAQ,MACrCtV,EAAW,EAAQ,MACnBmC,EAAgB,EAAQ,MAGxBoT,EAAU32C,OAAOwY,OAEjBvY,EAAiBD,OAAOC,eACxB0L,EAAS6wB,EAAY,GAAG7wB,QAI5B9E,EAAOL,SAAWmwC,GAAWha,GAAM,WAEjC,GAAInD,GAQiB,IARFmd,EAAQ,CAAE1kB,EAAG,GAAK0kB,EAAQ12C,EAAe,CAAC,EAAG,IAAK,CACnEJ,YAAY,EACZ0C,IAAK,WACHtC,EAAegC,KAAM,IAAK,CACxBe,MAAO,EACPnD,YAAY,GAEhB,IACE,CAAEoyB,EAAG,KAAMA,EAAS,OAAO,EAE/B,IAAI2kB,EAAI,CAAC,EACLC,EAAI,CAAC,EAELC,EAAS/wC,OAAO,oBAChBgxC,EAAW,uBAGf,OAFAH,EAAEE,GAAU,EACZC,EAAS7qC,MAAM,IAAIK,SAAQ,SAAUyqC,GAAOH,EAAEG,GAAOA,CAAK,IACxB,IAA3BL,EAAQ,CAAC,EAAGC,GAAGE,IAAiBN,EAAWG,EAAQ,CAAC,EAAGE,IAAI7qC,KAAK,MAAQ+qC,CACjF,IAAK,SAAgBv3C,EAAQ8nC,GAM3B,IALA,IAAI2P,EAAI7V,EAAS5hC,GACbqiC,EAAkB1/B,UAAUxC,OAC5BuH,EAAQ,EACRyW,EAAwB84B,EAA4BjhB,EACpDV,EAAuB4hB,EAA2BlhB,EAC/CqM,EAAkB36B,GAMvB,IALA,IAIIhH,EAJAg5B,EAAIqK,EAAcphC,UAAU+E,MAC5BoF,EAAOqR,EAAwBhS,EAAO6qC,EAAWtd,GAAIvb,EAAsBub,IAAMsd,EAAWtd,GAC5Fv5B,EAAS2M,EAAK3M,OACd4J,EAAI,EAED5J,EAAS4J,GACdrJ,EAAMoM,EAAK/C,KACNiwB,IAAe73B,EAAKmzB,EAAsBoE,EAAGh5B,KAAM+2C,EAAE/2C,GAAOg5B,EAAEh5B,IAErE,OAAO+2C,CACX,EAAIN,qCCtDJ,IAoDIO,EApDAhR,EAAW,EAAQ,MACnBiR,EAAyB,EAAQ,MACjCC,EAAc,EAAQ,MACtB5G,EAAa,EAAQ,KACrB6G,EAAO,EAAQ,KACf1M,EAAwB,EAAQ,MAChC4F,EAAY,EAAQ,MAIpB1S,EAAY,YACZyZ,EAAS,SACTC,EAAWhH,EAAU,YAErBiH,EAAmB,WAA0B,EAE7CC,EAAY,SAAUC,GACxB,MARO,IAQKJ,EATL,IASmBI,EAAnBC,KAAwCL,EATxC,GAUT,EAGIM,EAA4B,SAAUV,GACxCA,EAAgBW,MAAMJ,EAAU,KAChCP,EAAgB7uB,QAChB,IAAIyvB,EAAOZ,EAAgBa,aAAa/3C,OAGxC,OADAk3C,EAAkB,KACXY,CACT,EAyBIE,EAAkB,WACpB,IACEd,EAAkB,IAAIe,cAAc,WACtC,CAAE,MAAOtwC,GAAsB,CAzBF,IAIzBuwC,EAFAC,EACAC,EAuBJJ,EAAqC,oBAAZ9yC,SACrBA,SAAS0wC,QAAUsB,EACjBU,EAA0BV,IA1B5BiB,EAASxN,EAAsB,UAC/ByN,EAAK,OAASd,EAAS,IAE3Ba,EAAO3vC,MAAM6vC,QAAU,OACvBhB,EAAKiB,YAAYH,GAEjBA,EAAOhoB,IAAM/f,OAAOgoC,IACpBF,EAAiBC,EAAOI,cAAcrzC,UACvB+a,OACfi4B,EAAeL,MAAMJ,EAAU,sBAC/BS,EAAe7vB,QACR6vB,EAAejuB,GAiBlB2tB,EAA0BV,GAE9B,IADA,IAAIv3C,EAASy3C,EAAYz3C,OAClBA,YAAiBq4C,EAAgBna,GAAWuZ,EAAYz3C,IAC/D,OAAOq4C,GACT,EAEAxH,EAAW+G,IAAY,EAKvB1wC,EAAOL,QAAUxG,OAAOwE,QAAU,SAAgBk9B,EAAG8W,GACnD,IAAI12C,EAQJ,OAPU,OAAN4/B,GACF8V,EAAiB3Z,GAAaqI,EAASxE,GACvC5/B,EAAS,IAAI01C,EACbA,EAAiB3Z,GAAa,KAE9B/7B,EAAOy1C,GAAY7V,GACd5/B,EAASk2C,SACMpzC,IAAf4zC,EAA2B12C,EAASq1C,EAAuB3hB,EAAE1zB,EAAQ02C,EAC9E,qCCnFA,IAAIhf,EAAc,EAAQ,MACtBif,EAA0B,EAAQ,MAClCpR,EAAuB,EAAQ,MAC/BnB,EAAW,EAAQ,MACnBjD,EAAkB,EAAQ,MAC1BuT,EAAa,EAAQ,MAKzBhwC,EAAQgvB,EAAIgE,IAAgBif,EAA0Bz4C,OAAO6d,iBAAmB,SAA0B6jB,EAAG8W,GAC3GtS,EAASxE,GAMT,IALA,IAIIxhC,EAJAT,EAAQwjC,EAAgBuV,GACxBlsC,EAAOkqC,EAAWgC,GAClB74C,EAAS2M,EAAK3M,OACduH,EAAQ,EAELvH,EAASuH,GAAOmgC,EAAqB7R,EAAEkM,EAAGxhC,EAAMoM,EAAKpF,KAAUzH,EAAMS,IAC5E,OAAOwhC,CACT,qCCnBA,IAAIlI,EAAc,EAAQ,MACtBkf,EAAiB,EAAQ,MACzBD,EAA0B,EAAQ,MAClCvS,EAAW,EAAQ,MACnBvR,EAAgB,EAAQ,MAExB+D,EAAap5B,UAEbq5C,EAAkB34C,OAAOC,eAEzB24C,EAA4B54C,OAAO+C,yBACnC81C,EAAa,aACbnb,EAAe,eACfob,EAAW,WAIftyC,EAAQgvB,EAAIgE,EAAcif,EAA0B,SAAwB/W,EAAG8G,EAAGuQ,GAIhF,GAHA7S,EAASxE,GACT8G,EAAI7T,EAAc6T,GAClBtC,EAAS6S,GACQ,mBAANrX,GAA0B,cAAN8G,GAAqB,UAAWuQ,GAAcD,KAAYC,IAAeA,EAAWD,GAAW,CAC5H,IAAIE,EAAUJ,EAA0BlX,EAAG8G,GACvCwQ,GAAWA,EAAQF,KACrBpX,EAAE8G,GAAKuQ,EAAW/1C,MAClB+1C,EAAa,CACXj5C,aAAc49B,KAAgBqb,EAAaA,EAAWrb,GAAgBsb,EAAQtb,GAC9E79B,WAAYg5C,KAAcE,EAAaA,EAAWF,GAAcG,EAAQH,GACxE94C,UAAU,GAGhB,CAAE,OAAO44C,EAAgBjX,EAAG8G,EAAGuQ,EACjC,EAAIJ,EAAkB,SAAwBjX,EAAG8G,EAAGuQ,GAIlD,GAHA7S,EAASxE,GACT8G,EAAI7T,EAAc6T,GAClBtC,EAAS6S,GACLL,EAAgB,IAClB,OAAOC,EAAgBjX,EAAG8G,EAAGuQ,EAC/B,CAAE,MAAOpxC,GAAqB,CAC9B,GAAI,QAASoxC,GAAc,QAASA,EAAY,MAAM,IAAIrgB,EAAW,2BAErE,MADI,UAAWqgB,IAAYrX,EAAE8G,GAAKuQ,EAAW/1C,OACtC0+B,CACT,qCC1CA,IAAIlI,EAAc,EAAQ,MACtB73B,EAAO,EAAQ,MACf+0C,EAA6B,EAAQ,MACrC3O,EAA2B,EAAQ,MACnC9E,EAAkB,EAAQ,MAC1BtO,EAAgB,EAAQ,MACxB8E,EAAS,EAAQ,MACjBif,EAAiB,EAAQ,MAGzBE,EAA4B54C,OAAO+C,yBAIvCyD,EAAQgvB,EAAIgE,EAAcof,EAA4B,SAAkClX,EAAG8G,GAGzF,GAFA9G,EAAIuB,EAAgBvB,GACpB8G,EAAI7T,EAAc6T,GACdkQ,EAAgB,IAClB,OAAOE,EAA0BlX,EAAG8G,EACtC,CAAE,MAAO7gC,GAAqB,CAC9B,GAAI8xB,EAAOiI,EAAG8G,GAAI,OAAOT,GAA0BpmC,EAAK+0C,EAA2BlhB,EAAGkM,EAAG8G,GAAI9G,EAAE8G,GACjG,oCCpBA,IAAI9O,EAAU,EAAQ,MAClBuJ,EAAkB,EAAQ,MAC1BgW,EAAuB,UACvB9b,EAAa,EAAQ,MAErB+b,EAA+B,iBAAVhxC,QAAsBA,QAAUlI,OAAO+qB,oBAC5D/qB,OAAO+qB,oBAAoB7iB,QAAU,GAWzCrB,EAAOL,QAAQgvB,EAAI,SAA6BvF,GAC9C,OAAOipB,GAA+B,WAAhBxf,EAAQzJ,GAVX,SAAUA,GAC7B,IACE,OAAOgpB,EAAqBhpB,EAC9B,CAAE,MAAOtoB,GACP,OAAOw1B,EAAW+b,EACpB,CACF,CAKMC,CAAelpB,GACfgpB,EAAqBhW,EAAgBhT,GAC3C,qCCtBA,IAAImpB,EAAqB,EAAQ,MAG7B5I,EAFc,EAAQ,MAEG7kC,OAAO,SAAU,aAK9CnF,EAAQgvB,EAAIx1B,OAAO+qB,qBAAuB,SAA6B2W,GACrE,OAAO0X,EAAmB1X,EAAG8O,EAC/B,mCCTAhqC,EAAQgvB,EAAIx1B,OAAO2d,yDCDnB,IAAI8b,EAAS,EAAQ,MACjBjB,EAAa,EAAQ,MACrB4I,EAAW,EAAQ,MACnBmP,EAAY,EAAQ,MACpB8I,EAA2B,EAAQ,MAEnC9B,EAAWhH,EAAU,YACrBxJ,EAAU/mC,OACVy6B,EAAkBsM,EAAQzmC,UAK9BuG,EAAOL,QAAU6yC,EAA2BtS,EAAQrmC,eAAiB,SAAUghC,GAC7E,IAAI/+B,EAASy+B,EAASM,GACtB,GAAIjI,EAAO92B,EAAQ40C,GAAW,OAAO50C,EAAO40C,GAC5C,IAAIr1C,EAAcS,EAAOT,YACzB,OAAIs2B,EAAWt2B,IAAgBS,aAAkBT,EACxCA,EAAY5B,UACZqC,aAAkBokC,EAAUtM,EAAkB,IACzD,qCCpBA,IAAI+B,EAAc,EAAQ,MAE1B31B,EAAOL,QAAUg2B,EAAY,CAAC,EAAErQ,kDCFhC,IAAIqQ,EAAc,EAAQ,MACtB/C,EAAS,EAAQ,MACjBwJ,EAAkB,EAAQ,MAC1Bv0B,EAAU,gBACV8hC,EAAa,EAAQ,KAErBltC,EAAOk5B,EAAY,GAAGl5B,MAE1BuD,EAAOL,QAAU,SAAU7D,EAAQkJ,GACjC,IAGI3L,EAHAwhC,EAAIuB,EAAgBtgC,GACpBjD,EAAI,EACJoC,EAAS,GAEb,IAAK5B,KAAOwhC,GAAIjI,EAAO+W,EAAYtwC,IAAQu5B,EAAOiI,EAAGxhC,IAAQoD,EAAKxB,EAAQ5B,GAE1E,KAAO2L,EAAMlM,OAASD,GAAO+5B,EAAOiI,EAAGxhC,EAAM2L,EAAMnM,SAChDgP,EAAQ5M,EAAQ5B,IAAQoD,EAAKxB,EAAQ5B,IAExC,OAAO4B,CACT,qCCnBA,IAAIs3C,EAAqB,EAAQ,MAC7BhC,EAAc,EAAQ,MAK1BvwC,EAAOL,QAAUxG,OAAOsM,MAAQ,SAAco1B,GAC5C,OAAO0X,EAAmB1X,EAAG0V,EAC/B,mCCRA,IAAIkC,EAAwB,CAAC,EAAExkB,qBAE3B/xB,EAA2B/C,OAAO+C,yBAGlCw2C,EAAcx2C,IAA6Bu2C,EAAsB33C,KAAK,CAAE,EAAG,GAAK,GAIpF6E,EAAQgvB,EAAI+jB,EAAc,SAA8BhL,GACtD,IAAI3uC,EAAamD,EAAyBd,KAAMssC,GAChD,QAAS3uC,GAAcA,EAAWC,UACpC,EAAIy5C,qCCXJ,IAAIE,EAAsB,EAAQ,MAC9BngB,EAAW,EAAQ,IACnBqO,EAAyB,EAAQ,MACjC+R,EAAqB,EAAQ,MAMjC5yC,EAAOL,QAAUxG,OAAOS,iBAAmB,aAAe,CAAC,EAAI,WAC7D,IAEI0nC,EAFAuR,GAAiB,EACjBrtC,EAAO,CAAC,EAEZ,KACE87B,EAASqR,EAAoBx5C,OAAOM,UAAW,YAAa,QACrD+L,EAAM,IACbqtC,EAAiBrtC,aAAgBnC,KACnC,CAAE,MAAOvC,GAAqB,CAC9B,OAAO,SAAwB+5B,EAAG/F,GAGhC,OAFA+L,EAAuBhG,GACvB+X,EAAmB9d,GACdtC,EAASqI,IACVgY,EAAgBvR,EAAOzG,EAAG/F,GACzB+F,EAAE9gC,UAAY+6B,EACZ+F,GAHkBA,CAI3B,CACF,CAjB+D,QAiBzD98B,sCC3BN,IAAIiiC,EAAwB,EAAQ,MAChCnN,EAAU,EAAQ,MAItB7yB,EAAOL,QAAUqgC,EAAwB,CAAC,EAAEt7B,SAAW,WACrD,MAAO,WAAamuB,EAAQz3B,MAAQ,GACtC,qCCPA,IAAIN,EAAO,EAAQ,MACf62B,EAAa,EAAQ,MACrBa,EAAW,EAAQ,IAEnBX,EAAap5B,UAIjBuH,EAAOL,QAAU,SAAU8V,EAAOq9B,GAChC,IAAIvT,EAAIt7B,EACR,GAAa,WAAT6uC,GAAqBnhB,EAAW4N,EAAK9pB,EAAM/Q,YAAc8tB,EAASvuB,EAAMnJ,EAAKykC,EAAI9pB,IAAS,OAAOxR,EACrG,GAAI0tB,EAAW4N,EAAK9pB,EAAM5a,WAAa23B,EAASvuB,EAAMnJ,EAAKykC,EAAI9pB,IAAS,OAAOxR,EAC/E,GAAa,WAAT6uC,GAAqBnhB,EAAW4N,EAAK9pB,EAAM/Q,YAAc8tB,EAASvuB,EAAMnJ,EAAKykC,EAAI9pB,IAAS,OAAOxR,EACrG,MAAM,IAAI4tB,EAAW,0CACvB,qCCdA,IAAI2W,EAAa,EAAQ,MACrB7S,EAAc,EAAQ,MACtBod,EAA4B,EAAQ,MACpCnD,EAA8B,EAAQ,MACtCvQ,EAAW,EAAQ,MAEnBv6B,EAAS6wB,EAAY,GAAG7wB,QAG5B9E,EAAOL,QAAU6oC,EAAW,UAAW,YAAc,SAAiBpf,GACpE,IAAI3jB,EAAOstC,EAA0BpkB,EAAE0Q,EAASjW,IAC5CtS,EAAwB84B,EAA4BjhB,EACxD,OAAO7X,EAAwBhS,EAAOW,EAAMqR,EAAsBsS,IAAO3jB,CAC3E,qCCbA,IAAI2V,EAAa,EAAQ,MAEzBpb,EAAOL,QAAUyb,iCCFjBpb,EAAOL,QAAU,SAAUwtB,GACzB,IACE,MAAO,CAAErsB,OAAO,EAAO3E,MAAOgxB,IAChC,CAAE,MAAOrsB,GACP,MAAO,CAAEA,OAAO,EAAM3E,MAAO2E,EAC/B,CACF,oCCNA,IAAIsa,EAAa,EAAQ,MACrB43B,EAA2B,EAAQ,KACnCrhB,EAAa,EAAQ,MACrB+S,EAAW,EAAQ,MACnB6E,EAAgB,EAAQ,MACxBrX,EAAkB,EAAQ,MAC1BiS,EAAc,EAAQ,MACtB+H,EAAU,EAAQ,MAClBlO,EAAa,EAAQ,MAErBiV,EAAyBD,GAA4BA,EAAyBv5C,UAC9EwkC,EAAU/L,EAAgB,WAC1BghB,GAAc,EACdC,EAAiCxhB,EAAWvW,EAAWg4B,uBAEvDC,EAA6B3O,EAAS,WAAW,WACnD,IAAI4O,EAA6B/J,EAAcyJ,GAC3CO,EAAyBD,IAA+B/pC,OAAOypC,GAInE,IAAKO,GAAyC,KAAfvV,EAAmB,OAAO,EAEzD,GAAIkO,KAAa+G,EAA8B,QAAKA,EAAgC,SAAI,OAAO,EAI/F,IAAKjV,GAAcA,EAAa,KAAO,cAAcx4B,KAAK8tC,GAA6B,CAErF,IAAI3uB,EAAU,IAAIquB,GAAyB,SAAU91C,GAAWA,EAAQ,EAAI,IACxEs2C,EAAc,SAAUrmB,GAC1BA,GAAK,WAA0B,IAAG,WAA0B,GAC9D,EAIA,IAHkBxI,EAAQtpB,YAAc,CAAC,GAC7B4iC,GAAWuV,IACvBN,EAAcvuB,EAAQxnB,MAAK,WAA0B,cAAcq2C,GACjD,OAAO,CAE3B,CAAE,QAAQD,GAA2C,YAAhBpP,GAA6C,SAAhBA,GAA4BgP,EAChG,IAEAnzC,EAAOL,QAAU,CACf8zC,YAAaJ,EACbK,gBAAiBP,EACjBD,YAAaA,qCC5Cf,IAAI93B,EAAa,EAAQ,MAEzBpb,EAAOL,QAAUyb,EAAWne,2CCF5B,IAAIoiC,EAAW,EAAQ,MACnB7M,EAAW,EAAQ,IACnBmhB,EAAuB,EAAQ,MAEnC3zC,EAAOL,QAAU,SAAUw1B,EAAGpa,GAE5B,GADAskB,EAASlK,GACL3C,EAASzX,IAAMA,EAAE1f,cAAgB85B,EAAG,OAAOpa,EAC/C,IAAI64B,EAAoBD,EAAqBhlB,EAAEwG,GAG/C,OADAj4B,EADc02C,EAAkB12C,SACxB6d,GACD64B,EAAkBjvB,OAC3B,oCCXA,IAAIquB,EAA2B,EAAQ,KACnCa,EAA8B,EAAQ,MACtCR,EAA6B,mBAEjCrzC,EAAOL,QAAU0zC,IAA+BQ,GAA4B,SAAU3I,GACpF8H,EAAyBnpC,IAAIqhC,GAAU/tC,UAAKY,GAAW,WAA0B,GACnF,uCCNA,IAAI3E,EAAiB,UAErB4G,EAAOL,QAAU,SAAUm0C,EAAQC,EAAQ16C,GACzCA,KAAOy6C,GAAU16C,EAAe06C,EAAQz6C,EAAK,CAC3CJ,cAAc,EACdyC,IAAK,WAAc,OAAOq4C,EAAO16C,EAAM,EACvC+K,IAAK,SAAUglB,GAAM2qB,EAAO16C,GAAO+vB,CAAI,GAE3C,iCCRA,IAAIilB,EAAQ,WACVjzC,KAAK6zC,KAAO,KACZ7zC,KAAK44C,KAAO,IACd,EAEA3F,EAAM50C,UAAY,CAChB81C,IAAK,SAAUrlC,GACb,IAAI+G,EAAQ,CAAE/G,KAAMA,EAAMhD,KAAM,MAC5B8sC,EAAO54C,KAAK44C,KACZA,EAAMA,EAAK9sC,KAAO+J,EACjB7V,KAAK6zC,KAAOh+B,EACjB7V,KAAK44C,KAAO/iC,CACd,EACAvV,IAAK,WACH,IAAIuV,EAAQ7V,KAAK6zC,KACjB,GAAIh+B,EAGF,OADa,QADF7V,KAAK6zC,KAAOh+B,EAAM/J,QACV9L,KAAK44C,KAAO,MACxB/iC,EAAM/G,IAEjB,GAGFlK,EAAOL,QAAU0uC,qCCvBjB,IAAIvzC,EAAO,EAAQ,MACfukC,EAAW,EAAQ,MACnB1N,EAAa,EAAQ,MACrBkB,EAAU,EAAQ,MAClBqS,EAAa,EAAQ,MAErBrT,EAAap5B,UAIjBuH,EAAOL,QAAU,SAAUs0C,EAAG5hB,GAC5B,IAAIlF,EAAO8mB,EAAE9mB,KACb,GAAIwE,EAAWxE,GAAO,CACpB,IAAIlyB,EAASH,EAAKqyB,EAAM8mB,EAAG5hB,GAE3B,OADe,OAAXp3B,GAAiBokC,EAASpkC,GACvBA,CACT,CACA,GAAmB,WAAf43B,EAAQohB,GAAiB,OAAOn5C,EAAKoqC,EAAY+O,EAAG5hB,GACxD,MAAM,IAAIR,EAAW,8CACvB,qCCjBA,IAoBMqiB,EACAC,EArBFr5C,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBjxB,EAAW,EAAQ,KACnB0vC,EAAc,EAAQ,MACtBC,EAAgB,EAAQ,MACxB5K,EAAS,EAAQ,MACjB9rC,EAAS,EAAQ,MACjB01B,EAAmB,YACnBihB,EAAsB,EAAQ,MAC9BC,EAAkB,EAAQ,MAE1BC,EAAgB/K,EAAO,wBAAyBlgC,OAAO9P,UAAU8G,SACjEk0C,EAAalvC,OAAO9L,UAAU0zB,KAC9BunB,EAAcD,EACdr6B,EAASub,EAAY,GAAGvb,QACxBvS,EAAU8tB,EAAY,GAAG9tB,SACzBtH,EAAUo1B,EAAY,GAAGp1B,SACzBw/B,EAAcpK,EAAY,GAAG54B,OAE7B43C,GAEER,EAAM,MACVr5C,EAAK25C,EAFDP,EAAM,IAEY,KACtBp5C,EAAK25C,EAAYN,EAAK,KACG,IAAlBD,EAAIU,WAAqC,IAAlBT,EAAIS,WAGhCC,EAAgBR,EAAcS,aAG9BC,OAAuCh3C,IAAvB,OAAOovB,KAAK,IAAI,IAExBwnB,GAA4BI,GAAiBF,GAAiBP,GAAuBC,KAG/FG,EAAc,SAAc3T,GAC1B,IAII9lC,EAAQ+5C,EAAQJ,EAAWp0C,EAAO3H,EAAGiD,EAAQ8N,EAJ7C67B,EAAKrqC,KACL2M,EAAQsrB,EAAiBoS,GACzBlwB,EAAM7Q,EAASq8B,GACfkU,EAAMltC,EAAMktC,IAGhB,GAAIA,EAIF,OAHAA,EAAIL,UAAYnP,EAAGmP,UACnB35C,EAASH,EAAK45C,EAAaO,EAAK1/B,GAChCkwB,EAAGmP,UAAYK,EAAIL,UACZ35C,EAGT,IAAIwO,EAAS1B,EAAM0B,OACfyrC,EAASL,GAAiBpP,EAAGyP,OAC7BxP,EAAQ5qC,EAAKs5C,EAAa3O,GAC1BhF,EAASgF,EAAGhF,OACZ0U,EAAa,EACbC,EAAU7/B,EA+Cd,GA7CI2/B,IACFxP,EAAQnlC,EAAQmlC,EAAO,IAAK,KACC,IAAzB79B,EAAQ69B,EAAO,OACjBA,GAAS,KAGX0P,EAAUrV,EAAYxqB,EAAKkwB,EAAGmP,WAE1BnP,EAAGmP,UAAY,KAAOnP,EAAG4P,WAAa5P,EAAG4P,WAA+C,OAAlCj7B,EAAO7E,EAAKkwB,EAAGmP,UAAY,MACnFnU,EAAS,OAASA,EAAS,IAC3B2U,EAAU,IAAMA,EAChBD,KAIFH,EAAS,IAAIzvC,OAAO,OAASk7B,EAAS,IAAKiF,IAGzCqP,IACFC,EAAS,IAAIzvC,OAAO,IAAMk7B,EAAS,WAAYiF,IAE7CiP,IAA0BC,EAAYnP,EAAGmP,WAE7Cp0C,EAAQ1F,EAAK25C,EAAYS,EAASF,EAASvP,EAAI2P,GAE3CF,EACE10C,GACFA,EAAMiV,MAAQsqB,EAAYv/B,EAAMiV,MAAO0/B,GACvC30C,EAAM,GAAKu/B,EAAYv/B,EAAM,GAAI20C,GACjC30C,EAAMH,MAAQolC,EAAGmP,UACjBnP,EAAGmP,WAAap0C,EAAM,GAAG1H,QACpB2sC,EAAGmP,UAAY,EACbD,GAA4Bn0C,IACrCilC,EAAGmP,UAAYnP,EAAGviB,OAAS1iB,EAAMH,MAAQG,EAAM,GAAG1H,OAAS87C,GAEzDG,GAAiBv0C,GAASA,EAAM1H,OAAS,GAG3CgC,EAAK05C,EAAeh0C,EAAM,GAAIw0C,GAAQ,WACpC,IAAKn8C,EAAI,EAAGA,EAAIyC,UAAUxC,OAAS,EAAGD,SACfkF,IAAjBzC,UAAUzC,KAAkB2H,EAAM3H,QAAKkF,EAE/C,IAGEyC,GAASiJ,EAEX,IADAjJ,EAAMiJ,OAAS3N,EAAS6B,EAAO,MAC1B9E,EAAI,EAAGA,EAAI4Q,EAAO3Q,OAAQD,IAE7BiD,GADA8N,EAAQH,EAAO5Q,IACF,IAAM2H,EAAMoJ,EAAM,IAInC,OAAOpJ,CACT,GAGFR,EAAOL,QAAU+0C,qCCnHjB,IAAIrV,EAAW,EAAQ,MAIvBr/B,EAAOL,QAAU,WACf,IAAIy9B,EAAOiC,EAASjkC,MAChBH,EAAS,GASb,OARImiC,EAAKkY,aAAYr6C,GAAU,KAC3BmiC,EAAKla,SAAQjoB,GAAU,KACvBmiC,EAAKmY,aAAYt6C,GAAU,KAC3BmiC,EAAKiY,YAAWp6C,GAAU,KAC1BmiC,EAAKoY,SAAQv6C,GAAU,KACvBmiC,EAAK9K,UAASr3B,GAAU,KACxBmiC,EAAKqY,cAAax6C,GAAU,KAC5BmiC,EAAK8X,SAAQj6C,GAAU,KACpBA,CACT,qCChBA,IAAIH,EAAO,EAAQ,MACf83B,EAAS,EAAQ,MACjBtN,EAAgB,EAAQ,MACxBowB,EAAc,EAAQ,MAEtBvQ,EAAkB5/B,OAAO9L,UAE7BuG,EAAOL,QAAU,SAAUs0C,GACzB,IAAIvO,EAAQuO,EAAEvO,MACd,YAAiB3nC,IAAV2nC,GAAyB,UAAWP,GAAqBvS,EAAOqhB,EAAG,WAAY3uB,EAAc6f,EAAiB8O,GAC1FvO,EAAvB5qC,EAAK46C,EAAazB,EACxB,qCCXA,IAAIne,EAAQ,EAAQ,MAIhB6f,EAHa,EAAQ,MAGApwC,OAErBsvC,EAAgB/e,GAAM,WACxB,IAAI2P,EAAKkQ,EAAQ,IAAK,KAEtB,OADAlQ,EAAGmP,UAAY,EACY,OAApBnP,EAAGtY,KAAK,OACjB,IAIIyoB,EAAgBf,GAAiB/e,GAAM,WACzC,OAAQ6f,EAAQ,IAAK,KAAKT,MAC5B,IAEIJ,EAAeD,GAAiB/e,GAAM,WAExC,IAAI2P,EAAKkQ,EAAQ,KAAM,MAEvB,OADAlQ,EAAGmP,UAAY,EACW,OAAnBnP,EAAGtY,KAAK,MACjB,IAEAntB,EAAOL,QAAU,CACfm1C,aAAcA,EACdc,cAAeA,EACff,cAAeA,sCC5BjB,IAAI/e,EAAQ,EAAQ,MAIhB6f,EAHa,EAAQ,MAGApwC,OAEzBvF,EAAOL,QAAUm2B,GAAM,WACrB,IAAI2P,EAAKkQ,EAAQ,IAAK,KACtB,QAASlQ,EAAG+P,QAAU/P,EAAGjgC,KAAK,OAAsB,MAAbigC,EAAGC,MAC5C,uCCTA,IAAI5P,EAAQ,EAAQ,MAIhB6f,EAHa,EAAQ,MAGApwC,OAEzBvF,EAAOL,QAAUm2B,GAAM,WACrB,IAAI2P,EAAKkQ,EAAQ,UAAW,KAC5B,MAAiC,MAA1BlQ,EAAGtY,KAAK,KAAK1jB,OAAOkiB,GACI,OAA7B,IAAIprB,QAAQklC,EAAI,QACpB,uCCVA,IAAI0B,EAAoB,EAAQ,MAE5BtV,EAAap5B,UAIjBuH,EAAOL,QAAU,SAAUypB,GACzB,GAAI+d,EAAkB/d,GAAK,MAAM,IAAIyI,EAAW,wBAA0BzI,GAC1E,OAAOA,CACT,qCCTA,IAAIhO,EAAa,EAAQ,MACrBuX,EAAc,EAAQ,MAGtBz2B,EAA2B/C,OAAO+C,yBAGtC8D,EAAOL,QAAU,SAAUd,GACzB,IAAK8zB,EAAa,OAAOvX,EAAWvc,GACpC,IAAI9F,EAAamD,EAAyBkf,EAAYvc,GACtD,OAAO9F,GAAcA,EAAWoD,KAClC,iCCRA6D,EAAOL,QAAUxG,OAAO08C,IAAM,SAAY96B,EAAG6T,GAE3C,OAAO7T,IAAM6T,EAAU,IAAN7T,GAAW,EAAIA,GAAM,EAAI6T,EAAI7T,GAAMA,GAAK6T,GAAMA,CACjE,qCCNA,IAAI4Z,EAAa,EAAQ,MACrBxV,EAAwB,EAAQ,MAChCd,EAAkB,EAAQ,MAC1BS,EAAc,EAAQ,MAEtBsL,EAAU/L,EAAgB,WAE9BlyB,EAAOL,QAAU,SAAUm2C,GACzB,IAAIt9C,EAAcgwC,EAAWsN,GAEzBnjB,GAAen6B,IAAgBA,EAAYylC,IAC7CjL,EAAsBx6B,EAAaylC,EAAS,CAC1ChlC,cAAc,EACdyC,IAAK,WAAc,OAAON,IAAM,GAGtC,oCChBA,IAAIhC,EAAiB,UACjBw5B,EAAS,EAAQ,MAGjBiB,EAFkB,EAAQ,KAEV3B,CAAgB,eAEpClyB,EAAOL,QAAU,SAAUhH,EAAQo9C,EAAKhR,GAClCpsC,IAAWosC,IAAQpsC,EAASA,EAAOc,WACnCd,IAAWi6B,EAAOj6B,EAAQk7B,IAC5Bz6B,EAAeT,EAAQk7B,EAAe,CAAE56B,cAAc,EAAMkD,MAAO45C,GAEvE,qCCXA,IAAItM,EAAS,EAAQ,MACjBxW,EAAM,EAAQ,MAEdxtB,EAAOgkC,EAAO,QAElBzpC,EAAOL,QAAU,SAAUtG,GACzB,OAAOoM,EAAKpM,KAASoM,EAAKpM,GAAO45B,EAAI55B,GACvC,qCCPA,IAAI6yC,EAAU,EAAQ,MAClB9wB,EAAa,EAAQ,MACrBmmB,EAAuB,EAAQ,MAE/ByU,EAAS,qBACTvd,EAAQz4B,EAAOL,QAAUyb,EAAW46B,IAAWzU,EAAqByU,EAAQ,CAAC,IAEhFvd,EAAM4L,WAAa5L,EAAM4L,SAAW,KAAK5nC,KAAK,CAC7C+rB,QAAS,SACTzV,KAAMm5B,EAAU,OAAS,SACzB+J,UAAW,4CACXC,QAAS,2DACTzV,OAAQ,2ECZV,IAAIhI,EAAQ,EAAQ,MAEpBz4B,EAAOL,QAAU,SAAUtG,EAAK8C,GAC9B,OAAOs8B,EAAMp/B,KAASo/B,EAAMp/B,GAAO8C,GAAS,CAAC,EAC/C,qCCJA,IAAIkjC,EAAW,EAAQ,MACnB8W,EAAe,EAAQ,MACvBhP,EAAoB,EAAQ,MAG5BlJ,EAFkB,EAAQ,KAEhB/L,CAAgB,WAI9BlyB,EAAOL,QAAU,SAAUk7B,EAAGub,GAC5B,IACI/jB,EADA8C,EAAIkK,EAASxE,GAAGx/B,YAEpB,YAAa0C,IAANo3B,GAAmBgS,EAAkB9U,EAAIgN,EAASlK,GAAG8I,IAAYmY,EAAqBD,EAAa9jB,EAC5G,qCCbA,IAAIyD,EAAQ,EAAQ,MAIpB91B,EAAOL,QAAU,SAAUu+B,GACzB,OAAOpI,GAAM,WACX,IAAItwB,EAAO,GAAG04B,GAAa,KAC3B,OAAO14B,IAASA,EAAK/D,eAAiB+D,EAAKH,MAAM,KAAKvM,OAAS,CACjE,GACF,qCCTA,IAAI68B,EAAc,EAAQ,MACtBK,EAAsB,EAAQ,MAC9BtxB,EAAW,EAAQ,KACnBm8B,EAAyB,EAAQ,MAEjCzmB,EAASub,EAAY,GAAGvb,QACxBxU,EAAa+vB,EAAY,GAAG/vB,YAC5Bm6B,EAAcpK,EAAY,GAAG54B,OAE7Bs/B,EAAe,SAAUga,GAC3B,OAAO,SAAU9Z,EAAO+Z,GACtB,IAGIC,EAAOC,EAHPnkB,EAAI3tB,EAASm8B,EAAuBtE,IACpCwL,EAAW/R,EAAoBsgB,GAC/BG,EAAOpkB,EAAEv5B,OAEb,OAAIivC,EAAW,GAAKA,GAAY0O,EAAaJ,EAAoB,QAAKt4C,GACtEw4C,EAAQ3wC,EAAWysB,EAAG0V,IACP,OAAUwO,EAAQ,OAAUxO,EAAW,IAAM0O,IACtDD,EAAS5wC,EAAWysB,EAAG0V,EAAW,IAAM,OAAUyO,EAAS,MAC3DH,EACEj8B,EAAOiY,EAAG0V,GACVwO,EACFF,EACEtW,EAAY1N,EAAG0V,EAAUA,EAAW,GACVyO,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,KACvD,CACF,EAEAv2C,EAAOL,QAAU,CAGf+2C,OAAQra,GAAa,GAGrBjiB,OAAQiiB,GAAa,uCCjCvB,IAAI1G,EAAc,EAAQ,MAEtBghB,EAAS,WASTC,EAAgB,eAChBC,EAAkB,yBAClBC,EAAiB,kDAGjBC,EAAc7vB,WACdiG,EAAOwI,EAAYkhB,EAAgB1pB,MACnC9S,EAAQxU,KAAKwU,MACb4L,EAAe1c,OAAO0c,aACtBrgB,EAAa+vB,EAAY,GAAG/vB,YAC5BT,EAAOwwB,EAAY,GAAGxwB,MACtB1I,EAAOk5B,EAAY,GAAGl5B,MACtB8D,EAAUo1B,EAAY,GAAGp1B,SACzB8E,EAAQswB,EAAY,GAAGtwB,OACvB5D,EAAck0B,EAAY,GAAGl0B,aAoC7Bu1C,EAAe,SAAUC,GAG3B,OAAOA,EAAQ,GAAK,IAAMA,EAAQ,GACpC,EAMIC,EAAQ,SAAUC,EAAOC,EAAWC,GACtC,IAAI7qB,EAAI,EAGR,IAFA2qB,EAAQE,EAAYh9B,EAAM88B,EAlEjB,KAkEiCA,GAAS,EACnDA,GAAS98B,EAAM88B,EAAQC,GAChBD,EAAQG,KACbH,EAAQ98B,EAAM88B,EA9DEt7C,IA+DhB2wB,GA1EO,GA4ET,OAAOnS,EAAMmS,EAAI,GAAsB2qB,GAASA,EAzEvC,IA0EX,EAMI96B,EAAS,SAAU5G,GACrB,IAAI8hC,EAAS,GAGb9hC,EAxDe,SAAUsrB,GAIzB,IAHA,IAAIwW,EAAS,GACTC,EAAU,EACV1+C,EAASioC,EAAOjoC,OACb0+C,EAAU1+C,GAAQ,CACvB,IAAIqD,EAAQyJ,EAAWm7B,EAAQyW,KAC/B,GAAIr7C,GAAS,OAAUA,GAAS,OAAUq7C,EAAU1+C,EAAQ,CAE1D,IAAI2+C,EAAQ7xC,EAAWm7B,EAAQyW,KACN,QAAZ,MAARC,GACHh7C,EAAK86C,IAAkB,KAARp7C,IAAkB,KAAe,KAARs7C,GAAiB,QAIzDh7C,EAAK86C,EAAQp7C,GACbq7C,IAEJ,MACE/6C,EAAK86C,EAAQp7C,EAEjB,CACA,OAAOo7C,CACT,CAkCUG,CAAWjiC,GAGnB,IAMI5c,EAAG8+C,EANHC,EAAcniC,EAAM3c,OAGpBk0B,EAvFS,IAwFTmqB,EAAQ,EACRU,EA1FY,GA8FhB,IAAKh/C,EAAI,EAAGA,EAAI4c,EAAM3c,OAAQD,KAC5B8+C,EAAeliC,EAAM5c,IACF,KACjB4D,EAAK86C,EAAQtxB,EAAa0xB,IAI9B,IAAIG,EAAcP,EAAOz+C,OACrBi/C,EAAiBD,EAQrB,IALIA,GACFr7C,EAAK86C,EAxGO,KA4GPQ,EAAiBH,GAAa,CAEnC,IAAI51C,EAAI20C,EACR,IAAK99C,EAAI,EAAGA,EAAI4c,EAAM3c,OAAQD,KAC5B8+C,EAAeliC,EAAM5c,KACDm0B,GAAK2qB,EAAe31C,IACtCA,EAAI21C,GAKR,IAAIK,EAAwBD,EAAiB,EAC7C,GAAI/1C,EAAIgrB,EAAI3S,GAAOs8B,EAASQ,GAASa,GACnC,MAAM,IAAIjB,EAAYD,GAMxB,IAHAK,IAAUn1C,EAAIgrB,GAAKgrB,EACnBhrB,EAAIhrB,EAECnJ,EAAI,EAAGA,EAAI4c,EAAM3c,OAAQD,IAAK,CAEjC,IADA8+C,EAAeliC,EAAM5c,IACFm0B,KAAOmqB,EAAQR,EAChC,MAAM,IAAII,EAAYD,GAExB,GAAIa,IAAiB3qB,EAAG,CAItB,IAFA,IAAIirB,EAAId,EACJ3qB,EA9ID,KA+IU,CACX,IAAI3V,EAAI2V,GAAKqrB,EA/IZ,EA+I0BrrB,GAAKqrB,EA9I/B,MA8IoDrrB,EAAIqrB,EACzD,GAAII,EAAIphC,EAAG,MACX,IAAIqhC,EAAUD,EAAIphC,EACdshC,EAnJH,GAmJuBthC,EACxBpa,EAAK86C,EAAQtxB,EAAa+wB,EAAangC,EAAIqhC,EAAUC,KACrDF,EAAI59B,EAAM69B,EAAUC,GACpB3rB,GAtJC,EAuJH,CAEA/vB,EAAK86C,EAAQtxB,EAAa+wB,EAAaiB,KACvCJ,EAAOX,EAAMC,EAAOa,EAAuBD,IAAmBD,GAC9DX,EAAQ,EACRY,GACF,CACF,CAEAZ,IACAnqB,GACF,CACA,OAAO7nB,EAAKoyC,EAAQ,GACtB,EAEAv3C,EAAOL,QAAU,SAAU8V,GACzB,IAEI5c,EAAGu/C,EAFHC,EAAU,GACVC,EAASjzC,EAAM9E,EAAQkB,EAAYgU,GAAQohC,EAAiB,KAAW,KAE3E,IAAKh+C,EAAI,EAAGA,EAAIy/C,EAAOx/C,OAAQD,IAC7Bu/C,EAAQE,EAAOz/C,GACf4D,EAAK47C,EAASlrB,EAAKypB,EAAewB,GAAS,OAAS/7B,EAAO+7B,GAASA,GAEtE,OAAOjzC,EAAKkzC,EAAS,IACvB,oCCnLA,IAAI3hB,EAAuB,cACvBZ,EAAQ,EAAQ,MAChByiB,EAAc,EAAQ,MAM1Bv4C,EAAOL,QAAU,SAAUu+B,GACzB,OAAOpI,GAAM,WACX,QAASyiB,EAAYra,MANf,cAOGA,MACHxH,GAAwB6hB,EAAYra,GAAar/B,OAASq/B,CAClE,GACF,qCCdA,IAAIvI,EAAc,EAAQ,MACtBkL,EAAyB,EAAQ,MACjCn8B,EAAW,EAAQ,KACnB6zC,EAAc,EAAQ,MAEtBh4C,EAAUo1B,EAAY,GAAGp1B,SACzBi4C,EAAQjzC,OAAO,KAAOgzC,EAAc,MACpCE,EAAQlzC,OAAO,QAAUgzC,EAAc,MAAQA,EAAc,OAG7Dlc,EAAe,SAAUO,GAC3B,OAAO,SAAUL,GACf,IAAIwE,EAASr8B,EAASm8B,EAAuBtE,IAG7C,OAFW,EAAPK,IAAUmE,EAASxgC,EAAQwgC,EAAQyX,EAAO,KACnC,EAAP5b,IAAUmE,EAASxgC,EAAQwgC,EAAQ0X,EAAO,OACvC1X,CACT,CACF,EAEA/gC,EAAOL,QAAU,CAGfi5B,MAAOyD,EAAa,GAGpBvB,IAAKuB,EAAa,GAGlB7yB,KAAM6yB,EAAa,uCC3BrB,IAAI2B,EAAa,EAAQ,MACrBlI,EAAQ,EAAQ,MAGhB7D,EAFa,EAAQ,MAEA1oB,OAGzBvJ,EAAOL,UAAYxG,OAAO2d,wBAA0Bgf,GAAM,WACxD,IAAIma,EAAS/wC,OAAO,oBAKpB,OAAQ+yB,EAAQge,MAAa92C,OAAO82C,aAAmB/wC,UAEpDA,OAAOxE,MAAQsjC,GAAcA,EAAa,EAC/C,uCCjBA,IAAIljC,EAAO,EAAQ,MACf0tC,EAAa,EAAQ,MACrBtW,EAAkB,EAAQ,MAC1Ba,EAAgB,EAAQ,MAE5B/yB,EAAOL,QAAU,WACf,IAAIT,EAASspC,EAAW,UACpBkQ,EAAkBx5C,GAAUA,EAAOzF,UACnCoB,EAAU69C,GAAmBA,EAAgB79C,QAC7C89C,EAAezmB,EAAgB,eAE/BwmB,IAAoBA,EAAgBC,IAItC5lB,EAAc2lB,EAAiBC,GAAc,SAAUC,GACrD,OAAO99C,EAAKD,EAASO,KACvB,GAAG,CAAEmyC,MAAO,GAEhB,qCCnBA,IAAIsL,EAAgB,EAAQ,MAG5B74C,EAAOL,QAAUk5C,KAAmB35C,OAAY,OAAOA,OAAO45C,0CCH9D,IAuBIC,EAAWC,EAAOC,EAASC,EAvB3B99B,EAAa,EAAQ,MACrB7f,EAAQ,EAAQ,MAChBzB,EAAO,EAAQ,MACf63B,EAAa,EAAQ,MACrBiB,EAAS,EAAQ,MACjBkD,EAAQ,EAAQ,MAChB0a,EAAO,EAAQ,KACfla,EAAa,EAAQ,MACrBuL,EAAgB,EAAQ,MACxBsX,EAA0B,EAAQ,MAClC7K,EAAS,EAAQ,MACjBG,EAAU,EAAQ,MAElBrqC,EAAMgX,EAAWg+B,aACjBC,EAAQj+B,EAAWk+B,eACnBp4C,EAAUka,EAAWla,QACrBq4C,EAAWn+B,EAAWm+B,SACtBxrB,EAAW3S,EAAW2S,SACtByrB,EAAiBp+B,EAAWo+B,eAC5BjwC,EAAS6R,EAAW7R,OACpBiuC,EAAU,EACV3I,EAAQ,CAAC,EACT4K,EAAqB,qBAGzB3jB,GAAM,WAEJijB,EAAY39B,EAAW/F,QACzB,IAEA,IAAIqkC,EAAM,SAAUrxC,GAClB,GAAIuqB,EAAOic,EAAOxmC,GAAK,CACrB,IAAIk3B,EAAKsP,EAAMxmC,UACRwmC,EAAMxmC,GACbk3B,GACF,CACF,EAEIoa,EAAS,SAAUtxC,GACrB,OAAO,WACLqxC,EAAIrxC,EACN,CACF,EAEIuxC,EAAgB,SAAU/8C,GAC5B68C,EAAI78C,EAAM+T,KACZ,EAEIipC,EAAyB,SAAUxxC,GAErC+S,EAAWmG,YAAYhY,EAAOlB,GAAK0wC,EAAUe,SAAW,KAAOf,EAAUgB,KAC3E,EAGK31C,GAAQi1C,IACXj1C,EAAM,SAAsB41C,GAC1Bb,EAAwB79C,UAAUxC,OAAQ,GAC1C,IAAIymC,EAAK5N,EAAWqoB,GAAWA,EAAUjsB,EAASisB,GAC9Cn6C,EAAOy2B,EAAWh7B,UAAW,GAKjC,OAJAuzC,IAAQ2I,GAAW,WACjBj8C,EAAMgkC,OAAIxhC,EAAW8B,EACvB,EACAm5C,EAAMxB,GACCA,CACT,EACA6B,EAAQ,SAAwBhxC,UACvBwmC,EAAMxmC,EACf,EAEIomC,EACFuK,EAAQ,SAAU3wC,GAChBnH,EAAQiuC,SAASwK,EAAOtxC,GAC1B,EAESkxC,GAAYA,EAAStnC,IAC9B+mC,EAAQ,SAAU3wC,GAChBkxC,EAAStnC,IAAI0nC,EAAOtxC,GACtB,EAGSmxC,IAAmBlL,GAE5B4K,GADAD,EAAU,IAAIO,GACCS,MACfhB,EAAQiB,MAAMC,UAAYP,EAC1BZ,EAAQl/C,EAAKo/C,EAAK33B,YAAa23B,IAI/B99B,EAAWyF,kBACX8Q,EAAWvW,EAAWmG,eACrBnG,EAAWg/B,eACZrB,GAAoC,UAAvBA,EAAUe,WACtBhkB,EAAM+jB,IAEPb,EAAQa,EACRz+B,EAAWyF,iBAAiB,UAAW+4B,GAAe,IAGtDZ,EADSS,KAAsB5X,EAAc,UACrC,SAAUx5B,GAChBmoC,EAAKiB,YAAY5P,EAAc,WAAW4X,GAAsB,WAC9DjJ,EAAK6J,YAAYj/C,MACjBs+C,EAAIrxC,EACN,CACF,EAGQ,SAAUA,GAChBiyC,WAAWX,EAAOtxC,GAAK,EACzB,GAIJrI,EAAOL,QAAU,CACfyE,IAAKA,EACLi1C,MAAOA,sCClHT,IAAI1jB,EAAc,EAAQ,MAI1B31B,EAAOL,QAAUg2B,EAAY,GAAI96B,4CCJjC,IAAIm7B,EAAsB,EAAQ,MAE9BukB,EAAM10C,KAAK00C,IACX5f,EAAM90B,KAAK80B,IAKf36B,EAAOL,QAAU,SAAUU,EAAOvH,GAChC,IAAI0hD,EAAUxkB,EAAoB31B,GAClC,OAAOm6C,EAAU,EAAID,EAAIC,EAAU1hD,EAAQ,GAAK6hC,EAAI6f,EAAS1hD,EAC/D,qCCXA,IAAIq4B,EAAc,EAAQ,MAEtBU,EAAap5B,UAIjBuH,EAAOL,QAAU,SAAUmyB,GACzB,IAAI2oB,EAAOtpB,EAAYW,EAAU,UACjC,GAAmB,iBAAR2oB,EAAkB,MAAM,IAAI5oB,EAAW,kCAElD,OAAO6oB,OAAOD,EAChB,qCCXA,IAAIzkB,EAAsB,EAAQ,MAC9BC,EAAW,EAAQ,MAEnB8gB,EAAc7vB,WAIlBlnB,EAAOL,QAAU,SAAUypB,GACzB,QAAWrrB,IAAPqrB,EAAkB,OAAO,EAC7B,IAAI6O,EAASjC,EAAoB5M,GAC7BtwB,EAASm9B,EAASgC,GACtB,GAAIA,IAAWn/B,EAAQ,MAAM,IAAIi+C,EAAY,yBAC7C,OAAOj+C,CACT,qCCZA,IAAI4jC,EAAgB,EAAQ,MACxBmE,EAAyB,EAAQ,MAErC7gC,EAAOL,QAAU,SAAUypB,GACzB,OAAOsT,EAAcmE,EAAuBzX,GAC9C,qCCNA,IAAI4kB,EAAQ,EAAQ,KAIpBhuC,EAAOL,QAAU,SAAUmyB,GACzB,IAAImG,GAAUnG,EAEd,OAAOmG,GAAWA,GAAqB,IAAXA,EAAe,EAAI+V,EAAM/V,EACvD,qCCRA,IAAIjC,EAAsB,EAAQ,MAE9B2E,EAAM90B,KAAK80B,IAIf36B,EAAOL,QAAU,SAAUmyB,GACzB,IAAIxsB,EAAM0wB,EAAoBlE,GAC9B,OAAOxsB,EAAM,EAAIq1B,EAAIr1B,EAAK,kBAAoB,CAChD,qCCTA,IAAIu7B,EAAyB,EAAQ,MAEjCX,EAAU/mC,OAId6G,EAAOL,QAAU,SAAUmyB,GACzB,OAAOoO,EAAQW,EAAuB/O,GACxC,qCCRA,IAAI6oB,EAAoB,EAAQ,MAE5B5D,EAAc7vB,WAElBlnB,EAAOL,QAAU,SAAUypB,EAAIwxB,GAC7B,IAAI1vB,EAASyvB,EAAkBvxB,GAC/B,GAAI8B,EAAS0vB,EAAO,MAAM,IAAI7D,EAAY,gBAC1C,OAAO7rB,CACT,qCCRA,IAAI8K,EAAsB,EAAQ,MAE9B+gB,EAAc7vB,WAElBlnB,EAAOL,QAAU,SAAUypB,GACzB,IAAInuB,EAAS+6B,EAAoB5M,GACjC,GAAInuB,EAAS,EAAG,MAAM,IAAI87C,EAAY,qCACtC,OAAO97C,CACT,qCCRA,IAAIH,EAAO,EAAQ,MACf03B,EAAW,EAAQ,IACnBqoB,EAAW,EAAQ,KACnB3T,EAAY,EAAQ,MACpB4T,EAAsB,EAAQ,MAC9B5oB,EAAkB,EAAQ,MAE1BL,EAAap5B,UACbkgD,EAAezmB,EAAgB,eAInClyB,EAAOL,QAAU,SAAU8V,EAAOq9B,GAChC,IAAKtgB,EAAS/c,IAAUolC,EAASplC,GAAQ,OAAOA,EAChD,IACIxa,EADA8/C,EAAe7T,EAAUzxB,EAAOkjC,GAEpC,GAAIoC,EAAc,CAGhB,QAFah9C,IAAT+0C,IAAoBA,EAAO,WAC/B73C,EAASH,EAAKigD,EAActlC,EAAOq9B,IAC9BtgB,EAASv3B,IAAW4/C,EAAS5/C,GAAS,OAAOA,EAClD,MAAM,IAAI42B,EAAW,0CACvB,CAEA,YADa9zB,IAAT+0C,IAAoBA,EAAO,UACxBgI,EAAoBrlC,EAAOq9B,EACpC,qCCxBA,IAAI3hB,EAAc,EAAQ,MACtB0pB,EAAW,EAAQ,KAIvB76C,EAAOL,QAAU,SAAUmyB,GACzB,IAAIz4B,EAAM83B,EAAYW,EAAU,UAChC,OAAO+oB,EAASxhD,GAAOA,EAAMA,EAAM,EACrC,qCCRA,IAGImM,EAAO,CAAC,EAEZA,EALsB,EAAQ,KAEV0sB,CAAgB,gBAGd,IAEtBlyB,EAAOL,QAA2B,eAAjB4J,OAAO/D,qCCPxB,IAAIqtB,EAAU,EAAQ,MAElBZ,EAAU1oB,OAEdvJ,EAAOL,QAAU,SAAUmyB,GACzB,GAA0B,WAAtBe,EAAQf,GAAwB,MAAM,IAAIr5B,UAAU,6CACxD,OAAOw5B,EAAQH,EACjB,iCCPA,IAAI5E,EAAQrnB,KAAKqnB,MAEjBltB,EAAOL,QAAU,SAAUypB,GACzB,IAAIjtB,EAAQ+wB,EAAM9D,GAClB,OAAOjtB,EAAQ,EAAI,EAAIA,EAAQ,IAAO,IAAe,IAARA,CAC/C,iCCLA,IAAI81B,EAAU1oB,OAEdvJ,EAAOL,QAAU,SAAUmyB,GACzB,IACE,OAAOG,EAAQH,EACjB,CAAE,MAAOhxB,GACP,MAAO,QACT,CACF,qCCRA,IAAImrC,EAAI,EAAQ,MACZ7wB,EAAa,EAAQ,MACrBtgB,EAAO,EAAQ,MACf63B,EAAc,EAAQ,MACtBqoB,EAA8C,EAAQ,MACtDC,EAAsB,EAAQ,MAC9BC,EAAoB,EAAQ,MAC5BnlB,EAAa,EAAQ,KACrBmL,EAA2B,EAAQ,MACnCpO,EAA8B,EAAQ,MACtCqoB,EAAmB,EAAQ,MAC3BllB,EAAW,EAAQ,MACnBC,EAAU,EAAQ,MAClBklB,EAAW,EAAQ,MACnBC,EAAiB,EAAQ,MACzBvtB,EAAgB,EAAQ,MACxB8E,EAAS,EAAQ,MACjBC,EAAU,EAAQ,MAClBL,EAAW,EAAQ,IACnBqoB,EAAW,EAAQ,KACnBl9C,EAAS,EAAQ,MACjB2nB,EAAgB,EAAQ,MACxB1rB,EAAiB,EAAQ,MACzBsqB,EAAsB,UACtBo3B,EAAiB,EAAQ,MACzB51C,EAAU,gBACV61C,EAAa,EAAQ,MACrBvoB,EAAwB,EAAQ,MAChCwN,EAAuB,EAAQ,MAC/BD,EAAiC,EAAQ,MACzCib,EAA8B,EAAQ,MACtCtoB,EAAsB,EAAQ,MAC9BqD,EAAoB,EAAQ,MAE5BlD,EAAmBH,EAAoBx3B,IACvC27B,EAAmBnE,EAAoB9uB,IACvC+uB,EAAuBD,EAAoBE,QAC3CqoB,EAAuBjb,EAAqB7R,EAC5C+sB,EAAiCnb,EAA+B5R,EAChEzH,EAAa9L,EAAW8L,WACxBzD,EAAcy3B,EAAkBz3B,YAChC+T,EAAuB/T,EAAYhqB,UACnCksB,EAAWu1B,EAAkBv1B,SAC7BqO,EAA4BinB,EAAoBjnB,0BAChDF,EAAkBmnB,EAAoBnnB,gBACtCJ,EAAaunB,EAAoBvnB,WACjCC,EAAsBsnB,EAAoBtnB,oBAC1CoB,EAAekmB,EAAoBlmB,aACnC4mB,EAAoB,oBACpBC,EAAe,eAEfrjB,EAAY,SAAUnP,EAAI/vB,GAC5B25B,EAAsB5J,EAAI/vB,EAAK,CAC7BJ,cAAc,EACdyC,IAAK,WACH,OAAO23B,EAAiBj4B,MAAM/B,EAChC,GAEJ,EAEIwiD,EAAgB,SAAUzyB,GAC5B,IAAI4L,EACJ,OAAO1P,EAAckS,EAAsBpO,IAAiC,iBAAzB4L,EAAQnC,EAAQzJ,KAAoC,sBAAV4L,CAC/F,EAEI8mB,GAAoB,SAAUnjD,EAAQU,GACxC,OAAO07B,EAAap8B,KACdkiD,EAASxhD,IACVA,KAAOV,GACPwiD,GAAkB9hD,IAClBA,GAAO,CACd,EAEI0iD,GAAkC,SAAkCpjD,EAAQU,GAE9E,OADAA,EAAMy0B,EAAcz0B,GACbyiD,GAAkBnjD,EAAQU,GAC7B6nC,EAAyB,EAAGvoC,EAAOU,IACnCqiD,EAA+B/iD,EAAQU,EAC7C,EAEI2iD,GAAwB,SAAwBrjD,EAAQU,EAAKN,GAE/D,OADAM,EAAMy0B,EAAcz0B,KAChByiD,GAAkBnjD,EAAQU,IACzBm5B,EAASz5B,IACT65B,EAAO75B,EAAY,WAClB65B,EAAO75B,EAAY,QACnB65B,EAAO75B,EAAY,QAEnBA,EAAWE,cACV25B,EAAO75B,EAAY,cAAeA,EAAWG,UAC7C05B,EAAO75B,EAAY,gBAAiBA,EAAWC,WAI7CyiD,EAAqB9iD,EAAQU,EAAKN,IAFzCJ,EAAOU,GAAON,EAAWoD,MAClBxD,EAEX,EAEIg6B,GACGqB,IACHuM,EAA+B5R,EAAIotB,GACnCvb,EAAqB7R,EAAIqtB,GACzBzjB,EAAU5E,EAAqB,UAC/B4E,EAAU5E,EAAqB,cAC/B4E,EAAU5E,EAAqB,cAC/B4E,EAAU5E,EAAqB,WAGjCsY,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAAStB,GAA6B,CACtE93B,yBAA0B6/C,GAC1B3iD,eAAgB4iD,KAGlBh8C,EAAOL,QAAU,SAAUi9B,EAAMqf,EAASC,GACxC,IAAItB,EAAQhe,EAAKp8B,MAAM,OAAO,GAAK,EAC/Bs1C,EAAmBlZ,GAAQsf,EAAU,UAAY,IAAM,QACvDC,EAAS,MAAQvf,EACjBwf,EAAS,MAAQxf,EACjByf,EAA8BjhC,EAAW06B,GACzCtgB,EAAwB6mB,EACxBC,EAAiC9mB,GAAyBA,EAAsB/7B,UAChF8iD,EAAW,CAAC,EAYZC,EAAa,SAAUpf,EAAM/8B,GAC/Bo7C,EAAqBre,EAAM/8B,EAAO,CAChC3E,IAAK,WACH,OAbO,SAAU0hC,EAAM/8B,GAC3B,IAAIuQ,EAAOyiB,EAAiB+J,GAC5B,OAAOxsB,EAAKmU,KAAKo3B,GAAQ97C,EAAQu6C,EAAQhqC,EAAKioB,YAAY,EAC5D,CAUawI,CAAOjmC,KAAMiF,EACtB,EACA+D,IAAK,SAAUjI,GACb,OAXO,SAAUihC,EAAM/8B,EAAOlE,GAClC,IAAIyU,EAAOyiB,EAAiB+J,GAC5BxsB,EAAKmU,KAAKq3B,GAAQ/7C,EAAQu6C,EAAQhqC,EAAKioB,WAAYqjB,EAAUb,EAAel/C,GAASA,GAAO,EAC9F,CAQamlC,CAAOlmC,KAAMiF,EAAOlE,EAC7B,EACAnD,YAAY,GAEhB,EAEKg7B,EAwCMgnB,IACTxlB,EAAwBymB,GAAQ,SAAU7S,EAAOx4B,EAAM6rC,EAAkBlhB,GAEvE,OADAxF,EAAWqT,EAAOkT,GACX/lB,EACA/D,EAAS5hB,GACVirC,EAAcjrC,QAA0B7S,IAAZw9B,EAC5B,IAAI8gB,EAA4BzrC,EAAMwqC,EAASqB,EAAkB7B,GAAQrf,QACpDx9B,IAArB0+C,EACE,IAAIJ,EAA4BzrC,EAAMwqC,EAASqB,EAAkB7B,IACjE,IAAIyB,EAA4BzrC,GAClCmkB,EAAankB,GAAc4qC,EAA4BhmB,EAAuB5kB,GAC3E9V,EAAKwgD,EAAgB9lB,EAAuB5kB,GAPvB,IAAIyrC,EAA4BnmB,EAAQtlB,IAQjEw4B,EAAO5T,EACd,IAEI57B,GAAgBA,EAAe47B,EAAuB9B,GAC1DhuB,EAAQwe,EAAoBm4B,IAA8B,SAAUhjD,GAC5DA,KAAOm8B,GACX1C,EAA4B0C,EAAuBn8B,EAAKgjD,EAA4BhjD,GAExF,IACAm8B,EAAsB/7B,UAAY6iD,IA5DlC9mB,EAAwBymB,GAAQ,SAAU7e,EAAMxsB,EAAMsa,EAAQqQ,GAC5DxF,EAAWqH,EAAMkf,GACjB,IAEIr3B,EAAQD,EAAYlsB,EAFpBuH,EAAQ,EACRw4B,EAAa,EAEjB,GAAKrG,EAAS5hB,GAIP,KAAIirC,EAAcjrC,GAalB,OAAImkB,EAAankB,GACf4qC,EAA4BhmB,EAAuB5kB,GAEnD9V,EAAKwgD,EAAgB9lB,EAAuB5kB,GAfnDqU,EAASrU,EACTioB,EAAauiB,EAASlwB,EAAQ0vB,GAC9B,IAAI8B,EAAO9rC,EAAKoU,WAChB,QAAgBjnB,IAAZw9B,EAAuB,CACzB,GAAImhB,EAAO9B,EAAO,MAAM,IAAI1zB,EAAW00B,GAEvC,IADA52B,EAAa03B,EAAO7jB,GACH,EAAG,MAAM,IAAI3R,EAAW00B,EAC3C,MAEE,IADA52B,EAAaiR,EAASsF,GAAWqf,GAChB/hB,EAAa6jB,EAAM,MAAM,IAAIx1B,EAAW00B,GAE3D9iD,EAASksB,EAAa41B,CAKxB,MApBE9hD,EAASo9B,EAAQtlB,GAEjBqU,EAAS,IAAIxB,EADbuB,EAAalsB,EAAS8hD,GA2BxB,IAPAvjB,EAAiB+F,EAAM,CACrBnY,OAAQA,EACR4T,WAAYA,EACZ7T,WAAYA,EACZlsB,OAAQA,EACRisB,KAAM,IAAIY,EAASV,KAEd5kB,EAAQvH,GAAQ0jD,EAAWpf,EAAM/8B,IAC1C,IAEIzG,GAAgBA,EAAe47B,EAAuB9B,GAC1D4oB,EAAiC9mB,EAAsB/7B,UAAYkE,EAAOg2B,IAyBxE2oB,EAA+BjhD,cAAgBm6B,GACjD1C,EAA4BwpB,EAAgC,cAAe9mB,GAG7ErC,EAAqBmpB,GAAgC9mB,sBAAwBA,EAEzE1B,GACFhB,EAA4BwpB,EAAgCxoB,EAAiBgiB,GAG/E,IAAIhY,EAAStI,IAA0B6mB,EAEvCE,EAASzG,GAAoBtgB,EAE7ByW,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAMi6B,OAAQwI,EAAQpjC,MAAOs5B,GAA6BuoB,GAEnFZ,KAAqBnmB,GACzB1C,EAA4B0C,EAAuBmmB,EAAmBf,GAGlEe,KAAqBW,GACzBxpB,EAA4BwpB,EAAgCX,EAAmBf,GAGjFW,EAAWzF,EACb,GACK91C,EAAOL,QAAU,WAA0B,qCCzOlD,IAAIyb,EAAa,EAAQ,MACrB0a,EAAQ,EAAQ,MAChB+d,EAA8B,EAAQ,MACtC7f,EAA4B,kCAE5BvQ,EAAcrI,EAAWqI,YACzB6P,EAAYlY,EAAWkY,UAE3BtzB,EAAOL,SAAWq0B,IAA8B8B,GAAM,WACpDxC,EAAU,EACZ,MAAOwC,GAAM,WACX,IAAIxC,GAAW,EACjB,MAAOugB,GAA4B,SAAU3I,GAC3C,IAAI5X,EACJ,IAAIA,EAAU,MACd,IAAIA,EAAU,KACd,IAAIA,EAAU4X,EAChB,IAAG,IAASpV,GAAM,WAEhB,OAAkE,IAA3D,IAAIxC,EAAU,IAAI7P,EAAY,GAAI,OAAG1lB,GAAWjF,MACzD,uCCrBA,IAAI0iD,EAA8B,EAAQ,MACtCmB,EAA+B,EAAQ,MAE3C38C,EAAOL,QAAU,SAAUpH,EAAU+iC,GACnC,OAAOkgB,EAA4BmB,EAA6BpkD,GAAW+iC,EAC7E,qCCLA,IAAIxhC,EAAO,EAAQ,MACfgB,EAAO,EAAQ,MACfq7C,EAAe,EAAQ,MACvB5b,EAAW,EAAQ,MACnBE,EAAoB,EAAQ,MAC5BkB,EAAc,EAAQ,IACtBC,EAAoB,EAAQ,KAC5BH,EAAwB,EAAQ,MAChCmhB,EAAgB,EAAQ,MACxB1nB,EAAyB,+BACzB2nB,EAAW,EAAQ,MAEvB78C,EAAOL,QAAU,SAAc8gC,GAC7B,IAMI5nC,EAAGC,EAAQmC,EAAQ6hD,EAAmB3gD,EAAO+/B,EAAMnY,EAAU7c,EAN7DiuB,EAAIghB,EAAa/6C,MACjBy/B,EAAIN,EAASkG,GACbzF,EAAkB1/B,UAAUxC,OAC5BkjC,EAAQhB,EAAkB,EAAI1/B,UAAU,QAAKyC,EAC7Ck+B,OAAoBl+B,IAAVi+B,EACVG,EAAiBP,EAAkBf,GAEvC,GAAIsB,IAAmBV,EAAsBU,GAI3C,IAFAj1B,GADA6c,EAAW4X,EAAYd,EAAGsB,IACVj1B,KAChB2zB,EAAI,KACKqB,EAAOphC,EAAKoM,EAAM6c,IAAWC,MACpC6W,EAAEp+B,KAAKy/B,EAAK//B,OAShB,IANI8/B,GAAWjB,EAAkB,IAC/BgB,EAAQliC,EAAKkiC,EAAO1gC,UAAU,KAEhCxC,EAAS2hC,EAAkBI,GAC3B5/B,EAAS,IAAKi6B,EAAuBC,GAA5B,CAAgCr8B,GACzCgkD,EAAoBF,EAAc3hD,GAC7BpC,EAAI,EAAGC,EAASD,EAAGA,IACtBsD,EAAQ8/B,EAAUD,EAAMnB,EAAEhiC,GAAIA,GAAKgiC,EAAEhiC,GAErCoC,EAAOpC,GAAKikD,EAAoBD,EAAS1gD,IAAUA,EAErD,OAAOlB,CACT,qCCxCA,IAAIggD,EAAsB,EAAQ,MAC9B8B,EAAqB,EAAQ,MAE7B7nB,EAAyB+lB,EAAoB/lB,uBAC7CL,EAA2BomB,EAAoBpmB,yBAInD70B,EAAOL,QAAU,SAAUw/B,GACzB,OAAOjK,EAAuB6nB,EAAmB5d,EAAetK,EAAyBsK,IAC3F,qCCVA,IAAIxJ,EAAc,EAAQ,MAEtBttB,EAAK,EACL20C,EAAUn3C,KAAKyU,SACf5V,EAAWixB,EAAY,GAAIjxB,UAE/B1E,EAAOL,QAAU,SAAUtG,GACzB,MAAO,gBAAqB0E,IAAR1E,EAAoB,GAAKA,GAAO,KAAOqL,IAAW2D,EAAK20C,EAAS,GACtF,qCCRA,IAAIlnB,EAAQ,EAAQ,MAChB5D,EAAkB,EAAQ,MAC1BS,EAAc,EAAQ,MACtBuZ,EAAU,EAAQ,MAElBzM,EAAWvN,EAAgB,YAE/BlyB,EAAOL,SAAWm2B,GAAM,WAEtB,IAAIjtB,EAAM,IAAIF,IAAI,gBAAiB,aAC/BiW,EAAS/V,EAAIV,aACb80C,EAAU,IAAIv3B,gBAAgB,eAC9BzqB,EAAS,GAUb,OATA4N,EAAIpB,SAAW,QACfmX,EAAOlZ,SAAQ,SAAUvJ,EAAO9C,GAC9BulB,EAAe,OAAE,KACjB3jB,GAAU5B,EAAM8C,CAClB,IACA8gD,EAAgB,OAAE,IAAK,GAGvBA,EAAgB,OAAE,SAAKl/C,GACfmuC,KAAarjC,EAAIq0C,SAAWD,EAAQv7B,IAAI,IAAK,IAAMu7B,EAAQv7B,IAAI,IAAK,KAAOu7B,EAAQv7B,IAAI,SAAK3jB,IAAck/C,EAAQv7B,IAAI,QACvH9C,EAAO63B,OAASvK,IAAYvZ,KAC7B/T,EAAOjV,MACK,4BAAbd,EAAIN,MACgB,MAApBqW,EAAOljB,IAAI,MAC6B,QAAxC6N,OAAO,IAAImc,gBAAgB,WAC1B9G,EAAO6gB,IAE4B,MAApC,IAAI92B,IAAI,eAAekE,UACsC,MAA7D,IAAI6Y,gBAAgB,IAAIA,gBAAgB,QAAQhqB,IAAI,MAEnB,eAAjC,IAAIiN,IAAI,gBAAgBoxC,MAEQ,YAAhC,IAAIpxC,IAAI,eAAehD,MAEZ,SAAX1K,GAEyC,MAAzC,IAAI0N,IAAI,iBAAa5K,GAAWg8C,IACvC,uCCvCA,IAAIlB,EAAgB,EAAQ,MAE5B74C,EAAOL,QAAUk5C,IACX35C,OAAOxE,MACkB,iBAAnBwE,OAAO6kB,4CCLnB,IAAI4O,EAAc,EAAQ,MACtBmD,EAAQ,EAAQ,MAIpB91B,EAAOL,QAAUgzB,GAAemD,GAAM,WAEpC,OAGiB,KAHV38B,OAAOC,gBAAe,WAA0B,GAAG,YAAa,CACrE+C,MAAO,GACPjD,UAAU,IACTO,SACL,mCCXA,IAAIo4B,EAAap5B,UAEjBuH,EAAOL,QAAU,SAAUw9C,EAAQC,GACjC,GAAID,EAASC,EAAU,MAAM,IAAIvrB,EAAW,wBAC5C,OAAOsrB,CACT,qCCLA,IAAI/hC,EAAa,EAAQ,MACrBuW,EAAa,EAAQ,MAErBkY,EAAUzuB,EAAWyuB,QAEzB7pC,EAAOL,QAAUgyB,EAAWkY,IAAY,cAAcrkC,KAAK+D,OAAOsgC,sCCLlE,IAAIvgC,EAAO,EAAQ,MACfspB,EAAS,EAAQ,MACjByqB,EAA+B,EAAQ,MACvCjkD,EAAiB,UAErB4G,EAAOL,QAAU,SAAU8yB,GACzB,IAAIvzB,EAASoK,EAAKpK,SAAWoK,EAAKpK,OAAS,CAAC,GACvC0zB,EAAO1zB,EAAQuzB,IAAOr5B,EAAe8F,EAAQuzB,EAAM,CACtDt2B,MAAOkhD,EAA6B1uB,EAAE8D,IAE1C,qCCVA,IAAIP,EAAkB,EAAQ,MAE9BvyB,EAAQgvB,EAAIuD,qCCFZ,IAAI9W,EAAa,EAAQ,MACrBquB,EAAS,EAAQ,MACjB7W,EAAS,EAAQ,MACjBK,EAAM,EAAQ,MACd4lB,EAAgB,EAAQ,MACxBhO,EAAoB,EAAQ,MAE5B3rC,EAASkc,EAAWlc,OACpBo+C,EAAwB7T,EAAO,OAC/B8T,EAAwB1S,EAAoB3rC,EAAY,KAAKA,EAASA,GAAUA,EAAOs+C,eAAiBvqB,EAE5GjzB,EAAOL,QAAU,SAAUd,GAKvB,OAJG+zB,EAAO0qB,EAAuBz+C,KACjCy+C,EAAsBz+C,GAAQg6C,GAAiBjmB,EAAO1zB,EAAQL,GAC1DK,EAAOL,GACP0+C,EAAsB,UAAY1+C,IAC/By+C,EAAsBz+C,EACjC,iCChBAmB,EAAOL,QAAU,mFCDjB,IAAIssC,EAAI,EAAQ,MACZ7wB,EAAa,EAAQ,MACrBqiC,EAAoB,EAAQ,MAC5BlC,EAAa,EAAQ,MAErBzkB,EAAe,cACfrT,EAAcg6B,EAAkB3mB,GAKpCmV,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAMi6B,OAJbla,EAAW0b,KAIgCrT,GAAe,CAChFA,YAAaA,IAGf83B,EAAWzkB,sCCfX,IAAImV,EAAI,EAAQ,MACZnW,EAAQ,EAAQ,MAChB7rB,EAAU,EAAQ,MAClBuoB,EAAW,EAAQ,IACnB+H,EAAW,EAAQ,MACnBE,EAAoB,EAAQ,MAC5BuL,EAA2B,EAAQ,MACnCtK,EAAiB,EAAQ,MACzBiB,EAAqB,EAAQ,MAC7B+gB,EAA+B,EAAQ,KACvCxrB,EAAkB,EAAQ,MAC1B8L,EAAa,EAAQ,MAErB2f,EAAuBzrB,EAAgB,sBAKvC0rB,EAA+B5f,GAAc,KAAOlI,GAAM,WAC5D,IAAIqI,EAAQ,GAEZ,OADAA,EAAMwf,IAAwB,EACvBxf,EAAMr5B,SAAS,KAAOq5B,CAC/B,IAEI0f,EAAqB,SAAUhjB,GACjC,IAAKrI,EAASqI,GAAI,OAAO,EACzB,IAAIijB,EAAajjB,EAAE8iB,GACnB,YAAsB5/C,IAAf+/C,IAA6BA,EAAa7zC,EAAQ4wB,EAC3D,EAOAoR,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMyY,MAAO,EAAGjY,QAL9BsoB,IAAiCF,EAA6B,WAKd,CAE5D54C,OAAQ,SAAgBoT,GACtB,IAGIrf,EAAG2zB,EAAG1zB,EAAQwM,EAAKy4C,EAHnBljB,EAAIN,EAASn/B,MACb20C,EAAIpT,EAAmB9B,EAAG,GAC1B7N,EAAI,EAER,IAAKn0B,GAAK,EAAGC,EAASwC,UAAUxC,OAAQD,EAAIC,EAAQD,IAElD,GAAIglD,EADJE,GAAW,IAAPllD,EAAWgiC,EAAIv/B,UAAUzC,IAI3B,IAFAyM,EAAMm1B,EAAkBsjB,GACxB/X,EAAyBhZ,EAAI1nB,GACxBknB,EAAI,EAAGA,EAAIlnB,EAAKknB,IAAKQ,IAASR,KAAKuxB,GAAGriB,EAAeqU,EAAG/iB,EAAG+wB,EAAEvxB,SAElEwZ,EAAyBhZ,EAAI,GAC7B0O,EAAeqU,EAAG/iB,IAAK+wB,GAI3B,OADAhO,EAAEj3C,OAASk0B,EACJ+iB,CACT,uCCvDF,IAAI9D,EAAI,EAAQ,MACZ+R,EAAU,eAQd/R,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,QAPC,EAAQ,IAEjBooB,CAA6B,WAKW,CAChEr0C,OAAQ,SAAgBgyB,GACtB,OAAO2iB,EAAQ5iD,KAAMigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACzE,sCCZF,IAAIkuC,EAAI,EAAQ,MACZgS,EAAQ,aACRC,EAAmB,EAAQ,MAE3BC,EAAO,OACPC,GAAc,EAIdD,IAAQ,IAAI96C,MAAM,GAAG86C,IAAM,WAAcC,GAAc,CAAO,IAIlEnS,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,OAAQ8oB,GAAe,CACvD3sC,KAAM,SAAc4pB,GAClB,OAAO4iB,EAAM7iD,KAAMigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACvE,IAIFmgD,EAAiBC,sCCpBjB,IAAIlS,EAAI,EAAQ,MACZhG,EAAmB,EAAQ,KAC3B1L,EAAW,EAAQ,MACnBE,EAAoB,EAAQ,MAC5BzE,EAAsB,EAAQ,MAC9B2G,EAAqB,EAAQ,MAIjCsP,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,GAAQ,CAClCjlB,KAAM,WACJ,IAAIwuC,EAAW/iD,UAAUxC,OAASwC,UAAU,QAAKyC,EAC7C88B,EAAIN,EAASn/B,MACb+qC,EAAY1L,EAAkBI,GAC9BkV,EAAIpT,EAAmB9B,EAAG,GAE9B,OADAkV,EAAEj3C,OAASmtC,EAAiB8J,EAAGlV,EAAGA,EAAGsL,EAAW,OAAgBpoC,IAAbsgD,EAAyB,EAAIroB,EAAoBqoB,IAC7FtO,CACT,uCCjBF,IAAI9D,EAAI,EAAQ,MACZqS,EAAY,iBACZxoB,EAAQ,EAAQ,MAChBooB,EAAmB,EAAQ,MAU/BjS,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,OAPXQ,GAAM,WAE3B,OAAQzyB,MAAM,GAAG4Z,UACnB,KAI8D,CAC5DA,SAAU,SAAkBuf,GAC1B,OAAO8hB,EAAUljD,KAAMohC,EAAIlhC,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACnE,IAIFmgD,EAAiB,+CCpBjB,IAAI9hB,EAAkB,EAAQ,MAC1B8hB,EAAmB,EAAQ,MAC3B9W,EAAY,EAAQ,MACpBlU,EAAsB,EAAQ,MAC9B95B,EAAiB,UACjBmlD,EAAiB,EAAQ,MACzBC,EAAyB,EAAQ,MACjCtS,EAAU,EAAQ,MAClBvZ,EAAc,EAAQ,MAEtB8rB,EAAiB,iBACjBpnB,EAAmBnE,EAAoB9uB,IACvCivB,EAAmBH,EAAoBiE,UAAUsnB,GAYrDz+C,EAAOL,QAAU4+C,EAAel7C,MAAO,SAAS,SAAUq7C,EAAUhT,GAClErU,EAAiBj8B,KAAM,CACrBiB,KAAMoiD,EACN9lD,OAAQyjC,EAAgBsiB,GACxBr+C,MAAO,EACPqrC,KAAMA,GAIV,IAAG,WACD,IAAI3jC,EAAQsrB,EAAiBj4B,MACzBzC,EAASoP,EAAMpP,OACf0H,EAAQ0H,EAAM1H,QAClB,IAAK1H,GAAU0H,GAAS1H,EAAOG,OAE7B,OADAiP,EAAMpP,OAAS,KACR6lD,OAAuBzgD,GAAW,GAE3C,OAAQgK,EAAM2jC,MACZ,IAAK,OAAQ,OAAO8S,EAAuBn+C,GAAO,GAClD,IAAK,SAAU,OAAOm+C,EAAuB7lD,EAAO0H,IAAQ,GAC5D,OAAOm+C,EAAuB,CAACn+C,EAAO1H,EAAO0H,KAAS,EAC1D,GAAG,UAKH,IAAIimB,EAAS8gB,EAAUuX,UAAYvX,EAAU/jC,MAQ7C,GALA66C,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,YAGZhS,GAAWvZ,GAA+B,WAAhBrM,EAAOznB,KAAmB,IACvDzF,EAAektB,EAAQ,OAAQ,CAAEnqB,MAAO,UAC1C,CAAE,MAAO2E,GAAqB,qCC5D9B,IAAImrC,EAAI,EAAQ,MACZtW,EAAc,EAAQ,MACtB+G,EAAgB,EAAQ,MACxBN,EAAkB,EAAQ,MAC1BhB,EAAsB,EAAQ,MAE9BwjB,EAAajpB,EAAY,GAAGxwB,MAOhC8mC,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,OALhBoH,IAAkBvjC,SACPiiC,EAAoB,OAAQ,MAIL,CAClDj2B,KAAM,SAAc05C,GAClB,OAAOD,EAAWxiB,EAAgBhhC,WAAqB2C,IAAd8gD,EAA0B,IAAMA,EAC3E,uCChBF,IAAI5S,EAAI,EAAQ,MACZ6S,EAAO,YAQX7S,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,QAPC,EAAQ,IAEjBooB,CAA6B,QAKW,CAChEz4C,IAAK,SAAao2B,GAChB,OAAOyjB,EAAK1jD,KAAMigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACtE,uCCZF,IAAIkuC,EAAI,EAAQ,MACZhiC,EAAU,EAAQ,MAClB8nB,EAAgB,EAAQ,MACxBS,EAAW,EAAQ,IACnBgI,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,MAC5B2B,EAAkB,EAAQ,MAC1BV,EAAiB,EAAQ,MACzBxJ,EAAkB,EAAQ,MAC1BwrB,EAA+B,EAAQ,KACvCqB,EAAc,EAAQ,MAEtBC,EAAsBtB,EAA6B,SAEnDzf,EAAU/L,EAAgB,WAC1B2J,EAASx4B,MACTk3C,EAAM10C,KAAK00C,IAKftO,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,QAAS0pB,GAAuB,CAChEjiD,MAAO,SAAe67B,EAAOkC,GAC3B,IAKItiC,EAAayC,EAAQ+xB,EALrB6N,EAAIuB,EAAgBhhC,MACpBtC,EAAS2hC,EAAkBI,GAC3BrO,EAAIgO,EAAgB5B,EAAO9/B,GAC3BmmD,EAAMzkB,OAAwBz8B,IAAR+8B,EAAoBhiC,EAASgiC,EAAKhiC,GAG5D,GAAImR,EAAQ4wB,KACVriC,EAAcqiC,EAAEx/B,aAEZ02B,EAAcv5B,KAAiBA,IAAgBqjC,GAAU5xB,EAAQzR,EAAYiB,aAEtE+4B,EAASh6B,IAEE,QADpBA,EAAcA,EAAYylC,OAF1BzlC,OAAcuF,GAKZvF,IAAgBqjC,QAA0B99B,IAAhBvF,GAC5B,OAAOumD,EAAYlkB,EAAGrO,EAAGyyB,GAI7B,IADAhkD,EAAS,SAAqB8C,IAAhBvF,EAA4BqjC,EAASrjC,GAAa+hD,EAAI0E,EAAMzyB,EAAG,IACxEQ,EAAI,EAAGR,EAAIyyB,EAAKzyB,IAAKQ,IAASR,KAAKqO,GAAGa,EAAezgC,EAAQ+xB,EAAG6N,EAAErO,IAEvE,OADAvxB,EAAOnC,OAASk0B,EACT/xB,CACT,uCC9CF,IAAIgxC,EAAI,EAAQ,MACZtW,EAAc,EAAQ,MACtB0I,EAAY,EAAQ,MACpB9D,EAAW,EAAQ,MACnBE,EAAoB,EAAQ,MAC5BC,EAAwB,EAAQ,MAChCh2B,EAAW,EAAQ,KACnBoxB,EAAQ,EAAQ,MAChBopB,EAAe,EAAQ,MACvB9jB,EAAsB,EAAQ,MAC9B+jB,EAAK,EAAQ,MACbC,EAAa,EAAQ,MACrBC,EAAK,EAAQ,MACbC,EAAS,EAAQ,MAEjB95C,EAAO,GACP+5C,EAAa5pB,EAAYnwB,EAAKmE,MAC9BlN,EAAOk5B,EAAYnwB,EAAK/I,MAGxB+iD,EAAqB1pB,GAAM,WAC7BtwB,EAAKmE,UAAK5L,EACZ,IAEI0hD,EAAgB3pB,GAAM,WACxBtwB,EAAKmE,KAAK,KACZ,IAEIwxB,EAAgBC,EAAoB,QAEpCskB,GAAe5pB,GAAM,WAEvB,GAAIupB,EAAI,OAAOA,EAAK,GACpB,KAAIF,GAAMA,EAAK,GAAf,CACA,GAAIC,EAAY,OAAO,EACvB,GAAIE,EAAQ,OAAOA,EAAS,IAE5B,IACIloC,EAAM+4B,EAAKh0C,EAAOkE,EADlBpF,EAAS,GAIb,IAAKmc,EAAO,GAAIA,EAAO,GAAIA,IAAQ,CAGjC,OAFA+4B,EAAM5mC,OAAO0c,aAAa7O,GAElBA,GACN,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAIjb,EAAQ,EAAG,MAC/C,KAAK,GAAI,KAAK,GAAIA,EAAQ,EAAG,MAC7B,QAASA,EAAQ,EAGnB,IAAKkE,EAAQ,EAAGA,EAAQ,GAAIA,IAC1BmF,EAAK/I,KAAK,CAAE+vB,EAAG2jB,EAAM9vC,EAAOsC,EAAGxG,GAEnC,CAIA,IAFAqJ,EAAKmE,MAAK,SAAUgiB,EAAGP,GAAK,OAAOA,EAAEzoB,EAAIgpB,EAAEhpB,CAAG,IAEzCtC,EAAQ,EAAGA,EAAQmF,EAAK1M,OAAQuH,IACnC8vC,EAAM3qC,EAAKnF,GAAOmsB,EAAEpS,OAAO,GACvBnf,EAAOmf,OAAOnf,EAAOnC,OAAS,KAAOq3C,IAAKl1C,GAAUk1C,GAG1D,MAAkB,gBAAXl1C,CA7BiB,CA8B1B,IAeAgxC,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,OAbrBkqB,IAAuBC,IAAkBtkB,IAAkBukB,GAapB,CAClD/1C,KAAM,SAAci1B,QACA7gC,IAAd6gC,GAAyBP,EAAUO,GAEvC,IAAIT,EAAQ5D,EAASn/B,MAErB,GAAIskD,EAAa,YAAqB3hD,IAAd6gC,EAA0B2gB,EAAWphB,GAASohB,EAAWphB,EAAOS,GAExF,IAEI+gB,EAAat/C,EAFbyjB,EAAQ,GACR87B,EAAcnlB,EAAkB0D,GAGpC,IAAK99B,EAAQ,EAAGA,EAAQu/C,EAAav/C,IAC/BA,KAAS89B,GAAO1hC,EAAKqnB,EAAOqa,EAAM99B,IAQxC,IALA6+C,EAAap7B,EA3BI,SAAU8a,GAC7B,OAAO,SAAU7jB,EAAG6T,GAClB,YAAU7wB,IAAN6wB,GAAyB,OACnB7wB,IAANgd,EAAwB,OACVhd,IAAd6gC,GAAiCA,EAAU7jB,EAAG6T,IAAM,EACjDlqB,EAASqW,GAAKrW,EAASkqB,GAAK,GAAK,CAC1C,CACF,CAoBwBixB,CAAejhB,IAEnC+gB,EAAcllB,EAAkB3W,GAChCzjB,EAAQ,EAEDA,EAAQs/C,GAAaxhB,EAAM99B,GAASyjB,EAAMzjB,KACjD,KAAOA,EAAQu/C,GAAallB,EAAsByD,EAAO99B,KAEzD,OAAO89B,CACT,uCCvGF,IAAI8N,EAAI,EAAQ,MACZ1R,EAAW,EAAQ,MACnBC,EAAkB,EAAQ,MAC1BxE,EAAsB,EAAQ,MAC9ByE,EAAoB,EAAQ,MAC5BqlB,EAAiB,EAAQ,MACzB9Z,EAA2B,EAAQ,MACnCrJ,EAAqB,EAAQ,MAC7BjB,EAAiB,EAAQ,MACzBhB,EAAwB,EAAQ,MAGhCskB,EAF+B,EAAQ,IAEjBtB,CAA6B,UAEnDnD,EAAM10C,KAAK00C,IACX5f,EAAM90B,KAAK80B,IAKfsR,EAAE,CAAEtzC,OAAQ,QAASm8B,OAAO,EAAMQ,QAAS0pB,GAAuB,CAChEpiD,OAAQ,SAAgBg8B,EAAOmnB,GAC7B,IAIIC,EAAaC,EAAmBlQ,EAAGvjB,EAAGhS,EAAMlF,EAJ5CulB,EAAIN,EAASn/B,MACbkK,EAAMm1B,EAAkBI,GACxBqlB,EAAc1lB,EAAgB5B,EAAOtzB,GACrC01B,EAAkB1/B,UAAUxC,OAahC,IAXwB,IAApBkiC,EACFglB,EAAcC,EAAoB,EACL,IAApBjlB,GACTglB,EAAc,EACdC,EAAoB36C,EAAM46C,IAE1BF,EAAchlB,EAAkB,EAChCilB,EAAoBtlB,EAAI4f,EAAIvkB,EAAoB+pB,GAAc,GAAIz6C,EAAM46C,IAE1Ela,EAAyB1gC,EAAM06C,EAAcC,GAC7ClQ,EAAIpT,EAAmB9B,EAAGolB,GACrBzzB,EAAI,EAAGA,EAAIyzB,EAAmBzzB,KACjChS,EAAO0lC,EAAc1zB,KACTqO,GAAGa,EAAeqU,EAAGvjB,EAAGqO,EAAErgB,IAGxC,GADAu1B,EAAEj3C,OAASmnD,EACPD,EAAcC,EAAmB,CACnC,IAAKzzB,EAAI0zB,EAAa1zB,EAAIlnB,EAAM26C,EAAmBzzB,IAEjDlX,EAAKkX,EAAIwzB,GADTxlC,EAAOgS,EAAIyzB,KAECplB,EAAGA,EAAEvlB,GAAMulB,EAAErgB,GACpBkgB,EAAsBG,EAAGvlB,GAEhC,IAAKkX,EAAIlnB,EAAKknB,EAAIlnB,EAAM26C,EAAoBD,EAAaxzB,IAAKkO,EAAsBG,EAAGrO,EAAI,EAC7F,MAAO,GAAIwzB,EAAcC,EACvB,IAAKzzB,EAAIlnB,EAAM26C,EAAmBzzB,EAAI0zB,EAAa1zB,IAEjDlX,EAAKkX,EAAIwzB,EAAc,GADvBxlC,EAAOgS,EAAIyzB,EAAoB,KAEnBplB,EAAGA,EAAEvlB,GAAMulB,EAAErgB,GACpBkgB,EAAsBG,EAAGvlB,GAGlC,IAAKkX,EAAI,EAAGA,EAAIwzB,EAAaxzB,IAC3BqO,EAAErO,EAAI0zB,GAAe5kD,UAAUkxB,EAAI,GAGrC,OADAszB,EAAejlB,EAAGv1B,EAAM26C,EAAoBD,GACrCjQ,CACT,uCC9DqB,EAAQ,KAG/BmO,CAAiB,2CCLjB,IAAIvrB,EAAc,EAAQ,MACtBwtB,EAAuB,cACvBxqB,EAAc,EAAQ,MACtB3C,EAAwB,EAAQ,MAEhC2T,EAAoB5Y,SAASt0B,UAC7B6vC,EAAmB3T,EAAYgR,EAAkBjiC,UACjD07C,EAAS,mEACTC,EAAa1qB,EAAYyqB,EAAOjzB,MAKhCwF,IAAgBwtB,GAClBntB,EAAsB2T,EALb,OAKsC,CAC7C1tC,cAAc,EACdyC,IAAK,WACH,IACE,OAAO2kD,EAAWD,EAAQ9W,EAAiBluC,OAAO,EACpD,CAAE,MAAO0F,GACP,MAAO,EACT,CACF,uCCtBJ,IAAImrC,EAAI,EAAQ,MACZ7wB,EAAa,EAAQ,MAIzB6wB,EAAE,CAAE/oB,QAAQ,EAAMoS,OAAQla,EAAWA,aAAeA,GAAc,CAChEA,WAAYA,uCCNd,IAAI6wB,EAAI,EAAQ,MACZzD,EAAa,EAAQ,MACrBjtC,EAAQ,EAAQ,MAChBT,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAChBnE,EAAa,EAAQ,MACrBkpB,EAAW,EAAQ,KACnBvkB,EAAa,EAAQ,MACrBgqB,EAAsB,EAAQ,MAC9BzH,EAAgB,EAAQ,MAExB5mB,EAAU1oB,OACVg3C,EAAa/X,EAAW,OAAQ,aAChCrb,EAAOwI,EAAY,IAAIxI,MACvB/S,EAASub,EAAY,GAAGvb,QACxBxU,EAAa+vB,EAAY,GAAG/vB,YAC5BrF,EAAUo1B,EAAY,GAAGp1B,SACzBigD,EAAiB7qB,EAAY,GAAIjxB,UAEjC+7C,EAAS,mBACTC,EAAM,oBACNC,EAAK,oBAELC,GAA4B/H,GAAiB/iB,GAAM,WACrD,IAAIma,EAASzH,EAAW,SAAXA,CAAqB,uBAElC,MAAgC,WAAzB+X,EAAW,CAACtQ,KAEgB,OAA9BsQ,EAAW,CAAE50B,EAAGskB,KAEe,OAA/BsQ,EAAWpnD,OAAO82C,GACzB,IAGI4Q,EAAqB/qB,GAAM,WAC7B,MAAsC,qBAA/ByqB,EAAW,iBACY,cAAzBA,EAAW,SAClB,IAEIO,EAA0B,SAAU13B,EAAIke,GAC1C,IAAIznC,EAAOy2B,EAAWh7B,WAClBylD,EAAYT,EAAoBhZ,GACpC,GAAK3V,EAAWovB,SAAsBhjD,IAAPqrB,IAAoByxB,EAASzxB,GAM5D,OALAvpB,EAAK,GAAK,SAAUxG,EAAK8C,GAGvB,GADIw1B,EAAWovB,KAAY5kD,EAAQrB,EAAKimD,EAAW3lD,KAAM62B,EAAQ54B,GAAM8C,KAClE0+C,EAAS1+C,GAAQ,OAAOA,CAC/B,EACOZ,EAAMglD,EAAY,KAAM1gD,EACjC,EAEImhD,EAAe,SAAUxgD,EAAO0qB,EAAQ6V,GAC1C,IAAIn9B,EAAOwW,EAAO2mB,EAAQ7V,EAAS,GAC/BhkB,EAAOkT,EAAO2mB,EAAQ7V,EAAS,GACnC,OAAKiC,EAAKuzB,EAAKlgD,KAAW2sB,EAAKwzB,EAAIz5C,IAAWimB,EAAKwzB,EAAIngD,KAAW2sB,EAAKuzB,EAAK98C,GACnE,MAAQ48C,EAAe56C,EAAWpF,EAAO,GAAI,IAC7CA,CACX,EAEI+/C,GAGFtU,EAAE,CAAEtzC,OAAQ,OAAQqsC,MAAM,EAAMuI,MAAO,EAAGjY,OAAQsrB,GAA4BC,GAAsB,CAElGh+C,UAAW,SAAmBumB,EAAIke,EAAU2Z,GAC1C,IAAIphD,EAAOy2B,EAAWh7B,WAClBL,EAASM,EAAMqlD,EAA2BE,EAA0BP,EAAY,KAAM1gD,GAC1F,OAAOghD,GAAuC,iBAAV5lD,EAAqBsF,EAAQtF,EAAQwlD,EAAQO,GAAgB/lD,CACnG,uCCrEJ,IAAIgxC,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClBvZ,EAAc,EAAQ,MACtBvX,EAAa,EAAQ,MACrB9R,EAAO,EAAQ,MACfqsB,EAAc,EAAQ,MACtB+O,EAAW,EAAQ,MACnB9R,EAAS,EAAQ,MACjB2D,EAAoB,EAAQ,MAC5BjR,EAAgB,EAAQ,MACxBu1B,EAAW,EAAQ,KACnB1pB,EAAc,EAAQ,MACtB2E,EAAQ,EAAQ,MAChB5R,EAAsB,UACtBhoB,EAA2B,UAC3B9C,EAAiB,UACjB8nD,EAAkB,EAAQ,MAC1B13C,EAAO,aAEP23C,EAAS,SACTC,EAAehmC,EAAW+lC,GAC1BE,EAAsB/3C,EAAK63C,GAC3BG,EAAkBF,EAAa3nD,UAC/BhB,EAAY2iB,EAAW3iB,UACvBsnC,EAAcpK,EAAY,GAAG54B,OAC7B6I,EAAa+vB,EAAY,GAAG/vB,YAkD5Bk4B,EAAS4G,EAASyc,GAASC,EAAa,UAAYA,EAAa,QAAUA,EAAa,SASxFG,EAAgB,SAAgBplD,GAClC,IAR4BitC,EAQxBpc,EAAI1xB,UAAUxC,OAAS,EAAI,EAAIsoD,EAxDrB,SAAUjlD,GACxB,IAAIqlD,EAAYrwB,EAAYh1B,EAAO,UACnC,MAA2B,iBAAbqlD,EAAwBA,EAKzB,SAAU1vB,GACvB,IACIykB,EAAOkL,EAAOC,EAAOC,EAASC,EAAQ9oD,EAAQuH,EAAO+W,EADrDgS,EAAK+H,EAAYW,EAAU,UAE/B,GAAI+oB,EAASzxB,GAAK,MAAM,IAAI3wB,EAAU,6CACtC,GAAiB,iBAAN2wB,GAAkBA,EAAGtwB,OAAS,EAGvC,GAFAswB,EAAK5f,EAAK4f,GAEI,MADdmtB,EAAQ3wC,EAAWwjB,EAAI,KACO,KAAVmtB,GAElB,GAAc,MADdkL,EAAQ77C,EAAWwjB,EAAI,KACO,MAAVq4B,EAAe,OAAOzoB,SACrC,GAAc,KAAVud,EAAc,CACvB,OAAQ3wC,EAAWwjB,EAAI,IAErB,KAAK,GACL,KAAK,GACHs4B,EAAQ,EACRC,EAAU,GACV,MAEF,KAAK,GACL,KAAK,IACHD,EAAQ,EACRC,EAAU,GACV,MACF,QACE,OAAQv4B,EAIZ,IADAtwB,GADA8oD,EAAS7hB,EAAY3W,EAAI,IACTtwB,OACXuH,EAAQ,EAAGA,EAAQvH,EAAQuH,IAI9B,IAHA+W,EAAOxR,EAAWg8C,EAAQvhD,IAGf,IAAM+W,EAAOuqC,EAAS,OAAO3oB,IACxC,OAAO/2B,SAAS2/C,EAAQF,EAC5B,CACA,OAAQt4B,CACZ,CA1CoDy4B,CAASL,EAC7D,CAqDkDM,CAAU3lD,IAC1D,OAPOmpB,EAAcg8B,EAFOlY,EASPhuC,OAP2B06B,GAAM,WAAcorB,EAAgB9X,EAAQ,IAO/D7S,EAAkBp9B,OAAO6zB,GAAI5xB,KAAMmmD,GAAiBv0B,CACnF,EAEAu0B,EAAc9nD,UAAY6nD,EACtBxjB,IAAWoO,IAASoV,EAAgBjmD,YAAckmD,GAEtDtV,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAM2L,MAAM,EAAMsuB,OAAQwI,GAAU,CACjEr6B,OAAQ89C,IAIV,IAAI/qB,EAA4B,SAAU79B,EAAQ8nC,GAChD,IAAK,IAOgBpnC,EAPZoM,EAAOktB,EAAczO,EAAoBuc,GAAU,oLAO1Dp7B,MAAM,KAAM3C,EAAI,EAAQ+C,EAAK3M,OAAS4J,EAAGA,IACrCkwB,EAAO6N,EAAQpnC,EAAMoM,EAAK/C,MAAQkwB,EAAOj6B,EAAQU,IACnDD,EAAeT,EAAQU,EAAK6C,EAAyBukC,EAAQpnC,GAGnE,EAEI6yC,GAAWmV,GAAqB7qB,EAA0BltB,EAAK63C,GAASE,IACxEvjB,GAAUoO,IAAS1V,EAA0BltB,EAAK63C,GAASC,sCCjH/D,IAAInV,EAAI,EAAQ,MACZt6B,EAAS,EAAQ,MAKrBs6B,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAMuI,MAAO,EAAGjY,OAAQn8B,OAAOwY,SAAWA,GAAU,CAC9EA,OAAQA,uCCPV,IAAIs6B,EAAI,EAAQ,MACZnW,EAAQ,EAAQ,MAChBsG,EAAkB,EAAQ,MAC1Bsf,EAAiC,UACjC/oB,EAAc,EAAQ,MAM1BsZ,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAJpB3C,GAAemD,GAAM,WAAc4lB,EAA+B,EAAI,IAIlChhD,MAAOi4B,GAAe,CACtEz2B,yBAA0B,SAAkCktB,EAAI/vB,GAC9D,OAAOqiD,EAA+Btf,EAAgBhT,GAAK/vB,EAC7D,uCCbF,IAAI4yC,EAAI,EAAQ,MACZtZ,EAAc,EAAQ,MACtB/b,EAAU,EAAQ,MAClBwlB,EAAkB,EAAQ,MAC1BmE,EAAiC,EAAQ,MACzC7E,EAAiB,EAAQ,MAI7BuQ,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAMtqC,MAAOi4B,GAAe,CACtD5b,0BAA2B,SAAmCjb,GAO5D,IANA,IAKIzC,EAAKN,EALL8hC,EAAIuB,EAAgBtgC,GACpBI,EAA2BqkC,EAA+B5R,EAC1DlpB,EAAOmR,EAAQikB,GACf5/B,EAAS,CAAC,EACVoF,EAAQ,EAELoF,EAAK3M,OAASuH,QAEAtC,KADnBhF,EAAamD,EAAyB2+B,EAAGxhC,EAAMoM,EAAKpF,QACtBq7B,EAAezgC,EAAQ5B,EAAKN,GAE5D,OAAOkC,CACT,uCCtBF,IAAIgxC,EAAI,EAAQ,MACZ4M,EAAgB,EAAQ,MACxB/iB,EAAQ,EAAQ,MAChB8Z,EAA8B,EAAQ,MACtCrV,EAAW,EAAQ,MAQvB0R,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAJpBujB,GAAiB/iB,GAAM,WAAc8Z,EAA4BjhB,EAAE,EAAI,KAIjC,CAClD7X,sBAAuB,SAA+BsS,GACpD,IAAI24B,EAAyBnS,EAA4BjhB,EACzD,OAAOozB,EAAyBA,EAAuBxnB,EAASnR,IAAO,EACzE,uCChBF,IAAI6iB,EAAI,EAAQ,MACZ1R,EAAW,EAAQ,MACnBynB,EAAa,EAAQ,MAOzB/V,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,OANtB,EAAQ,KAEMQ,EAAM,WAAcksB,EAAW,EAAI,KAII,CAC/Dv8C,KAAM,SAAc2jB,GAClB,OAAO44B,EAAWznB,EAASnR,GAC7B,uCCZF,IAAI4W,EAAwB,EAAQ,MAChCjN,EAAgB,EAAQ,MACxBruB,EAAW,EAAQ,MAIlBs7B,GACHjN,EAAc55B,OAAOM,UAAW,WAAYiL,EAAU,CAAE40B,QAAQ,uCCPlE,IAAI2S,EAAI,EAAQ,MACZnxC,EAAO,EAAQ,MACfujC,EAAY,EAAQ,MACpB4jB,EAA6B,EAAQ,MACrCC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAKtBlW,EAAE,CAAEtzC,OAAQ,UAAWqsC,MAAM,EAAM1P,OAJO,EAAQ,MAIgC,CAChFzrB,IAAK,SAAaqhC,GAChB,IAAI/V,EAAI/5B,KACJgnD,EAAaH,EAA2BtzB,EAAEwG,GAC1Cj4B,EAAUklD,EAAWllD,QACrBwO,EAAS02C,EAAW12C,OACpBzQ,EAASinD,GAAQ,WACnB,IAAIG,EAAkBhkB,EAAUlJ,EAAEj4B,SAC9BopB,EAAS,GACTkxB,EAAU,EACV8K,EAAY,EAChBH,EAAQjX,GAAU,SAAUvmB,GAC1B,IAAItkB,EAAQm3C,IACR+K,GAAgB,EACpBD,IACAxnD,EAAKunD,EAAiBltB,EAAGxQ,GAASxnB,MAAK,SAAUhB,GAC3ComD,IACJA,GAAgB,EAChBj8B,EAAOjmB,GAASlE,IACdmmD,GAAaplD,EAAQopB,GACzB,GAAG5a,EACL,MACE42C,GAAaplD,EAAQopB,EACzB,IAEA,OADIrrB,EAAO6F,OAAO4K,EAAOzQ,EAAOkB,OACzBimD,EAAWz9B,OACpB,uCCpCF,IAAIsnB,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClBmH,EAA6B,mBAC7BL,EAA2B,EAAQ,KACnCxK,EAAa,EAAQ,MACrB7W,EAAa,EAAQ,MACrBoB,EAAgB,EAAQ,MAExBkgB,EAAyBD,GAA4BA,EAAyBv5C,UAWlF,GAPAwyC,EAAE,CAAEtzC,OAAQ,UAAWm8B,OAAO,EAAMQ,OAAQ+d,EAA4BmP,MAAM,GAAQ,CACpF,MAAS,SAAUC,GACjB,OAAOrnD,KAAK+B,UAAKY,EAAW0kD,EAC9B,KAIGvW,GAAWva,EAAWqhB,GAA2B,CACpD,IAAIvkC,EAAS+5B,EAAW,WAAW/uC,UAAiB,MAChDw5C,EAA8B,QAAMxkC,GACtCskB,EAAckgB,EAAwB,QAASxkC,EAAQ,CAAE6qB,QAAQ,GAErE,oCCxBA,IAgDIopB,EAAUC,EAAsCC,EAhDhD3W,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClBuC,EAAU,EAAQ,MAClBrzB,EAAa,EAAQ,MACrBtgB,EAAO,EAAQ,MACfi4B,EAAgB,EAAQ,MACxBn5B,EAAiB,EAAQ,MACzB68B,EAAiB,EAAQ,KACzB8kB,EAAa,EAAQ,MACrBld,EAAY,EAAQ,MACpB1M,EAAa,EAAQ,MACrBa,EAAW,EAAQ,IACnBuD,EAAa,EAAQ,KACrBgnB,EAAqB,EAAQ,MAC7BrzC,EAAO,YACPklC,EAAY,EAAQ,MACpBiU,EAAmB,EAAQ,MAC3BX,EAAU,EAAQ,MAClB7T,EAAQ,EAAQ,MAChBnb,EAAsB,EAAQ,MAC9B8f,EAA2B,EAAQ,KACnC8P,EAA8B,EAAQ,KACtCb,EAA6B,EAAQ,MAErCc,EAAU,UACV1P,EAA6ByP,EAA4BrP,YACzDN,EAAiC2P,EAA4BpP,gBAC7DsP,EAA6BF,EAA4B5P,YACzD+P,EAA0B/vB,EAAoBiE,UAAU4rB,GACxD1rB,EAAmBnE,EAAoB9uB,IACvC6uC,EAAyBD,GAA4BA,EAAyBv5C,UAC9EypD,EAAqBlQ,EACrBmQ,EAAmBlQ,EACnBx6C,EAAY2iB,EAAW3iB,UACvB4F,EAAW+c,EAAW/c,SACtB6C,EAAUka,EAAWla,QACrByyC,EAAuBsO,EAA2BtzB,EAClDy0B,EAA8BzP,EAE9B0P,KAAoBhlD,GAAYA,EAASC,aAAe8c,EAAWnc,eACnEqkD,EAAsB,qBAWtBC,EAAa,SAAUn6B,GACzB,IAAIjsB,EACJ,SAAOq1B,EAASpJ,KAAOuI,EAAWx0B,EAAOisB,EAAGjsB,QAAQA,CACtD,EAEIqmD,EAAe,SAAUC,EAAU17C,GACrC,IAMI9M,EAAQkC,EAAMumD,EANdvnD,EAAQ4L,EAAM5L,MACdqb,EAfU,IAeLzP,EAAMA,MACXiyC,EAAUxiC,EAAKisC,EAASjsC,GAAKisC,EAASE,KACtCzmD,EAAUumD,EAASvmD,QACnBwO,EAAS+3C,EAAS/3C,OAClBqjC,EAAS0U,EAAS1U,OAEtB,IACMiL,GACGxiC,IApBK,IAqBJzP,EAAM67C,WAAyBC,EAAkB97C,GACrDA,EAAM67C,UAvBA,IAyBQ,IAAZ5J,EAAkB/+C,EAASkB,GAEzB4yC,GAAQA,EAAOG,QACnBj0C,EAAS++C,EAAQ79C,GACb4yC,IACFA,EAAOC,OACP0U,GAAS,IAGTzoD,IAAWwoD,EAAS9+B,QACtBjZ,EAAO,IAAIjT,EAAU,yBACZ0E,EAAOomD,EAAWtoD,IAC3BH,EAAKqC,EAAMlC,EAAQiC,EAASwO,GACvBxO,EAAQjC,IACVyQ,EAAOvP,EAChB,CAAE,MAAO2E,GACHiuC,IAAW2U,GAAQ3U,EAAOC,OAC9BtjC,EAAO5K,EACT,CACF,EAEImtC,EAAS,SAAUlmC,EAAO+7C,GACxB/7C,EAAMg8C,WACVh8C,EAAMg8C,UAAW,EACjBnV,GAAU,WAGR,IAFA,IACI6U,EADAO,EAAYj8C,EAAMi8C,UAEfP,EAAWO,EAAUtoD,OAC1B8nD,EAAaC,EAAU17C,GAEzBA,EAAMg8C,UAAW,EACbD,IAAa/7C,EAAM67C,WAAWK,EAAYl8C,EAChD,IACF,EAEI9I,EAAgB,SAAUJ,EAAM8lB,EAASxmB,GAC3C,IAAItB,EAAOm9C,EACPqJ,IACFxmD,EAAQwB,EAASC,YAAY,UACvBqmB,QAAUA,EAChB9nB,EAAMsB,OAASA,EACftB,EAAM0B,UAAUM,GAAM,GAAO,GAC7Buc,EAAWnc,cAAcpC,IACpBA,EAAQ,CAAE8nB,QAASA,EAASxmB,OAAQA,IACtCg1C,IAAmC6G,EAAU5+B,EAAW,KAAOvc,IAAQm7C,EAAQn9C,GAC3EgC,IAASykD,GAAqBT,EAAiB,8BAA+B1kD,EACzF,EAEI8lD,EAAc,SAAUl8C,GAC1BjN,EAAK4O,EAAM0R,GAAY,WACrB,IAGIngB,EAHA0pB,EAAU5c,EAAM+hC,OAChB3tC,EAAQ4L,EAAM5L,MAGlB,GAFmB+nD,EAAYn8C,KAG7B9M,EAASinD,GAAQ,WACXzT,EACFvtC,EAAQijD,KAAK,qBAAsBhoD,EAAOwoB,GACrC1lB,EAAcqkD,EAAqB3+B,EAASxoB,EACrD,IAEA4L,EAAM67C,UAAYnV,GAAWyV,EAAYn8C,GArF/B,EADF,EAuFJ9M,EAAO6F,OAAO,MAAM7F,EAAOkB,KAEnC,GACF,EAEI+nD,EAAc,SAAUn8C,GAC1B,OA7FY,IA6FLA,EAAM67C,YAA0B77C,EAAMmR,MAC/C,EAEI2qC,EAAoB,SAAU97C,GAChCjN,EAAK4O,EAAM0R,GAAY,WACrB,IAAIuJ,EAAU5c,EAAM+hC,OAChB2E,EACFvtC,EAAQijD,KAAK,mBAAoBx/B,GAC5B1lB,EAzGa,mBAyGoB0lB,EAAS5c,EAAM5L,MACzD,GACF,EAEIrC,EAAO,SAAUylC,EAAIx3B,EAAOq8C,GAC9B,OAAO,SAAUjoD,GACfojC,EAAGx3B,EAAO5L,EAAOioD,EACnB,CACF,EAEIC,EAAiB,SAAUt8C,EAAO5L,EAAOioD,GACvCr8C,EAAMic,OACVjc,EAAMic,MAAO,EACTogC,IAAQr8C,EAAQq8C,GACpBr8C,EAAM5L,MAAQA,EACd4L,EAAMA,MArHO,EAsHbkmC,EAAOlmC,GAAO,GAChB,EAEIu8C,GAAkB,SAAUv8C,EAAO5L,EAAOioD,GAC5C,IAAIr8C,EAAMic,KAAV,CACAjc,EAAMic,MAAO,EACTogC,IAAQr8C,EAAQq8C,GACpB,IACE,GAAIr8C,EAAM+hC,SAAW3tC,EAAO,MAAM,IAAI1D,EAAU,oCAChD,IAAI0E,EAAOomD,EAAWpnD,GAClBgB,EACFyxC,GAAU,WACR,IAAIqN,EAAU,CAAEj4B,MAAM,GACtB,IACElpB,EAAKqC,EAAMhB,EACTrC,EAAKwqD,GAAiBrI,EAASl0C,GAC/BjO,EAAKuqD,EAAgBpI,EAASl0C,GAElC,CAAE,MAAOjH,GACPujD,EAAepI,EAASn7C,EAAOiH,EACjC,CACF,KAEAA,EAAM5L,MAAQA,EACd4L,EAAMA,MA/II,EAgJVkmC,EAAOlmC,GAAO,GAElB,CAAE,MAAOjH,GACPujD,EAAe,CAAErgC,MAAM,GAASljB,EAAOiH,EACzC,CAzBsB,CA0BxB,EAGA,GAAIsrC,IAcF8P,GAZAD,EAAqB,SAAiBqB,GACpCxuB,EAAW36B,KAAM+nD,GACjB9kB,EAAUkmB,GACVzpD,EAAK4nD,EAAUtnD,MACf,IAAI2M,EAAQk7C,EAAwB7nD,MACpC,IACEmpD,EAASzqD,EAAKwqD,GAAiBv8C,GAAQjO,EAAKuqD,EAAgBt8C,GAC9D,CAAE,MAAOjH,GACPujD,EAAet8C,EAAOjH,EACxB,CACF,GAEsCrH,WAGtCipD,EAAW,SAAiB6B,GAC1BltB,EAAiBj8B,KAAM,CACrBiB,KAAM0mD,EACN/+B,MAAM,EACN+/B,UAAU,EACV7qC,QAAQ,EACR8qC,UAAW,IAAI3V,EACfuV,WAAW,EACX77C,MAlLQ,EAmLR5L,MAAO,MAEX,GAIS1C,UAAYs5B,EAAcowB,EAAkB,QAAQ,SAAcqB,EAAa/B,GACtF,IAAI16C,EAAQk7C,EAAwB7nD,MAChCqoD,EAAW9P,EAAqBoJ,EAAmB3hD,KAAM8nD,IAS7D,OARAn7C,EAAMmR,QAAS,EACfuqC,EAASjsC,IAAKma,EAAW6yB,IAAeA,EACxCf,EAASE,KAAOhyB,EAAW8wB,IAAeA,EAC1CgB,EAAS1U,OAASN,EAAUvtC,EAAQ6tC,YAAShxC,EA/LnC,IAgMNgK,EAAMA,MAAmBA,EAAMi8C,UAAUzU,IAAIkU,GAC5C7U,GAAU,WACb4U,EAAaC,EAAU17C,EACzB,IACO07C,EAAS9+B,OAClB,IAEAg+B,EAAuB,WACrB,IAAIh+B,EAAU,IAAI+9B,EACd36C,EAAQk7C,EAAwBt+B,GACpCvpB,KAAKupB,QAAUA,EACfvpB,KAAK8B,QAAUpD,EAAKwqD,GAAiBv8C,GACrC3M,KAAKsQ,OAAS5R,EAAKuqD,EAAgBt8C,EACrC,EAEAk6C,EAA2BtzB,EAAIglB,EAAuB,SAAUxe,GAC9D,OAAOA,IAAM+tB,QA1MmBuB,IA0MGtvB,EAC/B,IAAIwtB,EAAqBxtB,GACzBiuB,EAA4BjuB,EAClC,GAEK+W,GAAWva,EAAWqhB,IAA6BC,IAA2B95C,OAAOM,WAAW,CACnGmpD,EAAa3P,EAAuB91C,KAE/B6lD,GAEHjwB,EAAckgB,EAAwB,QAAQ,SAAcuR,EAAa/B,GACvE,IAAIrlB,EAAOhiC,KACX,OAAO,IAAI8nD,GAAmB,SAAUhmD,EAASwO,GAC/C5Q,EAAK8nD,EAAYxlB,EAAMlgC,EAASwO,EAClC,IAAGvO,KAAKqnD,EAAa/B,EAEvB,GAAG,CAAEnpB,QAAQ,IAIf,WACS2Z,EAAuB53C,WAChC,CAAE,MAAOyF,GAAqB,CAG1BlH,GACFA,EAAeq5C,EAAwBkQ,EAE3C,CAGFlX,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAM2L,MAAM,EAAMsuB,OAAQ+d,GAA8B,CACrFp2C,QAASimD,IAGXzsB,EAAeysB,EAAoBH,GAAS,GAAO,GACnDxH,EAAWwH,sCC9RX,IAAI9W,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClB8G,EAA2B,EAAQ,KACnCld,EAAQ,EAAQ,MAChB0S,EAAa,EAAQ,MACrB7W,EAAa,EAAQ,MACrBorB,EAAqB,EAAQ,MAC7B2H,EAAiB,EAAQ,MACzB3xB,EAAgB,EAAQ,MAExBkgB,EAAyBD,GAA4BA,EAAyBv5C,UA0BlF,GAhBAwyC,EAAE,CAAEtzC,OAAQ,UAAWm8B,OAAO,EAAM0tB,MAAM,EAAMltB,SAP5B0d,GAA4Bld,GAAM,WAEpDmd,EAAgC,QAAEn4C,KAAK,CAAEqC,KAAM,WAA0B,IAAK,WAA0B,GAC1G,KAIuE,CACrE,QAAW,SAAUwnD,GACnB,IAAIxvB,EAAI4nB,EAAmB3hD,KAAMotC,EAAW,YACxCoc,EAAajzB,EAAWgzB,GAC5B,OAAOvpD,KAAK+B,KACVynD,EAAa,SAAU7pC,GACrB,OAAO2pC,EAAevvB,EAAGwvB,KAAaxnD,MAAK,WAAc,OAAO4d,CAAG,GACrE,EAAI4pC,EACJC,EAAa,SAAU7pD,GACrB,OAAO2pD,EAAevvB,EAAGwvB,KAAaxnD,MAAK,WAAc,MAAMpC,CAAG,GACpE,EAAI4pD,EAER,KAIGzY,GAAWva,EAAWqhB,GAA2B,CACpD,IAAIvkC,EAAS+5B,EAAW,WAAW/uC,UAAmB,QAClDw5C,EAAgC,UAAMxkC,GACxCskB,EAAckgB,EAAwB,UAAWxkC,EAAQ,CAAE6qB,QAAQ,GAEvE,qCCxCA,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,wCCNR,IAAI2S,EAAI,EAAQ,MACZnxC,EAAO,EAAQ,MACfujC,EAAY,EAAQ,MACpB4jB,EAA6B,EAAQ,MACrCC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAKtBlW,EAAE,CAAEtzC,OAAQ,UAAWqsC,MAAM,EAAM1P,OAJO,EAAQ,MAIgC,CAChFuvB,KAAM,SAAc3Z,GAClB,IAAI/V,EAAI/5B,KACJgnD,EAAaH,EAA2BtzB,EAAEwG,GAC1CzpB,EAAS02C,EAAW12C,OACpBzQ,EAASinD,GAAQ,WACnB,IAAIG,EAAkBhkB,EAAUlJ,EAAEj4B,SAClCilD,EAAQjX,GAAU,SAAUvmB,GAC1B7pB,EAAKunD,EAAiBltB,EAAGxQ,GAASxnB,KAAKilD,EAAWllD,QAASwO,EAC7D,GACF,IAEA,OADIzQ,EAAO6F,OAAO4K,EAAOzQ,EAAOkB,OACzBimD,EAAWz9B,OACpB,uCCvBF,IAAIsnB,EAAI,EAAQ,MACZgW,EAA6B,EAAQ,MAKzChW,EAAE,CAAEtzC,OAAQ,UAAWqsC,MAAM,EAAM1P,OAJF,oBAIwC,CACvE5pB,OAAQ,SAAgB1K,GACtB,IAAIohD,EAAaH,EAA2BtzB,EAAEvzB,MAG9C,OADA0pD,EADuB1C,EAAW12C,QACjB1K,GACVohD,EAAWz9B,OACpB,sCCZF,IAAIsnB,EAAI,EAAQ,MACZzD,EAAa,EAAQ,MACrB0D,EAAU,EAAQ,MAClB8G,EAA2B,EAAQ,KACnCK,EAA6B,mBAC7BqR,EAAiB,EAAQ,MAEzBK,EAA4Bvc,EAAW,WACvCwc,EAAgB9Y,IAAYmH,EAIhCpH,EAAE,CAAEtzC,OAAQ,UAAWqsC,MAAM,EAAM1P,OAAQ4W,GAAWmH,GAA8B,CAClFn2C,QAAS,SAAiB6d,GACxB,OAAO2pC,EAAeM,GAAiB5pD,OAAS2pD,EAA4B/R,EAA2B53C,KAAM2f,EAC/G,sCCfF,IAAIkxB,EAAI,EAAQ,MACZzD,EAAa,EAAQ,MACrBjtC,EAAQ,EAAQ,MAChBzB,EAAO,EAAQ,KACfq8C,EAAe,EAAQ,MACvB9W,EAAW,EAAQ,MACnB7M,EAAW,EAAQ,IACnB70B,EAAS,EAAQ,MACjBm4B,EAAQ,EAAQ,MAEhBmvB,EAAkBzc,EAAW,UAAW,aACxC5U,EAAkBz6B,OAAOM,UACzBgD,EAAO,GAAGA,KAMVyoD,EAAiBpvB,GAAM,WACzB,SAAS1S,IAAkB,CAC3B,QAAS6hC,GAAgB,WAA0B,GAAG,GAAI7hC,aAAcA,EAC1E,IAEI+hC,GAAYrvB,GAAM,WACpBmvB,GAAgB,WAA0B,GAC5C,IAEInnB,EAASonB,GAAkBC,EAE/BlZ,EAAE,CAAEtzC,OAAQ,UAAWqsC,MAAM,EAAM1P,OAAQwI,EAAQpjC,KAAMojC,GAAU,CACjErjC,UAAW,SAAmBq5C,EAAQj0C,GACpCs2C,EAAarC,GACbzU,EAASx/B,GACT,IAAIulD,EAAY9pD,UAAUxC,OAAS,EAAIg7C,EAASqC,EAAa76C,UAAU,IACvE,GAAI6pD,IAAaD,EAAgB,OAAOD,EAAgBnR,EAAQj0C,EAAMulD,GACtE,GAAItR,IAAWsR,EAAW,CAExB,OAAQvlD,EAAK/G,QACX,KAAK,EAAG,OAAO,IAAIg7C,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAOj0C,EAAK,IAC/B,KAAK,EAAG,OAAO,IAAIi0C,EAAOj0C,EAAK,GAAIA,EAAK,IACxC,KAAK,EAAG,OAAO,IAAIi0C,EAAOj0C,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjD,KAAK,EAAG,OAAO,IAAIi0C,EAAOj0C,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG5D,IAAIwlD,EAAQ,CAAC,MAEb,OADA9pD,EAAMkB,EAAM4oD,EAAOxlD,GACZ,IAAKtE,EAAMzB,EAAMg6C,EAAQuR,GAClC,CAEA,IAAIvwB,EAAQswB,EAAU3rD,UAClBlB,EAAWoF,EAAO60B,EAASsC,GAASA,EAAQlB,GAC5C34B,EAASM,EAAMu4C,EAAQv7C,EAAUsH,GACrC,OAAO2yB,EAASv3B,GAAUA,EAAS1C,CACrC,uCCtDF,IAAIo6B,EAAc,EAAQ,MACtBvX,EAAa,EAAQ,MACrBua,EAAc,EAAQ,MACtB+O,EAAW,EAAQ,MACnBnO,EAAoB,EAAQ,MAC5BzD,EAA8B,EAAQ,MACtCn1B,EAAS,EAAQ,MACjBumB,EAAsB,UACtBoB,EAAgB,EAAQ,MACxBslB,EAAW,EAAQ,KACnBlmC,EAAW,EAAQ,KACnB4gD,EAAiB,EAAQ,MACzBjR,EAAgB,EAAQ,MACxBkR,EAAgB,EAAQ,MACxBxyB,EAAgB,EAAQ,MACxB+C,EAAQ,EAAQ,MAChBlD,EAAS,EAAQ,MACjBO,EAAuB,gBACvBooB,EAAa,EAAQ,MACrBrpB,EAAkB,EAAQ,MAC1BoiB,EAAsB,EAAQ,MAC9BC,EAAkB,EAAQ,MAE1B5T,EAAQzO,EAAgB,SACxBszB,EAAepqC,EAAW7V,OAC1B4/B,EAAkBqgB,EAAa/rD,UAC/BgsD,EAAcrqC,EAAWqqC,YACzBt4B,EAAOwI,EAAYwP,EAAgBhY,MACnC/S,EAASub,EAAY,GAAGvb,QACxB7Z,EAAUo1B,EAAY,GAAGp1B,SACzBmlD,EAAgB/vB,EAAY,GAAG9tB,SAC/Bk4B,EAAcpK,EAAY,GAAG54B,OAE7B4oD,EAAS,2CACTzR,EAAM,KACNC,EAAM,KAGNyR,EAAc,IAAIJ,EAAatR,KAASA,EAExC0B,EAAgBvB,EAAcuB,cAC9Bf,EAAgBR,EAAcQ,cAoFlC,GAAInQ,EAAS,SAlFK/R,KACdizB,GAAehQ,GAAiBtB,GAAuBC,GAAmBze,GAAM,WAIhF,OAHAqe,EAAIxT,IAAS,EAGN6kB,EAAatR,KAASA,GAAOsR,EAAarR,KAASA,GAA0C,SAAnC5qC,OAAOi8C,EAAatR,EAAK,KAC5F,MA4EmC,CA4DnC,IA3DA,IAAI2R,EAAgB,SAAgBC,EAASpgB,GAC3C,IAKIqgB,EAAUvQ,EAAQN,EAAQ8Q,EAAS/qD,EAAQ8M,EAL3Ck+C,EAAe3gC,EAAc6f,EAAiB/pC,MAC9C8qD,EAAkBtb,EAASkb,GAC3BK,OAA8BpoD,IAAV2nC,EACpBj8B,EAAS,GACT28C,EAAaN,EAGjB,IAAKG,GAAgBC,GAAmBC,GAAqBL,EAAQzqD,cAAgBwqD,EACnF,OAAOC,EA0CT,IAvCII,GAAmB5gC,EAAc6f,EAAiB2gB,MACpDA,EAAUA,EAAQrlB,OACd0lB,IAAmBzgB,EAAQ4f,EAAec,KAGhDN,OAAsB/nD,IAAZ+nD,EAAwB,GAAKphD,EAASohD,GAChDpgB,OAAkB3nC,IAAV2nC,EAAsB,GAAKhhC,EAASghC,GAC5C0gB,EAAaN,EAETxR,GAAuB,WAAYJ,IACrCsB,IAAW9P,GAASggB,EAAchgB,EAAO,MAAQ,KACrCA,EAAQnlC,EAAQmlC,EAAO,KAAM,KAG3CqgB,EAAWrgB,EAEPkQ,GAAiB,WAAY1B,IAC/BgB,IAAWxP,GAASggB,EAAchgB,EAAO,MAAQ,IACnCmP,IAAenP,EAAQnlC,EAAQmlC,EAAO,KAAM,KAGxD6O,IACFyR,EArFU,SAAUjlB,GAWxB,IAVA,IASIoP,EATAr3C,EAASioC,EAAOjoC,OAChBuH,EAAQ,EACRpF,EAAS,GACTorD,EAAQ,GACRrhD,EAAQrH,EAAO,MACf2oD,GAAW,EACXC,GAAM,EACNC,EAAU,EACVC,EAAY,GAETpmD,GAASvH,EAAQuH,IAAS,CAE/B,GAAY,QADZ8vC,EAAM/1B,EAAO2mB,EAAQ1gC,IAEnB8vC,GAAO/1B,EAAO2mB,IAAU1gC,QACnB,GAAY,MAAR8vC,EACTmW,GAAW,OACN,IAAKA,EAAU,QAAQ,GAC5B,IAAa,MAARnW,EACHmW,GAAW,EACX,MACF,IAAa,MAARnW,EAGH,GAFAl1C,GAAUk1C,EAEwC,OAA9CpQ,EAAYgB,EAAQ1gC,EAAQ,EAAGA,EAAQ,GACzC,SAEE8sB,EAAKw4B,EAAQ5lB,EAAYgB,EAAQ1gC,EAAQ,MAC3CA,GAAS,EACTkmD,GAAM,GAERC,IACA,SACF,IAAa,MAARrW,GAAeoW,EAClB,GAAkB,KAAdE,GAAoB7zB,EAAO5tB,EAAOyhD,GACpC,MAAM,IAAIhB,EAAY,8BAExBzgD,EAAMyhD,IAAa,EACnBJ,EAAMA,EAAMvtD,QAAU,CAAC2tD,EAAWD,GAClCD,GAAM,EACNE,EAAY,GACZ,SAEAF,EAAKE,GAAatW,EACjBl1C,GAAUk1C,CACjB,CAAE,MAAO,CAACl1C,EAAQorD,EACpB,CAuCgBK,CAAUZ,GACpBA,EAAUE,EAAQ,GAClBv8C,EAASu8C,EAAQ,IAGnB/qD,EAASs7B,EAAkBivB,EAAaM,EAASpgB,GAAQugB,EAAe7qD,KAAO+pC,EAAiB0gB,IAE5FrQ,GAAUN,GAAUzrC,EAAO3Q,UAC7BiP,EAAQorB,EAAqBl4B,GACzBu6C,IACFztC,EAAMytC,QAAS,EACfztC,EAAMktC,IAAM4Q,EAxHD,SAAU9kB,GAM3B,IALA,IAIIoP,EAJAr3C,EAASioC,EAAOjoC,OAChBuH,EAAQ,EACRpF,EAAS,GACTqrD,GAAW,EAERjmD,GAASvH,EAAQuH,IAEV,QADZ8vC,EAAM/1B,EAAO2mB,EAAQ1gC,IAKhBimD,GAAoB,MAARnW,GAGH,MAARA,EACFmW,GAAW,EACM,MAARnW,IACTmW,GAAW,GACXrrD,GAAUk1C,GANZl1C,GAAU,WAJVA,GAAUk1C,EAAM/1B,EAAO2mB,IAAU1gC,GAYnC,OAAOpF,CACX,CAkGkC0rD,CAAab,GAAUC,IAE/C7Q,IAAQntC,EAAMmtC,QAAS,GACvBzrC,EAAO3Q,SAAQiP,EAAM0B,OAASA,IAGhCq8C,IAAYM,EAAY,IAE1BtzB,EAA4B73B,EAAQ,SAAyB,KAAfmrD,EAAoB,OAASA,EAC7E,CAAE,MAAOtlD,GAAqB,CAE9B,OAAO7F,CACT,EAESwK,EAAOye,EAAoBshC,GAAenlD,EAAQ,EAAGoF,EAAK3M,OAASuH,GAC1EklD,EAAcM,EAAeL,EAAc//C,EAAKpF,MAGlD8kC,EAAgB9pC,YAAcwqD,EAC9BA,EAAcpsD,UAAY0rC,EAC1BpS,EAAc3X,EAAY,SAAUyqC,EAAe,CAAExqD,aAAa,GACpE,CAGAkgD,EAAW,6CCnMX,IAAItP,EAAI,EAAQ,MACZ9e,EAAO,EAAQ,MAInB8e,EAAE,CAAEtzC,OAAQ,SAAUm8B,OAAO,EAAMQ,OAAQ,IAAInI,OAASA,GAAQ,CAC9DA,KAAMA,uCCNR,IAAIuJ,EAAuB,cACvB3D,EAAgB,EAAQ,MACxBsM,EAAW,EAAQ,MACnBunB,EAAY,EAAQ,KACpB9wB,EAAQ,EAAQ,MAChBwvB,EAAiB,EAAQ,MAEzBuB,EAAY,WACZ1hB,EAAkB5/B,OAAO9L,UACzBqtD,EAAiB3hB,EAAgB0hB,GAEjCE,EAAcjxB,GAAM,WAAc,MAA4D,SAArDgxB,EAAehsD,KAAK,CAAE2lC,OAAQ,IAAKiF,MAAO,KAAmB,IAEtGshB,EAAiBtwB,GAAwBowB,EAAejoD,OAASgoD,GAIjEE,GAAeC,IACjBj0B,EAAcoS,EAAiB0hB,GAAW,WACxC,IAAI5S,EAAI5U,EAASjkC,MAGjB,MAAO,IAFOwrD,EAAU3S,EAAExT,QAEH,IADXmmB,EAAUtB,EAAerR,GAEvC,GAAG,CAAE3a,QAAQ,uCCvBf,IAAI2S,EAAI,EAAQ,MACZtW,EAAc,EAAQ,MACtB6E,EAAkB,EAAQ,MAE1Buc,EAAc7vB,WACdjB,EAAe1c,OAAO0c,aAEtBghC,EAAiB19C,OAAO29C,cACxB/hD,EAAOwwB,EAAY,GAAGxwB,MAO1B8mC,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAMuI,MAAO,EAAGjY,SAJnB2xB,GAA4C,IAA1BA,EAAenuD,QAIc,CAEtEouD,cAAe,SAAuBnsC,GAKpC,IAJA,IAGI3D,EAHA+vC,EAAW,GACXruD,EAASwC,UAAUxC,OACnBD,EAAI,EAEDC,EAASD,GAAG,CAEjB,GADAue,GAAQ9b,UAAUzC,KACd2hC,EAAgBpjB,EAAM,WAAcA,EAAM,MAAM,IAAI2/B,EAAY3/B,EAAO,8BAC3E+vC,EAAStuD,GAAKue,EAAO,MACjB6O,EAAa7O,GACb6O,EAAyC,QAA1B7O,GAAQ,QAAY,IAAcA,EAAO,KAAQ,MACtE,CAAE,OAAOjS,EAAKgiD,EAAU,GAC1B,uCC7BF,IAAIlb,EAAI,EAAQ,MACZtW,EAAc,EAAQ,MACtByxB,EAAa,EAAQ,MACrBvmB,EAAyB,EAAQ,MACjCn8B,EAAW,EAAQ,KACnB2iD,EAAuB,EAAQ,MAE/B3B,EAAgB/vB,EAAY,GAAG9tB,SAInCokC,EAAE,CAAEtzC,OAAQ,SAAUm8B,OAAO,EAAMQ,QAAS+xB,EAAqB,aAAe,CAC9EpqC,SAAU,SAAkBqqC,GAC1B,SAAU5B,EACRhhD,EAASm8B,EAAuBzlC,OAChCsJ,EAAS0iD,EAAWE,IACpBhsD,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAE1C,uCClBF,IAAIqc,EAAS,eACT1V,EAAW,EAAQ,KACnBwuB,EAAsB,EAAQ,MAC9BqrB,EAAiB,EAAQ,MACzBC,EAAyB,EAAQ,MAEjC+I,EAAkB,kBAClBlwB,EAAmBnE,EAAoB9uB,IACvCivB,EAAmBH,EAAoBiE,UAAUowB,GAIrDhJ,EAAeh1C,OAAQ,UAAU,SAAUm1C,GACzCrnB,EAAiBj8B,KAAM,CACrBiB,KAAMkrD,EACNxmB,OAAQr8B,EAASg6C,GACjBr+C,MAAO,GAIX,IAAG,WACD,IAGImnD,EAHAz/C,EAAQsrB,EAAiBj4B,MACzB2lC,EAASh5B,EAAMg5B,OACf1gC,EAAQ0H,EAAM1H,MAElB,OAAIA,GAAS0gC,EAAOjoC,OAAe0lD,OAAuBzgD,GAAW,IACrEypD,EAAQptC,EAAO2mB,EAAQ1gC,GACvB0H,EAAM1H,OAASmnD,EAAM1uD,OACd0lD,EAAuBgJ,GAAO,GACvC,sCC7BA,IAAIvb,EAAI,EAAQ,MACZwb,EAAa,EAAQ,MAKzBxb,EAAE,CAAEtzC,OAAQ,SAAUm8B,OAAO,EAAMQ,OAJN,EAAQ,KAIMoyB,CAAuB,SAAW,CAC3El2C,KAAM,SAAc3I,GAClB,OAAO4+C,EAAWrsD,KAAM,IAAK,OAAQyN,EACvC,uCCTF,IAAI/N,EAAO,EAAQ,MACf6sD,EAAgC,EAAQ,MACxCtoB,EAAW,EAAQ,MACnB8H,EAAoB,EAAQ,MAC5BlR,EAAW,EAAQ,MACnBvxB,EAAW,EAAQ,KACnBm8B,EAAyB,EAAQ,MACjCqG,EAAY,EAAQ,MACpB0gB,EAAqB,EAAQ,MAC7BvH,EAAa,EAAQ,MAGzBsH,EAA8B,SAAS,SAAUhnB,EAAOknB,EAAaC,GACnE,MAAO,CAGL,SAAerjD,GACb,IAAIo2B,EAAIgG,EAAuBzlC,MAC3B2sD,EAAU5gB,EAAkB1iC,QAAU1G,EAAYmpC,EAAUziC,EAAQk8B,GACxE,OAAOonB,EAAUjtD,EAAKitD,EAAStjD,EAAQo2B,GAAK,IAAIt1B,OAAOd,GAAQk8B,GAAOj8B,EAASm2B,GACjF,EAGA,SAAUkG,GACR,IAAIinB,EAAK3oB,EAASjkC,MACdi3B,EAAI3tB,EAASq8B,GACbv2B,EAAMs9C,EAAgBD,EAAaG,EAAI31B,GAE3C,GAAI7nB,EAAIwZ,KAAM,OAAOxZ,EAAIrO,MAEzB,IAAK6rD,EAAG9kC,OAAQ,OAAOm9B,EAAW2H,EAAI31B,GAEtC,IAAI41B,EAAcD,EAAG11B,QACrB01B,EAAGpT,UAAY,EAIf,IAHA,IAEI35C,EAFA80C,EAAI,GACJ/iB,EAAI,EAEgC,QAAhC/xB,EAASolD,EAAW2H,EAAI31B,KAAc,CAC5C,IAAI61B,EAAWxjD,EAASzJ,EAAO,IAC/B80C,EAAE/iB,GAAKk7B,EACU,KAAbA,IAAiBF,EAAGpT,UAAYgT,EAAmBv1B,EAAG4D,EAAS+xB,EAAGpT,WAAYqT,IAClFj7B,GACF,CACA,OAAa,IAANA,EAAU,KAAO+iB,CAC1B,EAEJ,uCC9CA,IAAIx0C,EAAQ,EAAQ,MAChBT,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBgyB,EAAgC,EAAQ,MACxC7xB,EAAQ,EAAQ,MAChBuJ,EAAW,EAAQ,MACnB1N,EAAa,EAAQ,MACrBwV,EAAoB,EAAQ,MAC5BnR,EAAsB,EAAQ,MAC9BC,EAAW,EAAQ,MACnBvxB,EAAW,EAAQ,KACnBm8B,EAAyB,EAAQ,MACjC+mB,EAAqB,EAAQ,MAC7B1gB,EAAY,EAAQ,MACpBihB,EAAkB,EAAQ,MAC1B9H,EAAa,EAAQ,MAGrB+H,EAFkB,EAAQ,KAEhBl2B,CAAgB,WAC1BqoB,EAAM10C,KAAK00C,IACX5f,EAAM90B,KAAK80B,IACX71B,EAAS6wB,EAAY,GAAG7wB,QACxBrI,EAAOk5B,EAAY,GAAGl5B,MACtBipD,EAAgB/vB,EAAY,GAAG9tB,SAC/Bk4B,EAAcpK,EAAY,GAAG54B,OAQ7BsrD,EAEgC,OAA3B,IAAI9nD,QAAQ,IAAK,MAItB+nD,IACE,IAAIF,IAC6B,KAA5B,IAAIA,GAAS,IAAK,MAiB7BT,EAA8B,WAAW,SAAUY,EAAG/T,EAAesT,GACnE,IAAIU,EAAoBF,EAA+C,IAAM,KAE7E,MAAO,CAGL,SAAiBG,EAAaC,GAC5B,IAAI7tB,EAAIgG,EAAuBzlC,MAC3BksC,EAAWH,EAAkBshB,QAAe1qD,EAAYmpC,EAAUuhB,EAAaL,GACnF,OAAO9gB,EACHxsC,EAAKwsC,EAAUmhB,EAAa5tB,EAAG6tB,GAC/B5tD,EAAK05C,EAAe9vC,EAASm2B,GAAI4tB,EAAaC,EACpD,EAGA,SAAU3nB,EAAQ2nB,GAChB,IAAIV,EAAK3oB,EAASjkC,MACdi3B,EAAI3tB,EAASq8B,GAEjB,GACyB,iBAAhB2nB,IAC6C,IAApDhD,EAAcgD,EAAcF,KACW,IAAvC9C,EAAcgD,EAAc,MAC5B,CACA,IAAIl+C,EAAMs9C,EAAgBtT,EAAewT,EAAI31B,EAAGq2B,GAChD,GAAIl+C,EAAIwZ,KAAM,OAAOxZ,EAAIrO,KAC3B,CAEA,IAAIwsD,EAAoBh3B,EAAW+2B,GAC9BC,IAAmBD,EAAehkD,EAASgkD,IAEhD,IACIT,EADA/kC,EAAS8kC,EAAG9kC,OAEZA,IACF+kC,EAAcD,EAAG11B,QACjB01B,EAAGpT,UAAY,GAKjB,IAFA,IACI35C,EADA2tD,EAAU,GAIG,QADf3tD,EAASolD,EAAW2H,EAAI31B,MAGxB51B,EAAKmsD,EAAS3tD,GACTioB,IAGY,KADFxe,EAASzJ,EAAO,MACV+sD,EAAGpT,UAAYgT,EAAmBv1B,EAAG4D,EAAS+xB,EAAGpT,WAAYqT,IAKpF,IAFA,IAlFwB7+B,EAkFpBy/B,EAAoB,GACpBC,EAAqB,EAChBjwD,EAAI,EAAGA,EAAI+vD,EAAQ9vD,OAAQD,IAAK,CAYvC,IATA,IAGIqvC,EAHAJ,EAAUpjC,GAFdzJ,EAAS2tD,EAAQ/vD,IAEa,IAC1BkvC,EAAWwS,EAAI5f,EAAI3E,EAAoB/6B,EAAOoF,OAAQgyB,EAAEv5B,QAAS,GACjEkvC,EAAW,GAONtlC,EAAI,EAAGA,EAAIzH,EAAOnC,OAAQ4J,IAAKjG,EAAKurC,OA/FrCjqC,KADcqrB,EAgG+CnuB,EAAOyH,IA/FxD0mB,EAAK7f,OAAO6f,IAgGhC,IAAI6e,EAAgBhtC,EAAOwO,OAC3B,GAAIk/C,EAAmB,CACrB,IAAII,EAAejkD,EAAO,CAACgjC,GAAUE,EAAUD,EAAU1V,QACnCt0B,IAAlBkqC,GAA6BxrC,EAAKssD,EAAc9gB,GACpDC,EAAcxjC,EAASnJ,EAAMmtD,OAAc3qD,EAAWgrD,GACxD,MACE7gB,EAAcigB,EAAgBrgB,EAASzV,EAAG0V,EAAUC,EAAUC,EAAeygB,GAE3E3gB,GAAY+gB,IACdD,GAAqB9oB,EAAY1N,EAAGy2B,EAAoB/gB,GAAYG,EACpE4gB,EAAqB/gB,EAAWD,EAAQhvC,OAE5C,CAEA,OAAO+vD,EAAoB9oB,EAAY1N,EAAGy2B,EAC5C,EAEJ,KA/FqChzB,GAAM,WACzC,IAAI2P,EAAK,IAOT,OANAA,EAAGtY,KAAO,WACR,IAAIlyB,EAAS,GAEb,OADAA,EAAOwO,OAAS,CAAEkiB,EAAG,KACd1wB,CACT,EAEkC,MAA3B,GAAGsF,QAAQklC,EAAI,OACxB,MAsFsC4iB,GAAoBC,sCC5I1D,IAAIxtD,EAAO,EAAQ,MACf6sD,EAAgC,EAAQ,MACxCtoB,EAAW,EAAQ,MACnB8H,EAAoB,EAAQ,MAC5BtG,EAAyB,EAAQ,MACjCmoB,EAAY,EAAQ,MACpBtkD,EAAW,EAAQ,KACnBwiC,EAAY,EAAQ,MACpBmZ,EAAa,EAAQ,MAGzBsH,EAA8B,UAAU,SAAUsB,EAAQC,EAAcpB,GACtE,MAAO,CAGL,SAAgBrjD,GACd,IAAIo2B,EAAIgG,EAAuBzlC,MAC3B+tD,EAAWhiB,EAAkB1iC,QAAU1G,EAAYmpC,EAAUziC,EAAQwkD,GACzE,OAAOE,EAAWruD,EAAKquD,EAAU1kD,EAAQo2B,GAAK,IAAIt1B,OAAOd,GAAQwkD,GAAQvkD,EAASm2B,GACpF,EAGA,SAAUkG,GACR,IAAIinB,EAAK3oB,EAASjkC,MACdi3B,EAAI3tB,EAASq8B,GACbv2B,EAAMs9C,EAAgBoB,EAAclB,EAAI31B,GAE5C,GAAI7nB,EAAIwZ,KAAM,OAAOxZ,EAAIrO,MAEzB,IAAIitD,EAAoBpB,EAAGpT,UACtBoU,EAAUI,EAAmB,KAAIpB,EAAGpT,UAAY,GACrD,IAAI35C,EAASolD,EAAW2H,EAAI31B,GAE5B,OADK22B,EAAUhB,EAAGpT,UAAWwU,KAAoBpB,EAAGpT,UAAYwU,GAC9C,OAAXnuD,GAAmB,EAAIA,EAAOoF,KACvC,EAEJ,sCCpCA,IAAIvF,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBgyB,EAAgC,EAAQ,MACxCtoB,EAAW,EAAQ,MACnB8H,EAAoB,EAAQ,MAC5BtG,EAAyB,EAAQ,MACjCkc,EAAqB,EAAQ,MAC7B6K,EAAqB,EAAQ,MAC7B3xB,EAAW,EAAQ,MACnBvxB,EAAW,EAAQ,KACnBwiC,EAAY,EAAQ,MACpBmZ,EAAa,EAAQ,MACrBhM,EAAgB,EAAQ,MACxBve,EAAQ,EAAQ,MAEhB+e,EAAgBR,EAAcQ,cAE9Bla,EAAM90B,KAAK80B,IACXl+B,EAAOk5B,EAAY,GAAGl5B,MACtBsjC,EAAcpK,EAAY,GAAG54B,OAI7BssD,GAAqCvzB,GAAM,WAE7C,IAAI2P,EAAK,OACL6jB,EAAe7jB,EAAGtY,KACtBsY,EAAGtY,KAAO,WAAc,OAAOm8B,EAAa/tD,MAAMH,KAAME,UAAY,EACpE,IAAIL,EAAS,KAAKoK,MAAMogC,GACxB,OAAyB,IAAlBxqC,EAAOnC,QAA8B,MAAdmC,EAAO,IAA4B,MAAdA,EAAO,EAC5D,IAEIsuD,EAAoC,MAA5B,OAAOlkD,MAAM,QAAQ,IAEK,IAApC,OAAOA,MAAM,QAAS,GAAGvM,QACQ,IAAjC,KAAKuM,MAAM,WAAWvM,QACW,IAAjC,IAAIuM,MAAM,YAAYvM,QAEtB,IAAIuM,MAAM,QAAQvM,OAAS,GAC3B,GAAGuM,MAAM,MAAMvM,OAGjB6uD,EAA8B,SAAS,SAAU6B,EAAOC,EAAa3B,GACnE,IAAI4B,EAAgB,IAAIrkD,WAAMtH,EAAW,GAAGjF,OAAS,SAAU+lD,EAAW8K,GACxE,YAAqB5rD,IAAd8gD,GAAqC,IAAV8K,EAAc,GAAK7uD,EAAK2uD,EAAaruD,KAAMyjD,EAAW8K,EAC1F,EAAIF,EAEJ,MAAO,CAGL,SAAe5K,EAAW8K,GACxB,IAAI9uB,EAAIgG,EAAuBzlC,MAC3BwuD,EAAWziB,EAAkB0X,QAAa9gD,EAAYmpC,EAAU2X,EAAW2K,GAC/E,OAAOI,EACH9uD,EAAK8uD,EAAU/K,EAAWhkB,EAAG8uB,GAC7B7uD,EAAK4uD,EAAehlD,EAASm2B,GAAIgkB,EAAW8K,EAClD,EAMA,SAAU5oB,EAAQ4oB,GAChB,IAAI3B,EAAK3oB,EAASjkC,MACdi3B,EAAI3tB,EAASq8B,GAEjB,IAAKwoB,EAAO,CACV,IAAI/+C,EAAMs9C,EAAgB4B,EAAe1B,EAAI31B,EAAGs3B,EAAOD,IAAkBD,GACzE,GAAIj/C,EAAIwZ,KAAM,OAAOxZ,EAAIrO,KAC3B,CAEA,IAAIg5B,EAAI4nB,EAAmBiL,EAAIziD,QAC3BskD,EAAkB7B,EAAG11B,QACrBoT,GAASsiB,EAAGzS,WAAa,IAAM,KACtByS,EAAG3S,UAAY,IAAM,KACrB2S,EAAG11B,QAAU,IAAM,KACnBuiB,EAAgB,IAAM,KAG/B+U,EAAW,IAAIz0B,EAAE0f,EAAgB,OAASmT,EAAGvnB,OAAS,IAAMunB,EAAItiB,GAChEokB,OAAgB/rD,IAAV4rD,EAhEC,WAgEkCA,IAAU,EACvD,GAAY,IAARG,EAAW,MAAO,GACtB,GAAiB,IAAbz3B,EAAEv5B,OAAc,OAAmC,OAA5BunD,EAAWuJ,EAAUv3B,GAAc,CAACA,GAAK,GAIpE,IAHA,IAAIp4B,EAAI,EACJg+C,EAAI,EACJlI,EAAI,GACDkI,EAAI5lB,EAAEv5B,QAAQ,CACnB8wD,EAAShV,UAAYC,EAAgB,EAAIoD,EACzC,IACIl9C,EADAgvD,EAAI1J,EAAWuJ,EAAU/U,EAAgB9U,EAAY1N,EAAG4lB,GAAK5lB,GAEjE,GACQ,OAAN03B,IACChvD,EAAI4/B,EAAI1E,EAAS2zB,EAAShV,WAAaC,EAAgBoD,EAAI,IAAK5lB,EAAEv5B,WAAamB,EAEhFg+C,EAAI2P,EAAmBv1B,EAAG4lB,EAAG4R,OACxB,CAEL,GADAptD,EAAKszC,EAAGhQ,EAAY1N,EAAGp4B,EAAGg+C,IACtBlI,EAAEj3C,SAAWgxD,EAAK,OAAO/Z,EAC7B,IAAK,IAAIl3C,EAAI,EAAGA,GAAKkxD,EAAEjxD,OAAS,EAAGD,IAEjC,GADA4D,EAAKszC,EAAGga,EAAElxD,IACNk3C,EAAEj3C,SAAWgxD,EAAK,OAAO/Z,EAE/BkI,EAAIh+C,EAAIc,CACV,CACF,CAEA,OADA0B,EAAKszC,EAAGhQ,EAAY1N,EAAGp4B,IAChB81C,CACT,EAEJ,GAAGwZ,IAAUF,EAAmCxU,sCC7GhD,IAAI5I,EAAI,EAAQ,MACZ+d,EAAQ,aAKZ/d,EAAE,CAAEtzC,OAAQ,SAAUm8B,OAAO,EAAMQ,OAJN,EAAQ,IAIM20B,CAAuB,SAAW,CAC3EzgD,KAAM,WACJ,OAAOwgD,EAAM5uD,KACf,uCCTF,IAAI6wC,EAAI,EAAQ,MACZ7wB,EAAa,EAAQ,MACrBtgB,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBuW,EAAU,EAAQ,MAClBvZ,EAAc,EAAQ,MACtBkmB,EAAgB,EAAQ,MACxB/iB,EAAQ,EAAQ,MAChBlD,EAAS,EAAQ,MACjBtN,EAAgB,EAAQ,MACxB+Z,EAAW,EAAQ,MACnBjD,EAAkB,EAAQ,MAC1BtO,EAAgB,EAAQ,MACxB84B,EAAY,EAAQ,KACpB1lB,EAA2B,EAAQ,MACnCgpB,EAAqB,EAAQ,MAC7Bva,EAAa,EAAQ,MACrBoD,EAA4B,EAAQ,MACpCoX,EAA8B,EAAQ,KACtCva,EAA8B,EAAQ,MACtCrP,EAAiC,EAAQ,MACzCC,EAAuB,EAAQ,MAC/B8P,EAAyB,EAAQ,MACjCT,EAA6B,EAAQ,MACrC9c,EAAgB,EAAQ,MACxBC,EAAwB,EAAQ,MAChCyW,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,KACrB1W,EAAM,EAAQ,MACdf,EAAkB,EAAQ,MAC1BmrB,EAA+B,EAAQ,MACvC+M,EAAwB,EAAQ,KAChCC,EAA0B,EAAQ,MAClC5zB,EAAiB,EAAQ,KACzBvD,EAAsB,EAAQ,MAC9BgI,EAAW,gBAEXovB,EAAS5gB,EAAU,UACnBrE,EAAS,SACTrO,EAAY,YAEZK,EAAmBnE,EAAoB9uB,IACvCivB,EAAmBH,EAAoBiE,UAAUkO,GAEjDzR,EAAkBz6B,OAAO69B,GACzB8T,EAAU1vB,EAAWlc,OACrBw5C,EAAkB5N,GAAWA,EAAQ9T,GACrC9P,EAAa9L,EAAW8L,WACxBzuB,EAAY2iB,EAAW3iB,UACvB8xD,EAAUnvC,EAAWmvC,QACrB7O,EAAiCnb,EAA+B5R,EAChE8sB,EAAuBjb,EAAqB7R,EAC5C67B,EAA4BL,EAA4Bx7B,EACxD87B,GAA6B5a,EAA2BlhB,EACxDlyB,GAAOk5B,EAAY,GAAGl5B,MAEtBiuD,GAAajhB,EAAO,WACpBkhB,GAAyBlhB,EAAO,cAChC6T,GAAwB7T,EAAO,OAG/BmhB,IAAcL,IAAYA,EAAQvzB,KAAeuzB,EAAQvzB,GAAW6zB,UAGpEC,GAAyB,SAAUjwB,EAAG8G,EAAGuQ,GAC3C,IAAI6Y,EAA4BrP,EAA+B9nB,EAAiB+N,GAC5EopB,UAAkCn3B,EAAgB+N,GACtD8Z,EAAqB5gB,EAAG8G,EAAGuQ,GACvB6Y,GAA6BlwB,IAAMjH,GACrC6nB,EAAqB7nB,EAAiB+N,EAAGopB,EAE7C,EAEIC,GAAsBr4B,GAAemD,GAAM,WAC7C,OAEU,IAFHo0B,EAAmBzO,EAAqB,CAAC,EAAG,IAAK,CACtD//C,IAAK,WAAc,OAAO+/C,EAAqBrgD,KAAM,IAAK,CAAEe,MAAO,IAAKwvB,CAAG,KACzEA,CACN,IAAKm/B,GAAyBrP,EAE1Bz0C,GAAO,SAAUo5B,EAAK6qB,GACxB,IAAIhb,EAASya,GAAWtqB,GAAO8pB,EAAmBxR,GAOlD,OANArhB,EAAiB4Y,EAAQ,CACvB5zC,KAAMgpC,EACNjF,IAAKA,EACL6qB,YAAaA,IAEVt4B,IAAasd,EAAOgb,YAAcA,GAChChb,CACT,EAEI6B,GAAkB,SAAwBjX,EAAG8G,EAAGuQ,GAC9CrX,IAAMjH,GAAiBke,GAAgB6Y,GAAwBhpB,EAAGuQ,GACtE7S,EAASxE,GACT,IAAIxhC,EAAMy0B,EAAc6T,GAExB,OADAtC,EAAS6S,GACLtf,EAAO83B,GAAYrxD,IAChB64C,EAAWl5C,YAIV45B,EAAOiI,EAAGyvB,IAAWzvB,EAAEyvB,GAAQjxD,KAAMwhC,EAAEyvB,GAAQjxD,IAAO,GAC1D64C,EAAagY,EAAmBhY,EAAY,CAAEl5C,WAAYkoC,EAAyB,GAAG,OAJjFtO,EAAOiI,EAAGyvB,IAAS7O,EAAqB5gB,EAAGyvB,EAAQppB,EAAyB,EAAGgpB,EAAmB,QACvGrvB,EAAEyvB,GAAQjxD,IAAO,GAIV2xD,GAAoBnwB,EAAGxhC,EAAK64C,IAC9BuJ,EAAqB5gB,EAAGxhC,EAAK64C,EACxC,EAEIgZ,GAAoB,SAA0BrwB,EAAG8W,GACnDtS,EAASxE,GACT,IAAIswB,EAAa/uB,EAAgBuV,GAC7BlsC,EAAOkqC,EAAWwb,GAAYrmD,OAAOi9C,GAAuBoJ,IAIhE,OAHAjwB,EAASz1B,GAAM,SAAUpM,GAClBs5B,IAAe73B,EAAK23C,GAAuB0Y,EAAY9xD,IAAMy4C,GAAgBjX,EAAGxhC,EAAK8xD,EAAW9xD,GACvG,IACOwhC,CACT,EAMI4X,GAAwB,SAA8B/K,GACxD,IAAI/F,EAAI7T,EAAc4Z,GAClB1uC,EAAa8B,EAAK2vD,GAA4BrvD,KAAMumC,GACxD,QAAIvmC,OAASw4B,GAAmBhB,EAAO83B,GAAY/oB,KAAO/O,EAAO+3B,GAAwBhpB,QAClF3oC,IAAe45B,EAAOx3B,KAAMumC,KAAO/O,EAAO83B,GAAY/oB,IAAM/O,EAAOx3B,KAAMkvD,IAAWlvD,KAAKkvD,GAAQ3oB,KACpG3oC,EACN,EAEI+4C,GAA4B,SAAkClX,EAAG8G,GACnE,IAAIvY,EAAKgT,EAAgBvB,GACrBxhC,EAAMy0B,EAAc6T,GACxB,GAAIvY,IAAOwK,IAAmBhB,EAAO83B,GAAYrxD,IAASu5B,EAAO+3B,GAAwBtxD,GAAzF,CACA,IAAIN,EAAa2iD,EAA+BtyB,EAAI/vB,GAIpD,OAHIN,IAAc65B,EAAO83B,GAAYrxD,IAAUu5B,EAAOxJ,EAAIkhC,IAAWlhC,EAAGkhC,GAAQjxD,KAC9EN,EAAWC,YAAa,GAEnBD,CAL8F,CAMvG,EAEIq5C,GAAuB,SAA6BvX,GACtD,IAAI71B,EAAQwlD,EAA0BpuB,EAAgBvB,IAClD5/B,EAAS,GAIb,OAHAigC,EAASl2B,GAAO,SAAU3L,GACnBu5B,EAAO83B,GAAYrxD,IAASu5B,EAAO+W,EAAYtwC,IAAMoD,GAAKxB,EAAQ5B,EACzE,IACO4B,CACT,EAEI8mD,GAAyB,SAAUlnB,GACrC,IAAIuwB,EAAsBvwB,IAAMjH,EAC5B5uB,EAAQwlD,EAA0BY,EAAsBT,GAAyBvuB,EAAgBvB,IACjG5/B,EAAS,GAMb,OALAigC,EAASl2B,GAAO,SAAU3L,IACpBu5B,EAAO83B,GAAYrxD,IAAU+xD,IAAuBx4B,EAAOgB,EAAiBv6B,IAC9EoD,GAAKxB,EAAQyvD,GAAWrxD,GAE5B,IACO4B,CACT,EAIK49C,IACH/N,EAAU,WACR,GAAIxlB,EAAcozB,EAAiBt9C,MAAO,MAAM,IAAI3C,EAAU,+BAC9D,IAAIwyD,EAAe3vD,UAAUxC,aAA2BiF,IAAjBzC,UAAU,GAA+BsrD,EAAUtrD,UAAU,SAAhCyC,EAChEqiC,EAAMnN,EAAIg4B,GACV3pB,EAAS,SAAUnlC,GACrB,IAAIogC,OAAiBx+B,IAAT3C,KAAqBggB,EAAahgB,KAC1CmhC,IAAU3I,GAAiB94B,EAAKwmC,EAAQqpB,GAAwBxuD,GAChEy2B,EAAO2J,EAAO+tB,IAAW13B,EAAO2J,EAAM+tB,GAASlqB,KAAM7D,EAAM+tB,GAAQlqB,IAAO,GAC9E,IAAIrnC,EAAamoC,EAAyB,EAAG/kC,GAC7C,IACE6uD,GAAoBzuB,EAAO6D,EAAKrnC,EAClC,CAAE,MAAO+H,GACP,KAAMA,aAAiBomB,GAAa,MAAMpmB,EAC1CgqD,GAAuBvuB,EAAO6D,EAAKrnC,EACrC,CACF,EAEA,OADI45B,GAAei4B,IAAYI,GAAoBp3B,EAAiBwM,EAAK,CAAEnnC,cAAc,EAAMmL,IAAKk9B,IAC7Ft6B,GAAKo5B,EAAK6qB,EACnB,EAIAl4B,EAFA2lB,EAAkB5N,EAAQ9T,GAEK,YAAY,WACzC,OAAO3D,EAAiBj4B,MAAMglC,GAChC,IAEArN,EAAc+X,EAAS,iBAAiB,SAAUmgB,GAChD,OAAOjkD,GAAKisB,EAAIg4B,GAAcA,EAChC,IAEApb,EAA2BlhB,EAAI8jB,GAC/BjS,EAAqB7R,EAAImjB,GACzBxB,EAAuB3hB,EAAIu8B,GAC3B3qB,EAA+B5R,EAAIojB,GACnCgB,EAA0BpkB,EAAIw7B,EAA4Bx7B,EAAIyjB,GAC9DxC,EAA4BjhB,EAAIozB,GAEhC1E,EAA6B1uB,EAAI,SAAU9vB,GACzC,OAAOmI,GAAKkrB,EAAgBrzB,GAAOA,EACrC,EAEI8zB,IAEFK,EAAsB0lB,EAAiB,cAAe,CACpDz/C,cAAc,EACdyC,IAAK,WACH,OAAO23B,EAAiBj4B,MAAM6vD,WAChC,IAEG/e,GACHnZ,EAAca,EAAiB,uBAAwB6e,GAAuB,CAAEnZ,QAAQ,MAK9F2S,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAM2L,MAAM,EAAMsuB,QAASujB,EAAen+C,MAAOm+C,GAAiB,CAC/F35C,OAAQ4rC,IAGV5P,EAASyU,EAAW2N,KAAwB,SAAUz+C,GACpDurD,EAAsBvrD,EACxB,IAEAotC,EAAE,CAAEtzC,OAAQ0sC,EAAQL,MAAM,EAAM1P,QAASujB,GAAiB,CACxDwS,UAAW,WAAcT,IAAa,CAAM,EAC5CU,UAAW,WAAcV,IAAa,CAAO,IAG/C3e,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAASujB,EAAen+C,MAAOi4B,GAAe,CAG9Eh1B,OAtHY,SAAgBk9B,EAAG8W,GAC/B,YAAsB5zC,IAAf4zC,EAA2BuY,EAAmBrvB,GAAKqwB,GAAkBhB,EAAmBrvB,GAAI8W,EACrG,EAuHEv4C,eAAgB04C,GAGhB96B,iBAAkBk0C,GAGlBhvD,yBAA0B61C,KAG5B9F,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAASujB,GAAiB,CAG1D30B,oBAAqBkuB,KAKvBiY,IAIA5zB,EAAeqU,EAASzF,GAExBsE,EAAW2gB,IAAU,qCCrQrB,IAAIre,EAAI,EAAQ,MACZzD,EAAa,EAAQ,MACrB5V,EAAS,EAAQ,MACjBluB,EAAW,EAAQ,KACnB+kC,EAAS,EAAQ,MACjB8hB,EAAyB,EAAQ,MAEjCC,EAAyB/hB,EAAO,6BAChCgiB,EAAyBhiB,EAAO,6BAIpCwC,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAASi2B,GAA0B,CACnE,IAAO,SAAUlyD,GACf,IAAI0nC,EAASr8B,EAASrL,GACtB,GAAIu5B,EAAO44B,EAAwBzqB,GAAS,OAAOyqB,EAAuBzqB,GAC1E,IAAIkP,EAASzH,EAAW,SAAXA,CAAqBzH,GAGlC,OAFAyqB,EAAuBzqB,GAAUkP,EACjCwb,EAAuBxb,GAAUlP,EAC1BkP,CACT,uCCnBF,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,yCCLR,IAAIhE,EAAI,EAAQ,MACZrZ,EAAS,EAAQ,MACjBioB,EAAW,EAAQ,KACnBjpB,EAAc,EAAQ,MACtB6X,EAAS,EAAQ,MACjB8hB,EAAyB,EAAQ,MAEjCE,EAAyBhiB,EAAO,6BAIpCwC,EAAE,CAAEtzC,OAAQ,SAAUqsC,MAAM,EAAM1P,QAASi2B,GAA0B,CACnEzS,OAAQ,SAAgB4S,GACtB,IAAK7Q,EAAS6Q,GAAM,MAAM,IAAIjzD,UAAUm5B,EAAY85B,GAAO,oBAC3D,GAAI94B,EAAO64B,EAAwBC,GAAM,OAAOD,EAAuBC,EACzE,uCCfF,IAAI/1B,EAAc,EAAQ,MACtBslB,EAAsB,EAAQ,MAG9B0Q,EAAoBh2B,EAFD,EAAQ,OAG3BV,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,cAAc,SAAoBz8B,EAAQigC,GAC/D,OAAO+yB,EAAkB12B,EAAY75B,MAAOzC,EAAQigC,EAAOt9B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACnG,uCCZA,IAAIk9C,EAAsB,EAAQ,MAC9B2Q,EAAS,cAET32B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,SAAS,SAAeiG,GAC7C,OAAOuwB,EAAO32B,EAAY75B,MAAOigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACrF,uCCVA,IAAIk9C,EAAsB,EAAQ,MAC9B4Q,EAAQ,EAAQ,MAChBhP,EAAW,EAAQ,MACnBhqB,EAAU,EAAQ,MAClB/3B,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAEhBb,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAC7Cr4B,EAAQ44B,EAAY,GAAG54B,OAY3Bq4B,EAAuB,QAAQ,SAAcj5B,GAC3C,IAAIrD,EAASwC,UAAUxC,OACvBm8B,EAAY75B,MACZ,IAAI0wD,EAA6C,QAA/B/uD,EAAM81B,EAAQz3B,MAAO,EAAG,GAAeyhD,EAAS1gD,IAAUA,EAC5E,OAAOrB,EAAK+wD,EAAOzwD,KAAM0wD,EAAahzD,EAAS,EAAIwC,UAAU,QAAKyC,EAAWjF,EAAS,EAAIwC,UAAU,QAAKyC,EAC3G,GAdqB+3B,GAAM,WACzB,IAAI/Z,EAAQ,EAGZ,OADA,IAAIuX,UAAU,GAAGqE,KAAK,CAAE98B,QAAS,WAAc,OAAOkhB,GAAS,IAC9C,IAAVA,CACT,wCClBA,IAAIk/B,EAAsB,EAAQ,MAC9B+C,EAAU,eACV+N,EAAqB,EAAQ,MAE7B92B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,UAAU,SAAgBiG,GAC/C,IAAIC,EAAO0iB,EAAQ/oB,EAAY75B,MAAOigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,GACxF,OAAOguD,EAAmB3wD,KAAMkgC,EAClC,uCCZA,IAAI2f,EAAsB,EAAQ,MAC9B+Q,EAAa,kBAEb/2B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,aAAa,SAAmB62B,GACrD,OAAOD,EAAW/2B,EAAY75B,MAAO6wD,EAAW3wD,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACxF,uCCVA,IAAIk9C,EAAsB,EAAQ,MAC9BgD,EAAQ,aAERhpB,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,QAAQ,SAAc62B,GAC3C,OAAOhO,EAAMhpB,EAAY75B,MAAO6wD,EAAW3wD,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACnF,uCCVA,IAAIk9C,EAAsB,EAAQ,MAC9B/f,EAAW,gBAEXjG,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,WAAW,SAAiBiG,GACjDH,EAASjG,EAAY75B,MAAOigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAChF,uCCVA,IAAIk9C,EAAsB,EAAQ,MAC9BqD,EAAY,iBAEZrpB,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,YAAY,SAAkB2I,GACnD,OAAOugB,EAAUrpB,EAAY75B,MAAO2iC,EAAeziC,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAC3F,uCCVA,IAAIk9C,EAAsB,EAAQ,MAC9BiR,EAAW,gBAEXj3B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,WAAW,SAAiB2I,GACjD,OAAOmuB,EAASj3B,EAAY75B,MAAO2iC,EAAeziC,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAC1F,uCCVA,IAAIqd,EAAa,EAAQ,MACrB0a,EAAQ,EAAQ,MAChBH,EAAc,EAAQ,MACtBslB,EAAsB,EAAQ,MAC9BkR,EAAiB,EAAQ,MAGzB1sB,EAFkB,EAAQ,KAEfvN,CAAgB,YAC3BrW,EAAaT,EAAWS,WACxBuwC,EAAcz2B,EAAYw2B,EAAe7lC,QACzC+lC,EAAY12B,EAAYw2B,EAAe1mD,MACvC6mD,EAAe32B,EAAYw2B,EAAe5lC,SAC1C0O,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAC7CzB,EAAsB9X,GAAcA,EAAWpiB,UAE/C8yD,GAAWz2B,GAAM,WACnBnC,EAAoB8L,GAAU3kC,KAAK,CAAC,GACtC,IAEI0xD,IAAuB74B,GACtBA,EAAoBrN,QACpBqN,EAAoB8L,KAAc9L,EAAoBrN,QAClB,WAApCqN,EAAoBrN,OAAOznB,KAE5B4tD,EAAmB,WACrB,OAAOL,EAAYn3B,EAAY75B,MACjC,EAIAg6B,EAAuB,WAAW,WAChC,OAAOk3B,EAAar3B,EAAY75B,MAClC,GAAGmxD,GAGHn3B,EAAuB,QAAQ,WAC7B,OAAOi3B,EAAUp3B,EAAY75B,MAC/B,GAAGmxD,GAGHn3B,EAAuB,SAAUq3B,EAAkBF,IAAYC,EAAoB,CAAE3tD,KAAM,WAG3Fu2B,EAAuBqK,EAAUgtB,EAAkBF,IAAYC,EAAoB,CAAE3tD,KAAM,8CC5C3F,IAAIo8C,EAAsB,EAAQ,MAC9BtlB,EAAc,EAAQ,MAEtBV,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAC7Cs3B,EAAQ/2B,EAAY,GAAGxwB,MAI3BiwB,EAAuB,QAAQ,SAAcypB,GAC3C,OAAO6N,EAAMz3B,EAAY75B,MAAOyjD,EAClC,uCCXA,IAAI5D,EAAsB,EAAQ,MAC9B1/C,EAAQ,EAAQ,MAChBoiC,EAAe,EAAQ,MAEvB1I,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,eAAe,SAAqB2I,GACzD,IAAIjlC,EAASwC,UAAUxC,OACvB,OAAOyC,EAAMoiC,EAAc1I,EAAY75B,MAAOtC,EAAS,EAAI,CAACilC,EAAeziC,UAAU,IAAM,CAACyiC,GAC9F,uCCZA,IAAIkd,EAAsB,EAAQ,MAC9B6D,EAAO,YACPnC,EAA+B,EAAQ,MAEvC1nB,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,OAAO,SAAa4G,GACzC,OAAO8iB,EAAK7pB,EAAY75B,MAAO4gC,EAAO1gC,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,GAAW,SAAU88B,EAAG/hC,GAClG,OAAO,IAAK6jD,EAA6B9hB,GAAlC,CAAsC/hC,EAC/C,GACF,uCCbA,IAAImiD,EAAsB,EAAQ,MAC9B0R,EAAe,aAEf13B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,eAAe,SAAqBiG,GACzD,IAAIviC,EAASwC,UAAUxC,OACvB,OAAO6zD,EAAa13B,EAAY75B,MAAOigC,EAAYviC,EAAQA,EAAS,EAAIwC,UAAU,QAAKyC,EACzF,uCCXA,IAAIk9C,EAAsB,EAAQ,MAC9B2R,EAAU,YAEV33B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,UAAU,SAAgBiG,GAC/C,IAAIviC,EAASwC,UAAUxC,OACvB,OAAO8zD,EAAQ33B,EAAY75B,MAAOigC,EAAYviC,EAAQA,EAAS,EAAIwC,UAAU,QAAKyC,EACpF,uCCXA,IAAIk9C,EAAsB,EAAQ,MAE9BhmB,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAC7C/a,EAAQxU,KAAKwU,MAIjB+a,EAAuB,WAAW,WAMhC,IALA,IAIIj5B,EAJAihC,EAAOhiC,KACPtC,EAASm8B,EAAYmI,GAAMtkC,OAC3BgmC,EAASzkB,EAAMvhB,EAAS,GACxBuH,EAAQ,EAELA,EAAQy+B,GACb3iC,EAAQihC,EAAK/8B,GACb+8B,EAAK/8B,KAAW+8B,IAAOtkC,GACvBskC,EAAKtkC,GAAUqD,EACf,OAAOihC,CACX,uCCnBA,IAAIhiB,EAAa,EAAQ,MACrBtgB,EAAO,EAAQ,MACfmgD,EAAsB,EAAQ,MAC9BxgB,EAAoB,EAAQ,MAC5B2gB,EAAW,EAAQ,MACnBhf,EAAkB,EAAQ,MAC1BtG,EAAQ,EAAQ,MAEhB5O,EAAa9L,EAAW8L,WACxBoM,EAAYlY,EAAWkY,UACvBC,EAAqBD,GAAaA,EAAU75B,UAC5CozD,EAAOt5B,GAAsBA,EAAmBnvB,IAChD6wB,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAE7C03B,GAAkDh3B,GAAM,WAE1D,IAAIqI,EAAQ,IAAI3K,kBAAkB,GAElC,OADA14B,EAAK+xD,EAAM1uB,EAAO,CAAErlC,OAAQ,EAAG,EAAG,GAAK,GACnB,IAAbqlC,EAAM,EACf,IAGI4uB,EAAgBD,GAAkD7R,EAAoBjnB,2BAA6B8B,GAAM,WAC3H,IAAIqI,EAAQ,IAAI7K,EAAU,GAG1B,OAFA6K,EAAM/5B,IAAI,GACV+5B,EAAM/5B,IAAI,IAAK,GACK,IAAb+5B,EAAM,IAAyB,IAAbA,EAAM,EACjC,IAIA/I,EAAuB,OAAO,SAAa0G,GACzC7G,EAAY75B,MACZ,IAAI8vB,EAASkwB,EAAS9/C,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EAAW,GACnEurB,EAAM8S,EAAgBN,GAC1B,GAAIgxB,EAAgD,OAAOhyD,EAAK+xD,EAAMzxD,KAAMkuB,EAAK4B,GACjF,IAAIpyB,EAASsC,KAAKtC,OACdwM,EAAMm1B,EAAkBnR,GACxBjpB,EAAQ,EACZ,GAAIiF,EAAM4lB,EAASpyB,EAAQ,MAAM,IAAIouB,EAAW,gBAChD,KAAO7mB,EAAQiF,GAAKlK,KAAK8vB,EAAS7qB,GAASipB,EAAIjpB,IACjD,IAAIysD,GAAkDC,sCC1CtD,IAAI9R,EAAsB,EAAQ,MAC9B0B,EAA+B,EAAQ,MACvC7mB,EAAQ,EAAQ,MAChBQ,EAAa,EAAQ,MAErBrB,EAAcgmB,EAAoBhmB,aAUtCG,EAT6B6lB,EAAoB7lB,wBAS1B,SAAS,SAAewD,EAAOkC,GAMpD,IALA,IAAIQ,EAAOhF,EAAWrB,EAAY75B,MAAOw9B,EAAOkC,GAC5C3F,EAAIwnB,EAA6BvhD,MACjCiF,EAAQ,EACRvH,EAASwiC,EAAKxiC,OACdmC,EAAS,IAAIk6B,EAAEr8B,GACZA,EAASuH,GAAOpF,EAAOoF,GAASi7B,EAAKj7B,KAC5C,OAAOpF,CACT,GAfa66B,GAAM,WAEjB,IAAIxC,UAAU,GAAGv2B,OACnB,wCCXA,IAAIk+C,EAAsB,EAAQ,MAC9B+R,EAAQ,aAER/3B,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,QAAQ,SAAciG,GAC3C,OAAO2xB,EAAM/3B,EAAY75B,MAAOigC,EAAY//B,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,EACpF,sCCVA,IAAIqd,EAAa,EAAQ,MACrBua,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAChBuI,EAAY,EAAQ,MACpB6gB,EAAe,EAAQ,MACvBjE,EAAsB,EAAQ,MAC9BkE,EAAK,EAAQ,MACbC,EAAa,EAAQ,MACrBC,EAAK,EAAQ,MACbC,EAAS,EAAQ,MAEjBrqB,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAC7Cf,EAAcjZ,EAAWiZ,YACzBkrB,EAAalrB,GAAesB,EAAYtB,EAAY56B,UAAUkQ,MAG9DsjD,KAA+B1N,GAAgBzpB,GAAM,WACvDypB,EAAW,IAAIlrB,EAAY,GAAI,KACjC,KAAMyB,GAAM,WACVypB,EAAW,IAAIlrB,EAAY,GAAI,CAAC,EAClC,KAEIqrB,IAAgBH,IAAezpB,GAAM,WAEvC,GAAIupB,EAAI,OAAOA,EAAK,GACpB,GAAIF,EAAI,OAAOA,EAAK,GACpB,GAAIC,EAAY,OAAO,EACvB,GAAIE,EAAQ,OAAOA,EAAS,IAE5B,IAEIj/C,EAAO6sD,EAFP/uB,EAAQ,IAAI9J,EAAY,KACxB84B,EAAW9pD,MAAM,KAGrB,IAAKhD,EAAQ,EAAGA,EAAQ,IAAKA,IAC3B6sD,EAAM7sD,EAAQ,EACd89B,EAAM99B,GAAS,IAAMA,EACrB8sD,EAAS9sD,GAASA,EAAQ,EAAI6sD,EAAM,EAOtC,IAJA3N,EAAWphB,GAAO,SAAUxS,EAAGP,GAC7B,OAAQO,EAAI,EAAI,IAAMP,EAAI,EAAI,EAChC,IAEK/qB,EAAQ,EAAGA,EAAQ,IAAKA,IAC3B,GAAI89B,EAAM99B,KAAW8sD,EAAS9sD,GAAQ,OAAO,CAEjD,IAgBA+0B,EAAuB,QAAQ,SAAcwJ,GAE3C,YADkB7gC,IAAd6gC,GAAyBP,EAAUO,GACnC8gB,EAAoBH,EAAWnkD,KAAMwjC,GAElCsgB,EAAajqB,EAAY75B,MAlBb,SAAUwjC,GAC7B,OAAO,SAAU7jB,EAAG6T,GAClB,YAAkB7wB,IAAd6gC,GAAiCA,EAAU7jB,EAAG6T,IAAM,EAEpDA,GAAMA,GAAW,EAEjB7T,GAAMA,EAAU,EACV,IAANA,GAAiB,IAAN6T,EAAgB,EAAI7T,EAAI,GAAK,EAAI6T,EAAI,EAAI,GAAK,EACtD7T,EAAI6T,CACb,CACF,CAQyCixB,CAAejhB,GACxD,IAAI8gB,GAAeuN,sCCpEnB,IAAIhS,EAAsB,EAAQ,MAC9BhlB,EAAW,EAAQ,MACnBuE,EAAkB,EAAQ,MAC1BmiB,EAA+B,EAAQ,MAEvC1nB,EAAcgmB,EAAoBhmB,aAKtCG,EAJ6B6lB,EAAoB7lB,wBAI1B,YAAY,SAAkBg4B,EAAOtyB,GAC1D,IAAID,EAAI5F,EAAY75B,MAChBtC,EAAS+hC,EAAE/hC,OACXu0D,EAAa7yB,EAAgB4yB,EAAOt0D,GAExC,OAAO,IADC6jD,EAA6B9hB,GAC9B,CACLA,EAAE5V,OACF4V,EAAEhC,WAAaw0B,EAAaxyB,EAAE8gB,kBAC9B1lB,QAAkBl4B,IAAR+8B,EAAoBhiC,EAAS0hC,EAAgBM,EAAKhiC,IAAWu0D,GAE3E,uCCpBA,IAAIjyC,EAAa,EAAQ,MACrB7f,EAAQ,EAAQ,MAChB0/C,EAAsB,EAAQ,MAC9BnlB,EAAQ,EAAQ,MAChBQ,EAAa,EAAQ,MAErBhD,EAAYlY,EAAWkY,UACvB2B,EAAcgmB,EAAoBhmB,YAClCG,EAAyB6lB,EAAoB7lB,uBAC7Ck4B,EAAkB,GAAGC,eAGrBC,IAAyBl6B,GAAawC,GAAM,WAC9Cw3B,EAAgBxyD,KAAK,IAAIw4B,EAAU,GACrC,IAUA8B,EAAuB,kBAAkB,WACvC,OAAO75B,EACL+xD,EACAE,EAAuBl3B,EAAWrB,EAAY75B,OAAS65B,EAAY75B,MACnEk7B,EAAWh7B,WAEf,GAdaw6B,GAAM,WACjB,MAAO,CAAC,EAAG,GAAGy3B,mBAAqB,IAAIj6B,EAAU,CAAC,EAAG,IAAIi6B,gBAC3D,MAAOz3B,GAAM,WACXxC,EAAU75B,UAAU8zD,eAAezyD,KAAK,CAAC,EAAG,GAC9C,wCCpBA,IAAIs6B,EAAyB,+BACzBU,EAAQ,EAAQ,MAChB1a,EAAa,EAAQ,MACrBua,EAAc,EAAQ,MAEtB9Z,EAAaT,EAAWS,WACxB4xC,EAAsB5xC,GAAcA,EAAWpiB,WAAa,CAAC,EAC7Di0D,EAAgB,GAAGhpD,SACnBS,EAAOwwB,EAAY,GAAGxwB,MAEtB2wB,GAAM,WAAc43B,EAAc5yD,KAAK,CAAC,EAAI,MAC9C4yD,EAAgB,WACd,OAAOvoD,EAAK/J,KACd,GAGF,IAAIuyD,EAAsBF,EAAoB/oD,WAAagpD,EAI3Dt4B,EAAuB,WAAYs4B,EAAeC,sCCpBhB,EAAQ,KAI1CC,CAA4B,SAAS,SAAUvpD,GAC7C,OAAO,SAAoBuM,EAAMioB,EAAY//B,GAC3C,OAAOuL,EAAKjJ,KAAMwV,EAAMioB,EAAY//B,EACtC,CACF,uCCPA,EAAQ,yCCDR,IAAIsiB,EAAa,EAAQ,MACrByyC,EAAe,EAAQ,MACvB9pB,EAAwB,EAAQ,MAChCr+B,EAAU,EAAQ,KAClBotB,EAA8B,EAAQ,MAEtCg7B,EAAkB,SAAUC,GAE9B,GAAIA,GAAuBA,EAAoBroD,UAAYA,EAAS,IAClEotB,EAA4Bi7B,EAAqB,UAAWroD,EAC9D,CAAE,MAAO5E,GACPitD,EAAoBroD,QAAUA,CAChC,CACF,EAEA,IAAK,IAAIsoD,KAAmBH,EACtBA,EAAaG,IACfF,EAAgB1yC,EAAW4yC,IAAoB5yC,EAAW4yC,GAAiBv0D,WAI/Eq0D,EAAgB/pB,sCCrBhB,IAAI3oB,EAAa,EAAQ,MACrByyC,EAAe,EAAQ,MACvB9pB,EAAwB,EAAQ,MAChCkqB,EAAuB,EAAQ,MAC/Bn7B,EAA8B,EAAQ,MACtC2D,EAAiB,EAAQ,KAGzBgJ,EAFkB,EAAQ,KAEfvN,CAAgB,YAC3Bg8B,EAAcD,EAAqB3nC,OAEnCwnC,EAAkB,SAAUC,EAAqBC,GACnD,GAAID,EAAqB,CAEvB,GAAIA,EAAoBtuB,KAAcyuB,EAAa,IACjDp7B,EAA4Bi7B,EAAqBtuB,EAAUyuB,EAC7D,CAAE,MAAOptD,GACPitD,EAAoBtuB,GAAYyuB,CAClC,CAEA,GADAz3B,EAAes3B,EAAqBC,GAAiB,GACjDH,EAAaG,GAAkB,IAAK,IAAI9vB,KAAe+vB,EAEzD,GAAIF,EAAoB7vB,KAAiB+vB,EAAqB/vB,GAAc,IAC1EpL,EAA4Bi7B,EAAqB7vB,EAAa+vB,EAAqB/vB,GACrF,CAAE,MAAOp9B,GACPitD,EAAoB7vB,GAAe+vB,EAAqB/vB,EAC1D,CAEJ,CACF,EAEA,IAAK,IAAI8vB,KAAmBH,EAC1BC,EAAgB1yC,EAAW4yC,IAAoB5yC,EAAW4yC,GAAiBv0D,UAAWu0D,GAGxFF,EAAgB/pB,EAAuB,mDClCvC,EAAQ,MACR,EAAQ,MACR,IAAIkI,EAAI,EAAQ,MACZ7wB,EAAa,EAAQ,MACrB+yB,EAAiB,EAAQ,MACzB3F,EAAa,EAAQ,MACrB1tC,EAAO,EAAQ,MACf66B,EAAc,EAAQ,MACtBhD,EAAc,EAAQ,MACtBw7B,EAAiB,EAAQ,MACzBp7B,EAAgB,EAAQ,MACxBC,EAAwB,EAAQ,MAChC6C,EAAiB,EAAQ,MACzBY,EAAiB,EAAQ,KACzB0V,EAA4B,EAAQ,MACpCjZ,EAAsB,EAAQ,MAC9B6C,EAAa,EAAQ,KACrBpE,EAAa,EAAQ,MACrBiB,EAAS,EAAQ,MACjB94B,EAAO,EAAQ,MACf+4B,EAAU,EAAQ,MAClBwM,EAAW,EAAQ,MACnB7M,EAAW,EAAQ,IACnBo0B,EAAY,EAAQ,KACpBjpD,EAAS,EAAQ,MACjBujC,EAA2B,EAAQ,MACnCvF,EAAc,EAAQ,IACtBC,EAAoB,EAAQ,KAC5B4iB,EAAyB,EAAQ,MACjCrF,EAA0B,EAAQ,MAClCjnB,EAAkB,EAAQ,MAC1Bk8B,EAAY,EAAQ,MAEpB3uB,EAAWvN,EAAgB,YAC3Bm8B,EAAoB,kBACpBC,EAA6BD,EAAoB,WACjDh3B,EAAmBnE,EAAoB9uB,IACvCmqD,EAAyBr7B,EAAoBiE,UAAUk3B,GACvDG,EAA2Bt7B,EAAoBiE,UAAUm3B,GAEzDG,EAActgB,EAAe,SAC7BugB,EAAgBvgB,EAAe,WAC/Bh4B,EAAUg4B,EAAe,WACzBwgB,EAAmBD,GAAiBA,EAAcj1D,UAClDm1D,EAAmBz4C,GAAWA,EAAQ1c,UACtChB,EAAY2iB,EAAW3iB,UACvBua,EAAqBoI,EAAWpI,mBAChCiT,EAAe1c,OAAO0c,aACtBihC,EAAgB1e,EAAW,SAAU,iBACrCqmB,EAAY5sD,SACZmY,EAASub,EAAY,GAAGvb,QACxBjV,EAAOwwB,EAAY,GAAGxwB,MACtB1I,EAAOk5B,EAAY,GAAGl5B,MACtB8D,EAAUo1B,EAAY,GAAGp1B,SACzB0X,EAAQ0d,EAAY,GAAG1d,OACvBrb,GAAS+4B,EAAY,GAAG/4B,QACxByI,GAAQswB,EAAY,GAAGtwB,OACvB06B,GAAcpK,EAAY,GAAG54B,OAC7BowB,GAAOwI,EAAY,IAAIxI,MAEvB2hC,GAAO,MAEPC,GAAY,eAEZC,GAAgB,SAAUjuB,EAAQnI,GACpC,IAAIq2B,EAASlvB,GAAYgB,EAAQnI,EAAOA,EAAQ,GAChD,OAAKzL,GAAK4hC,GAAWE,GAEdJ,EAAUI,EAAQ,IAFYj2B,GAGvC,EAEIk2B,GAAiB,SAAUC,GAE7B,IADA,IAAIpzC,EAAQ,EACHqzC,EAAO,IAAMA,EAAO,GAAMD,EAAQC,EAAaA,IAAS,EAC/DrzC,IAEF,OAAOA,CACT,EAEIszC,GAAa,SAAUC,GACzB,IAAIC,EAAY,KAEhB,OAAQD,EAAOx2D,QACb,KAAK,EACHy2D,EAAYD,EAAO,GACnB,MACF,KAAK,EACHC,GAAyB,GAAZD,EAAO,KAAc,EAAiB,GAAZA,EAAO,GAC9C,MACF,KAAK,EACHC,GAAyB,GAAZD,EAAO,KAAc,IAAkB,GAAZA,EAAO,KAAc,EAAiB,GAAZA,EAAO,GACzE,MACF,KAAK,EACHC,GAAyB,EAAZD,EAAO,KAAc,IAAkB,GAAZA,EAAO,KAAc,IAAkB,GAAZA,EAAO,KAAc,EAAiB,GAAZA,EAAO,GAIxG,OAAOC,EAAY,QAAW,KAAOA,CACvC,EAEI35C,GAAS,SAAUH,GAMrB,IAJA,IAAI3c,GADJ2c,EAAQlV,EAAQkV,EAAOq5C,GAAM,MACVh2D,OACfmC,EAAS,GACTpC,EAAI,EAEDA,EAAIC,GAAQ,CACjB,IAAI02D,EAAcp1C,EAAO3E,EAAO5c,GAEhC,GAAoB,MAAhB22D,EAAqB,CACvB,GAA6B,MAAzBp1C,EAAO3E,EAAO5c,EAAI,IAAcA,EAAI,EAAIC,EAAQ,CAClDmC,GAAU,IACVpC,IACA,QACF,CAEA,IAAIs2D,EAAQH,GAAcv5C,EAAO5c,EAAI,GAGrC,GAAIs2D,GAAUA,EAAO,CACnBl0D,GAAUu0D,EACV32D,IACA,QACF,CAEAA,GAAK,EACL,IAAI42D,EAAqBP,GAAeC,GAExC,GAA2B,IAAvBM,EACFD,EAAcvpC,EAAakpC,OACtB,CACL,GAA2B,IAAvBM,GAA4BA,EAAqB,EAAG,CACtDx0D,GAvEc,IAwEdpC,IACA,QACF,CAKA,IAHA,IAAIy2D,EAAS,CAACH,GACVO,EAAgB,EAEbA,EAAgBD,KAEb,KADR52D,EACYC,GAA+B,MAArBshB,EAAO3E,EAAO5c,KAFK,CAIzC,IAAI82D,EAAWX,GAAcv5C,EAAO5c,EAAI,GAGxC,GAAI82D,GAAaA,EAAU,CACzB92D,GAAK,EACL,KACF,CACA,GAAI82D,EAAW,KAAOA,EAAW,IAAK,MAEtClzD,EAAK6yD,EAAQK,GACb92D,GAAK,EACL62D,GACF,CAEA,GAAIJ,EAAOx2D,SAAW22D,EAAoB,CACxCx0D,GAlGc,IAmGd,QACF,CAEA,IAAIs0D,EAAYF,GAAWC,GACT,OAAdC,EACFt0D,GAxGc,IA0Gdu0D,EAActI,EAAcqI,EAEhC,CACF,CAEAt0D,GAAUu0D,EACV32D,GACF,CAEA,OAAOoC,CACT,EAEIwW,GAAO,eAEPm+C,GAAe,CACjB,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,KAGLtoB,GAAW,SAAU9mC,GACvB,OAAOovD,GAAapvD,EACtB,EAEIqvD,GAAY,SAAUzmC,GACxB,OAAO7oB,EAAQyS,EAAmBoW,GAAK3X,GAAM61B,GAC/C,EAEIwoB,GAA0B3jB,GAA0B,SAAkBvtB,EAAQ8sB,GAChFrU,EAAiBj8B,KAAM,CACrBiB,KAAMiyD,EACN31D,OAAQ41D,EAAuB3vC,GAAQ2H,QACvClmB,MAAO,EACPqrC,KAAMA,GAEV,GAAG2iB,GAAmB,WACpB,IAAItmD,EAAQymD,EAAyBpzD,MACjCzC,EAASoP,EAAMpP,OACf0H,EAAQ0H,EAAM1H,QAClB,IAAK1H,GAAU0H,GAAS1H,EAAOG,OAE7B,OADAiP,EAAMpP,OAAS,KACR6lD,OAAuBzgD,GAAW,GAE3C,IAAIkT,EAAQtY,EAAO0H,GACnB,OAAQ0H,EAAM2jC,MACZ,IAAK,OAAQ,OAAO8S,EAAuBvtC,EAAM5X,KAAK,GACtD,IAAK,SAAU,OAAOmlD,EAAuBvtC,EAAM9U,OAAO,GAC1D,OAAOqiD,EAAuB,CAACvtC,EAAM5X,IAAK4X,EAAM9U,QAAQ,EAC5D,IAAG,GAEC4zD,GAAuB,SAAU1rD,GACnCjJ,KAAKmrB,QAAU,GACfnrB,KAAKyN,IAAM,UAEE9K,IAATsG,IACEmuB,EAASnuB,GAAOjJ,KAAK40D,YAAY3rD,GAChCjJ,KAAK60D,WAA0B,iBAAR5rD,EAAuC,MAApB+V,EAAO/V,EAAM,GAAa07B,GAAY17B,EAAM,GAAKA,EAAOuiD,EAAUviD,IAErH,EAEA0rD,GAAqBt2D,UAAY,CAC/B4C,KAAMgyD,EACN6B,QAAS,SAAUrnD,GACjBzN,KAAKyN,IAAMA,EACXzN,KAAK+0D,QACP,EACAH,YAAa,SAAUl0D,GACrB,IAEIioB,EAAU7c,EAAMg1B,EAAMk0B,EAAeC,EAAW9Z,EAAOC,EAFvDjwB,EAAUnrB,KAAKmrB,QACf4V,EAAiBP,EAAkB9/B,GAGvC,GAAIqgC,EAGF,IADAj1B,GADA6c,EAAW4X,EAAY7/B,EAAQqgC,IACfj1B,OACPg1B,EAAOphC,EAAKoM,EAAM6c,IAAWC,MAAM,CAG1C,GADAqsC,GADAD,EAAgBz0B,EAAY0D,EAASnD,EAAK//B,SAChB+K,MAEvBqvC,EAAQz7C,EAAKu1D,EAAWD,IAAgBpsC,OACxCwyB,EAAS17C,EAAKu1D,EAAWD,IAAgBpsC,OACzClpB,EAAKu1D,EAAWD,GAAepsC,KAChC,MAAM,IAAIvrB,EAAU,mCACtBgE,EAAK8pB,EAAS,CAAEltB,IAAKutD,EAAUrQ,EAAMp6C,OAAQA,MAAOyqD,EAAUpQ,EAAOr6C,QACvE,MACK,IAAK,IAAI9C,KAAOyC,EAAY82B,EAAO92B,EAAQzC,IAChDoD,EAAK8pB,EAAS,CAAEltB,IAAKA,EAAK8C,MAAOyqD,EAAU9qD,EAAOzC,KAEtD,EACA42D,WAAY,SAAUK,GACpB,GAAIA,EAKF,IAJA,IAGItvB,EAAW/vB,EAHXsV,EAAUnrB,KAAKmrB,QACfgqC,EAAalrD,GAAMirD,EAAO,KAC1BjwD,EAAQ,EAELA,EAAQkwD,EAAWz3D,SACxBkoC,EAAYuvB,EAAWlwD,MACTvH,SACZmY,EAAQ5L,GAAM27B,EAAW,KACzBvkC,EAAK8pB,EAAS,CACZltB,IAAKuc,GAAOqC,EAAMhH,IAClB9U,MAAOyZ,GAAOzQ,EAAK8L,EAAO,QAKpC,EACA4+C,UAAW,WAKT,IAJA,IAGI5+C,EAHAsV,EAAUnrB,KAAKmrB,QACftrB,EAAS,GACToF,EAAQ,EAELA,EAAQkmB,EAAQztB,QACrBmY,EAAQsV,EAAQlmB,KAChB5D,EAAKxB,EAAQ40D,GAAU5+C,EAAM5X,KAAO,IAAMw2D,GAAU5+C,EAAM9U,QAC1D,OAAOgJ,EAAKlK,EAAQ,IACxB,EACAk1D,OAAQ,WACN/0D,KAAKmrB,QAAQztB,OAAS,EACtBsC,KAAK60D,WAAW70D,KAAKyN,IAAIynD,MAC3B,EACAE,UAAW,WACLp1D,KAAKyN,KAAKzN,KAAKyN,IAAIsnD,QACzB,GAKF,IAAIM,GAA6B,WAC/B16B,EAAW36B,KAAMs1D,IACjB,IACI3oD,EAAQsvB,EAAiBj8B,KAAM,IAAI20D,GAD5Bz0D,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,IAE5C40B,IAAav3B,KAAKq7C,KAAO1uC,EAAMwe,QAAQztB,OAC9C,EAEI43D,GAA2BD,GAA2Bh3D,UA6J1D,GA3JAo8B,EAAe66B,GAA0B,CAGvCzsC,OAAQ,SAAgBplB,EAAM1C,GAC5B,IAAI4L,EAAQwmD,EAAuBnzD,MACnC+9C,EAAwB79C,UAAUxC,OAAQ,GAC1C2D,EAAKsL,EAAMwe,QAAS,CAAEltB,IAAKutD,EAAU/nD,GAAO1C,MAAOyqD,EAAUzqD,KACxDw2B,GAAav3B,KAAKtC,SACvBiP,EAAMyoD,WACR,EAGA,OAAU,SAAU3xD,GAQlB,IAPA,IAAIkJ,EAAQwmD,EAAuBnzD,MAC/BtC,EAASqgD,EAAwB79C,UAAUxC,OAAQ,GACnDytB,EAAUxe,EAAMwe,QAChBltB,EAAMutD,EAAU/nD,GAChB8xD,EAAS73D,EAAS,OAAIiF,EAAYzC,UAAU,GAC5Ca,OAAmB4B,IAAX4yD,EAAuBA,EAAS/J,EAAU+J,GAClDtwD,EAAQ,EACLA,EAAQkmB,EAAQztB,QAAQ,CAC7B,IAAImY,EAAQsV,EAAQlmB,GACpB,GAAI4Q,EAAM5X,MAAQA,QAAkB0E,IAAV5B,GAAuB8U,EAAM9U,QAAUA,EAG1DkE,SADL,GADAzD,GAAO2pB,EAASlmB,EAAO,QACTtC,IAAV5B,EAAqB,KAE7B,CACKw2B,IAAav3B,KAAKq7C,KAAOlwB,EAAQztB,QACtCiP,EAAMyoD,WACR,EAGA90D,IAAK,SAAamD,GAChB,IAAI0nB,EAAUgoC,EAAuBnzD,MAAMmrB,QAC3C4yB,EAAwB79C,UAAUxC,OAAQ,GAG1C,IAFA,IAAIO,EAAMutD,EAAU/nD,GAChBwB,EAAQ,EACLA,EAAQkmB,EAAQztB,OAAQuH,IAC7B,GAAIkmB,EAAQlmB,GAAOhH,MAAQA,EAAK,OAAOktB,EAAQlmB,GAAOlE,MAExD,OAAO,IACT,EAGAy0D,OAAQ,SAAgB/xD,GACtB,IAAI0nB,EAAUgoC,EAAuBnzD,MAAMmrB,QAC3C4yB,EAAwB79C,UAAUxC,OAAQ,GAI1C,IAHA,IAAIO,EAAMutD,EAAU/nD,GAChB5D,EAAS,GACToF,EAAQ,EACLA,EAAQkmB,EAAQztB,OAAQuH,IACzBkmB,EAAQlmB,GAAOhH,MAAQA,GAAKoD,EAAKxB,EAAQsrB,EAAQlmB,GAAOlE,OAE9D,OAAOlB,CACT,EAGAymB,IAAK,SAAa7iB,GAOhB,IANA,IAAI0nB,EAAUgoC,EAAuBnzD,MAAMmrB,QACvCztB,EAASqgD,EAAwB79C,UAAUxC,OAAQ,GACnDO,EAAMutD,EAAU/nD,GAChB8xD,EAAS73D,EAAS,OAAIiF,EAAYzC,UAAU,GAC5Ca,OAAmB4B,IAAX4yD,EAAuBA,EAAS/J,EAAU+J,GAClDtwD,EAAQ,EACLA,EAAQkmB,EAAQztB,QAAQ,CAC7B,IAAImY,EAAQsV,EAAQlmB,KACpB,GAAI4Q,EAAM5X,MAAQA,SAAkB0E,IAAV5B,GAAuB8U,EAAM9U,QAAUA,GAAQ,OAAO,CAClF,CACA,OAAO,CACT,EAGAiI,IAAK,SAAavF,EAAM1C,GACtB,IAAI4L,EAAQwmD,EAAuBnzD,MACnC+9C,EAAwB79C,UAAUxC,OAAQ,GAO1C,IANA,IAKImY,EALAsV,EAAUxe,EAAMwe,QAChBsqC,GAAQ,EACRx3D,EAAMutD,EAAU/nD,GAChBoF,EAAM2iD,EAAUzqD,GAChBkE,EAAQ,EAELA,EAAQkmB,EAAQztB,OAAQuH,KAC7B4Q,EAAQsV,EAAQlmB,IACNhH,MAAQA,IACZw3D,EAAOj0D,GAAO2pB,EAASlmB,IAAS,IAElCwwD,GAAQ,EACR5/C,EAAM9U,MAAQ8H,IAIf4sD,GAAOp0D,EAAK8pB,EAAS,CAAEltB,IAAKA,EAAK8C,MAAO8H,IACxC0uB,IAAav3B,KAAKq7C,KAAOlwB,EAAQztB,QACtCiP,EAAMyoD,WACR,EAGA7mD,KAAM,WACJ,IAAI5B,EAAQwmD,EAAuBnzD,MACnCgzD,EAAUrmD,EAAMwe,SAAS,SAAUoF,EAAGP,GACpC,OAAOO,EAAEtyB,IAAM+xB,EAAE/xB,IAAM,GAAK,CAC9B,IACA0O,EAAMyoD,WACR,EAEA9qD,QAAS,SAAiBpJ,GAKxB,IAJA,IAGI2U,EAHAsV,EAAUgoC,EAAuBnzD,MAAMmrB,QACvC+W,EAAgBxjC,EAAKwC,EAAUhB,UAAUxC,OAAS,EAAIwC,UAAU,QAAKyC,GACrEsC,EAAQ,EAELA,EAAQkmB,EAAQztB,QAErBwkC,GADArsB,EAAQsV,EAAQlmB,MACIlE,MAAO8U,EAAM5X,IAAK+B,KAE1C,EAEAqK,KAAM,WACJ,OAAO,IAAIqqD,GAAwB10D,KAAM,OAC3C,EAEAkrB,OAAQ,WACN,OAAO,IAAIwpC,GAAwB10D,KAAM,SAC3C,EAEAmrB,QAAS,WACP,OAAO,IAAIupC,GAAwB10D,KAAM,UAC3C,GACC,CAAEpC,YAAY,IAGjB+5B,EAAc29B,GAA0BjxB,EAAUixB,GAAyBnqC,QAAS,CAAE1nB,KAAM,YAI5Fk0B,EAAc29B,GAA0B,YAAY,WAClD,OAAOnC,EAAuBnzD,MAAMy0D,WACtC,GAAG,CAAE72D,YAAY,IAIb25B,GAAaK,EAAsB09B,GAA0B,OAAQ,CACvEh1D,IAAK,WACH,OAAO6yD,EAAuBnzD,MAAMmrB,QAAQztB,MAC9C,EACAG,cAAc,EACdD,YAAY,IAGdy9B,EAAeg6B,GAA4BpC,GAE3CpiB,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAMi6B,QAAS64B,GAAkB,CAC9DzoC,gBAAiB+qC,MAIdtC,GAAkBx8B,EAAWxb,GAAU,CAC1C,IAAI26C,GAAan7B,EAAYi5B,EAAiBltC,KAC1CqvC,GAAap7B,EAAYi5B,EAAiBxqD,KAE1C4sD,GAAqB,SAAU3sD,GACjC,GAAImuB,EAASnuB,GAAO,CAClB,IACIiG,EADAoE,EAAOrK,EAAKqK,KAEhB,GAAImkB,EAAQnkB,KAAU2/C,EAKpB,OAJA/jD,EAAUjG,EAAKiG,QAAU,IAAI6L,EAAQ9R,EAAKiG,SAAW,IAAI6L,EACpD26C,GAAWxmD,EAAS,iBACvBymD,GAAWzmD,EAAS,eAAgB,mDAE/B3M,EAAO0G,EAAM,CAClBqK,KAAMwyB,EAAyB,EAAG0lB,EAAUl4C,IAC5CpE,QAAS42B,EAAyB,EAAG52B,IAG3C,CAAE,OAAOjG,CACX,EAUA,GARIstB,EAAW88B,IACbxiB,EAAE,CAAE/oB,QAAQ,EAAMlqB,YAAY,EAAMisC,gBAAgB,EAAM3P,QAAQ,GAAQ,CACxEpf,MAAO,SAAeT,GACpB,OAAOg5C,EAAYh5C,EAAOna,UAAUxC,OAAS,EAAIk4D,GAAmB11D,UAAU,IAAM,CAAC,EACvF,IAIAq2B,EAAW+8B,GAAgB,CAC7B,IAAIuC,GAAqB,SAAiBx7C,GAExC,OADAsgB,EAAW36B,KAAMuzD,GACV,IAAID,EAAcj5C,EAAOna,UAAUxC,OAAS,EAAIk4D,GAAmB11D,UAAU,IAAM,CAAC,EAC7F,EAEAqzD,EAAiBtzD,YAAc41D,GAC/BA,GAAmBx3D,UAAYk1D,EAE/B1iB,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAM4pC,gBAAgB,EAAM3P,QAAQ,GAAQ,CACzE/1B,QAAS0xD,IAEb,CACF,CAEAjxD,EAAOL,QAAU,CACf+lB,gBAAiB+qC,GACjBhkD,SAAU8hD,sCC3fZ,EAAQ,yCCAR,EAAQ,MACR,IAgEI2C,EAhEAjlB,EAAI,EAAQ,MACZtZ,EAAc,EAAQ,MACtBw7B,EAAiB,EAAQ,MACzB/yC,EAAa,EAAQ,MACrBthB,EAAO,EAAQ,MACf67B,EAAc,EAAQ,MACtB5C,EAAgB,EAAQ,MACxBC,EAAwB,EAAQ,MAChC+C,EAAa,EAAQ,KACrBnD,EAAS,EAAQ,MACjBjhB,EAAS,EAAQ,MACjBw/C,EAAY,EAAQ,MACpB76B,EAAa,EAAQ,MACrBogB,EAAS,eACT0a,EAAU,EAAQ,MAClBxK,EAAY,EAAQ,KACpBnwB,EAAiB,EAAQ,KACzB0iB,EAA0B,EAAQ,MAClCkY,EAAwB,EAAQ,MAChCn+B,EAAsB,EAAQ,MAE9BmE,EAAmBnE,EAAoB9uB,IACvCktD,EAAsBp+B,EAAoBiE,UAAU,OACpDzR,EAAkB2rC,EAAsB3rC,gBACxC6rC,EAA+BF,EAAsB5kD,SAErD+kD,EAAYp2C,EAAWzS,IACvBlQ,EAAY2iB,EAAW3iB,UACvBwJ,EAAWmZ,EAAWnZ,SACtBoY,EAAQxU,KAAKwU,MACbouB,EAAM5iC,KAAK4iC,IACXruB,EAASub,EAAY,GAAGvb,QACxB+S,EAAOwI,EAAY,IAAIxI,MACvBhoB,EAAOwwB,EAAY,GAAGxwB,MACtBq7C,EAAiB7qB,EAAY,GAAIjxB,UACjCgD,EAAMiuB,EAAY,GAAGjuB,KACrBjL,EAAOk5B,EAAY,GAAGl5B,MACtB8D,EAAUo1B,EAAY,GAAGp1B,SACzB0X,EAAQ0d,EAAY,GAAG1d,OACvB5S,EAAQswB,EAAY,GAAGtwB,OACvB06B,EAAcpK,EAAY,GAAG54B,OAC7B0E,EAAck0B,EAAY,GAAGl0B,aAC7BqC,EAAU6xB,EAAY,GAAG7xB,SAGzB2tD,EAAiB,iBACjBC,EAAe,eACfC,EAAe,eAEfC,EAAQ,SAERC,EAAe,cACfC,EAAQ,KACRC,EAAY,OACZC,EAAM,WACNC,EAAM,QACNC,GAAM,cAENC,GAA4B,6BAC5BC,GAA8C,4BAC9CC,GAA8B,oBAC9BC,GAA+B,wCAC/BC,GAAmB,YAgJnBC,GAAgB,SAAUzY,GAC5B,IAAI9+C,EAAQoF,EAAOoyD,EAAUC,EAG7B,GAAmB,iBAAR3Y,EAAkB,CAE3B,IADA9+C,EAAS,GACJoF,EAAQ,EAAGA,EAAQ,EAAGA,IACzByD,EAAQ7I,EAAQ8+C,EAAO,KACvBA,EAAO1/B,EAAM0/B,EAAO,KAEtB,OAAO50C,EAAKlK,EAAQ,IACtB,CAGA,GAAmB,iBAAR8+C,EAAkB,CAG3B,IAFA9+C,EAAS,GACTw3D,EAvC0B,SAAUE,GAMtC,IALA,IAAIC,EAAW,KACXC,EAAY,EACZC,EAAY,KACZC,EAAa,EACb1yD,EAAQ,EACLA,EAAQ,EAAGA,IACI,IAAhBsyD,EAAKtyD,IACH0yD,EAAaF,IACfD,EAAWE,EACXD,EAAYE,GAEdD,EAAY,KACZC,EAAa,IAEK,OAAdD,IAAoBA,EAAYzyD,KAClC0yD,GAGN,OAAOA,EAAaF,EAAYC,EAAYF,CAC9C,CAmBeI,CAAwBjZ,GAC9B15C,EAAQ,EAAGA,EAAQ,EAAGA,IACrBqyD,GAA2B,IAAhB3Y,EAAK15C,KAChBqyD,IAASA,GAAU,GACnBD,IAAapyD,GACfpF,GAAUoF,EAAQ,IAAM,KACxBqyD,GAAU,IAEVz3D,GAAUulD,EAAezG,EAAK15C,GAAQ,IAClCA,EAAQ,IAAGpF,GAAU,OAG7B,MAAO,IAAMA,EAAS,GACxB,CAEA,OAAO8+C,CACT,EAEIkZ,GAA4B,CAAC,EAC7BC,GAA2BvhD,EAAO,CAAC,EAAGshD,GAA2B,CACnE,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAEnCE,GAAuBxhD,EAAO,CAAC,EAAGuhD,GAA0B,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAE3BE,GAA2BzhD,EAAO,CAAC,EAAGwhD,GAAsB,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAG5EE,GAAgB,SAAUljB,EAAK/rC,GACjC,IAAIgT,EAAOs/B,EAAOvG,EAAK,GACvB,OAAO/4B,EAAO,IAAQA,EAAO,MAASwb,EAAOxuB,EAAK+rC,GAAOA,EAAMn9B,mBAAmBm9B,EACpF,EAGImjB,GAAiB,CACnBC,IAAK,GACLC,KAAM,KACNC,KAAM,GACNC,MAAO,IACPC,GAAI,GACJC,IAAK,KAIHC,GAAuB,SAAU9yB,EAAQ+yB,GAC3C,IAAItd,EACJ,OAAyB,IAAlBzV,EAAOjoC,QAAgBq0B,EAAKykC,EAAOx3C,EAAO2mB,EAAQ,MAClB,OAAhCyV,EAASp8B,EAAO2mB,EAAQ,MAAiB+yB,GAAyB,MAAXtd,EAChE,EAGIud,GAA+B,SAAUhzB,GAC3C,IAAI0gB,EACJ,OAAO1gB,EAAOjoC,OAAS,GAAK+6D,GAAqB9zB,EAAYgB,EAAQ,EAAG,MACpD,IAAlBA,EAAOjoC,QAC0B,OAA/B2oD,EAAQrnC,EAAO2mB,EAAQ,KAAyB,OAAV0gB,GAA4B,MAAVA,GAA2B,MAAVA,EAE/E,EAGIuS,GAAc,SAAUC,GAC1B,MAAmB,MAAZA,GAA4C,QAAzBxyD,EAAYwyD,EACxC,EASIC,GAAe,CAAC,EAChBC,GAAS,CAAC,EACVC,GAAY,CAAC,EACbC,GAAgC,CAAC,EACjCC,GAAoB,CAAC,EACrBC,GAAW,CAAC,EACZC,GAAiB,CAAC,EAClBC,GAA4B,CAAC,EAC7BC,GAAmC,CAAC,EACpCC,GAAY,CAAC,EACbC,GAAO,CAAC,EACRC,GAAW,CAAC,EACZC,GAAO,CAAC,EACRC,GAAO,CAAC,EACRC,GAAa,CAAC,EACdC,GAAY,CAAC,EACbC,GAAa,CAAC,EACdC,GAAO,CAAC,EACRC,GAA4B,CAAC,EAC7BC,GAAQ,CAAC,EACTC,GAAW,CAAC,EAEZC,GAAW,SAAU1sD,EAAK2sD,EAAQ35D,GACpC,IACI45D,EAAWC,EAASvtD,EADpBwtD,EAAY/O,EAAU/9C,GAE1B,GAAI2sD,EAAQ,CAEV,GADAE,EAAUt6D,KAAKqc,MAAMk+C,GACR,MAAM,IAAIl9D,EAAUi9D,GACjCt6D,KAAK+M,aAAe,IACtB,KAAO,CAGL,QAFapK,IAATlC,IAAoB45D,EAAY,IAAIF,GAAS15D,GAAM,IACvD65D,EAAUt6D,KAAKqc,MAAMk+C,EAAW,KAAMF,GACzB,MAAM,IAAIh9D,EAAUi9D,IACjCvtD,EAAeopD,EAA6B,IAAI7rC,IACnCwqC,QAAQ90D,MACrBA,KAAK+M,aAAeA,CACtB,CACF,EAEAotD,GAAS97D,UAAY,CACnB4C,KAAM,MAGNob,MAAO,SAAUhC,EAAOmgD,EAAe/5D,GACrC,IAOIg6D,EAAY1lB,EAAK2lB,EAAkBJ,EAzDfzB,EAkDpBprD,EAAMzN,KACN2M,EAAQ6tD,GAAiB1B,GACzB6B,EAAU,EACV9wC,EAAS,GACT+wC,GAAS,EACTC,GAAc,EACdC,GAAoB,EAuBxB,IApBAzgD,EAAQmxC,EAAUnxC,GAEbmgD,IACH/sD,EAAIstD,OAAS,GACbttD,EAAIgE,SAAW,GACfhE,EAAIiE,SAAW,GACfjE,EAAIkxC,KAAO,KACXlxC,EAAIqwC,KAAO,KACXrwC,EAAIS,KAAO,GACXT,EAAIynD,MAAQ,KACZznD,EAAIutD,SAAW,KACfvtD,EAAIwtD,kBAAmB,EACvB5gD,EAAQlV,EAAQkV,EAAO48C,GAA6B,IACpD58C,EAAQlV,EAAQkV,EAAO68C,GAA8B,OAGvD78C,EAAQlV,EAAQkV,EAAO88C,GAAkB,IAEzCsD,EAAa1E,EAAU17C,GAEhBsgD,GAAWF,EAAW/8D,QAAQ,CAEnC,OADAq3C,EAAM0lB,EAAWE,GACThuD,GACN,KAAKmsD,GACH,IAAI/jB,IAAOhjB,EAAKykC,EAAOzhB,GAGhB,IAAKylB,EAGL,OAAOnE,EAFZ1pD,EAAQqsD,GACR,QAC0B,CAL1BnvC,GAAUxjB,EAAY0uC,GACtBpoC,EAAQosD,GAKV,MAEF,KAAKA,GACH,GAAIhkB,IAAQhjB,EAAK0kC,EAAc1hB,IAAgB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GACnElrB,GAAUxjB,EAAY0uC,OACjB,IAAY,MAARA,EA0BJ,IAAKylB,EAKL,OAAOnE,EAJZxsC,EAAS,GACTld,EAAQqsD,GACR2B,EAAU,EACV,QAC0B,CA9B1B,GAAIH,IACD/sD,EAAIytD,cAAgB1jC,EAAO0gC,GAAgBruC,IAChC,SAAXA,IAAsBpc,EAAI0tD,uBAAsC,OAAb1tD,EAAIqwC,OACxC,SAAfrwC,EAAIstD,SAAsBttD,EAAIkxC,MAC9B,OAEH,GADAlxC,EAAIstD,OAASlxC,EACT2wC,EAEF,YADI/sD,EAAIytD,aAAehD,GAAezqD,EAAIstD,UAAYttD,EAAIqwC,OAAMrwC,EAAIqwC,KAAO,OAG7Ej0B,EAAS,GACU,SAAfpc,EAAIstD,OACNpuD,EAAQgtD,GACClsD,EAAIytD,aAAez6D,GAAQA,EAAKs6D,SAAWttD,EAAIstD,OACxDpuD,EAAQssD,GACCxrD,EAAIytD,YACbvuD,EAAQ0sD,GAC6B,MAA5BoB,EAAWE,EAAU,IAC9BhuD,EAAQusD,GACRyB,MAEAltD,EAAIwtD,kBAAmB,EACvB55D,EAAKoM,EAAIS,KAAM,IACfvB,EAAQqtD,GAOgB,CAC5B,MAEF,KAAKhB,GACH,IAAKv4D,GAASA,EAAKw6D,kBAA4B,MAARlmB,EAAc,OAAOshB,EAC5D,GAAI51D,EAAKw6D,kBAA4B,MAARlmB,EAAa,CACxCtnC,EAAIstD,OAASt6D,EAAKs6D,OAClBttD,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQz0D,EAAKy0D,MACjBznD,EAAIutD,SAAW,GACfvtD,EAAIwtD,kBAAmB,EACvBtuD,EAAQutD,GACR,KACF,CACAvtD,EAAwB,SAAhBlM,EAAKs6D,OAAoBpB,GAAOR,GACxC,SAEF,KAAKF,GACH,GAAY,MAARlkB,GAA2C,MAA5B0lB,EAAWE,EAAU,GAGjC,CACLhuD,EAAQwsD,GACR,QACF,CALExsD,EAAQ2sD,GACRqB,IAIA,MAEJ,KAAKzB,GACH,GAAY,MAARnkB,EAAa,CACfpoC,EAAQ4sD,GACR,KACF,CACE5sD,EAAQotD,GACR,SAGJ,KAAKZ,GAEH,GADA1rD,EAAIstD,OAASt6D,EAAKs6D,OACdhmB,IAAQ+gB,EACVroD,EAAIgE,SAAWhR,EAAKgR,SACpBhE,EAAIiE,SAAWjR,EAAKiR,SACpBjE,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIqwC,KAAOr9C,EAAKq9C,KAChBrwC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQz0D,EAAKy0D,WACZ,GAAY,MAARngB,GAAwB,OAARA,GAAgBtnC,EAAIytD,YAC7CvuD,EAAQysD,QACH,GAAY,MAARrkB,EACTtnC,EAAIgE,SAAWhR,EAAKgR,SACpBhE,EAAIiE,SAAWjR,EAAKiR,SACpBjE,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIqwC,KAAOr9C,EAAKq9C,KAChBrwC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQ,GACZvoD,EAAQstD,OACH,IAAY,MAARllB,EASJ,CACLtnC,EAAIgE,SAAWhR,EAAKgR,SACpBhE,EAAIiE,SAAWjR,EAAKiR,SACpBjE,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIqwC,KAAOr9C,EAAKq9C,KAChBrwC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIS,KAAKxQ,SACTiP,EAAQotD,GACR,QACF,CAjBEtsD,EAAIgE,SAAWhR,EAAKgR,SACpBhE,EAAIiE,SAAWjR,EAAKiR,SACpBjE,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIqwC,KAAOr9C,EAAKq9C,KAChBrwC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQz0D,EAAKy0D,MACjBznD,EAAIutD,SAAW,GACfruD,EAAQutD,EAUV,CAAE,MAEJ,KAAKd,GACH,IAAI3rD,EAAIytD,aAAwB,MAARnmB,GAAuB,OAARA,EAEhC,IAAY,MAARA,EAEJ,CACLtnC,EAAIgE,SAAWhR,EAAKgR,SACpBhE,EAAIiE,SAAWjR,EAAKiR,SACpBjE,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIqwC,KAAOr9C,EAAKq9C,KAChBnxC,EAAQotD,GACR,QACF,CAREptD,EAAQ4sD,EAQV,MAVE5sD,EAAQ2sD,GAUR,MAEJ,KAAKD,GAEH,GADA1sD,EAAQ2sD,GACI,MAARvkB,GAA+C,MAAhC/1B,EAAO6K,EAAQ8wC,EAAU,GAAY,SACxDA,IACA,MAEF,KAAKrB,GACH,GAAY,MAARvkB,GAAuB,OAARA,EAAc,CAC/BpoC,EAAQ4sD,GACR,QACF,CAAE,MAEJ,KAAKA,GACH,GAAY,MAARxkB,EAAa,CACX6lB,IAAQ/wC,EAAS,MAAQA,GAC7B+wC,GAAS,EACTF,EAAmB3E,EAAUlsC,GAC7B,IAAK,IAAIpsB,EAAI,EAAGA,EAAIi9D,EAAiBh9D,OAAQD,IAAK,CAChD,IAAI02D,EAAYuG,EAAiBj9D,GACjC,GAAkB,MAAd02D,GAAsB2G,EAA1B,CAIA,IAAIM,EAAoBnD,GAAc9D,EAAW6D,IAC7C8C,EAAmBrtD,EAAIiE,UAAY0pD,EAClC3tD,EAAIgE,UAAY2pD,CAHrB,MAFEN,GAAoB,CAMxB,CACAjxC,EAAS,EACX,MAAO,GACLkrB,IAAQ+gB,GAAe,MAAR/gB,GAAuB,MAARA,GAAuB,MAARA,GACpC,OAARA,GAAgBtnC,EAAIytD,YACrB,CACA,GAAIN,GAAqB,KAAX/wC,EAAe,MA1ejB,oBA2eZ8wC,GAAW5E,EAAUlsC,GAAQnsB,OAAS,EACtCmsB,EAAS,GACTld,EAAQ6sD,EACV,MAAO3vC,GAAUkrB,EACjB,MAEF,KAAKykB,GACL,KAAKC,GACH,GAAIe,GAAgC,SAAf/sD,EAAIstD,OAAmB,CAC1CpuD,EAAQktD,GACR,QACF,CAAO,GAAY,MAAR9kB,GAAgB8lB,EAOpB,IACL9lB,IAAQ+gB,GAAe,MAAR/gB,GAAuB,MAARA,GAAuB,MAARA,GACpC,OAARA,GAAgBtnC,EAAIytD,YACrB,CACA,GAAIztD,EAAIytD,aAA0B,KAAXrxC,EAAe,OAAOysC,EAC7C,GAAIkE,GAA4B,KAAX3wC,IAAkBpc,EAAI0tD,uBAAsC,OAAb1tD,EAAIqwC,MAAgB,OAExF,GADAwc,EAAU7sD,EAAI4tD,UAAUxxC,GACX,OAAOywC,EAGpB,GAFAzwC,EAAS,GACTld,EAAQmtD,GACJU,EAAe,OACnB,QACF,CACc,MAARzlB,EAAa8lB,GAAc,EACd,MAAR9lB,IAAa8lB,GAAc,GACpChxC,GAAUkrB,CACZ,KAvBwC,CACtC,GAAe,KAAXlrB,EAAe,OAAOysC,EAE1B,GADAgE,EAAU7sD,EAAI4tD,UAAUxxC,GACX,OAAOywC,EAGpB,GAFAzwC,EAAS,GACTld,EAAQ+sD,GACJc,IAAkBf,GAAU,MAClC,CAgBE,MAEJ,KAAKC,GACH,IAAI3nC,EAAK2kC,EAAO3hB,GAET,IACLA,IAAQ+gB,GAAe,MAAR/gB,GAAuB,MAARA,GAAuB,MAARA,GACpC,OAARA,GAAgBtnC,EAAIytD,aACrBV,EACA,CACA,GAAe,KAAX3wC,EAAe,CACjB,IAAIi0B,EAAOj3C,EAASgjB,EAAQ,IAC5B,GAAIi0B,EAAO,MAAQ,OAAOyY,EAC1B9oD,EAAIqwC,KAAQrwC,EAAIytD,aAAepd,IAASoa,GAAezqD,EAAIstD,QAAW,KAAOjd,EAC7Ej0B,EAAS,EACX,CACA,GAAI2wC,EAAe,OACnB7tD,EAAQmtD,GACR,QACF,CAAO,OAAOvD,CAAY,CAfxB1sC,GAAUkrB,EAgBZ,MAEF,KAAK4kB,GAEH,GADAlsD,EAAIstD,OAAS,OACD,MAARhmB,GAAuB,OAARA,EAAcpoC,EAAQitD,OACpC,KAAIn5D,GAAwB,SAAhBA,EAAKs6D,OA6Bf,CACLpuD,EAAQotD,GACR,QACF,CA/BE,OAAQhlB,GACN,KAAK+gB,EACHroD,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQz0D,EAAKy0D,MACjB,MACF,IAAK,IACHznD,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQ,GACZvoD,EAAQstD,GACR,MACF,IAAK,IACHxsD,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAIynD,MAAQz0D,EAAKy0D,MACjBznD,EAAIutD,SAAW,GACfruD,EAAQutD,GACR,MACF,QACOvB,GAA6B5uD,EAAKmxB,EAAWu/B,EAAYE,GAAU,OACtEltD,EAAIkxC,KAAOl+C,EAAKk+C,KAChBlxC,EAAIS,KAAOgtB,EAAWz6B,EAAKyN,MAC3BT,EAAI6tD,eAEN3uD,EAAQotD,GACR,SAKN,CAAE,MAEJ,KAAKH,GACH,GAAY,MAAR7kB,GAAuB,OAARA,EAAc,CAC/BpoC,EAAQktD,GACR,KACF,CACIp5D,GAAwB,SAAhBA,EAAKs6D,SAAsBpC,GAA6B5uD,EAAKmxB,EAAWu/B,EAAYE,GAAU,OACpGlC,GAAqBh4D,EAAKyN,KAAK,IAAI,GAAO7M,EAAKoM,EAAIS,KAAMzN,EAAKyN,KAAK,IAClET,EAAIkxC,KAAOl+C,EAAKk+C,MAEvBhyC,EAAQotD,GACR,SAEF,KAAKF,GACH,GAAI9kB,IAAQ+gB,GAAe,MAAR/gB,GAAuB,OAARA,GAAwB,MAARA,GAAuB,MAARA,EAAa,CAC5E,IAAKylB,GAAiB/B,GAAqB5uC,GACzCld,EAAQotD,QACH,GAAe,KAAXlwC,EAAe,CAExB,GADApc,EAAIkxC,KAAO,GACP6b,EAAe,OACnB7tD,EAAQmtD,EACV,KAAO,CAEL,GADAQ,EAAU7sD,EAAI4tD,UAAUxxC,GACX,OAAOywC,EAEpB,GADiB,cAAb7sD,EAAIkxC,OAAsBlxC,EAAIkxC,KAAO,IACrC6b,EAAe,OACnB3wC,EAAS,GACTld,EAAQmtD,EACV,CAAE,QACJ,CAAOjwC,GAAUkrB,EACjB,MAEF,KAAK+kB,GACH,GAAIrsD,EAAIytD,aAEN,GADAvuD,EAAQotD,GACI,MAARhlB,GAAuB,OAARA,EAAc,cAC5B,GAAKylB,GAAyB,MAARzlB,EAGtB,GAAKylB,GAAyB,MAARzlB,GAGtB,GAAIA,IAAQ+gB,IACjBnpD,EAAQotD,GACI,MAARhlB,GAAa,cAJjBtnC,EAAIutD,SAAW,GACfruD,EAAQutD,QAJRzsD,EAAIynD,MAAQ,GACZvoD,EAAQstD,GAOR,MAEJ,KAAKF,GACH,GACEhlB,IAAQ+gB,GAAe,MAAR/gB,GACN,OAARA,GAAgBtnC,EAAIytD,cACnBV,IAA0B,MAARzlB,GAAuB,MAARA,GACnC,CAkBA,GAvZS,QADnB8jB,EAAUxyD,EADgBwyD,EAwYAhvC,KAtYa,SAAZgvC,GAAkC,SAAZA,GAAkC,WAAZA,GAuY3DprD,EAAI6tD,cACQ,MAARvmB,GAAyB,OAARA,GAAgBtnC,EAAIytD,aACvC75D,EAAKoM,EAAIS,KAAM,KAER0qD,GAAY/uC,GACT,MAARkrB,GAAyB,OAARA,GAAgBtnC,EAAIytD,aACvC75D,EAAKoM,EAAIS,KAAM,KAGE,SAAfT,EAAIstD,SAAsBttD,EAAIS,KAAKxQ,QAAU+6D,GAAqB5uC,KAChEpc,EAAIkxC,OAAMlxC,EAAIkxC,KAAO,IACzB90B,EAAS7K,EAAO6K,EAAQ,GAAK,KAE/BxoB,EAAKoM,EAAIS,KAAM2b,IAEjBA,EAAS,GACU,SAAfpc,EAAIstD,SAAsBhmB,IAAQ+gB,GAAe,MAAR/gB,GAAuB,MAARA,GAC1D,KAAOtnC,EAAIS,KAAKxQ,OAAS,GAAqB,KAAhB+P,EAAIS,KAAK,IACrC2O,EAAMpP,EAAIS,MAGF,MAAR6mC,GACFtnC,EAAIynD,MAAQ,GACZvoD,EAAQstD,IACS,MAARllB,IACTtnC,EAAIutD,SAAW,GACfruD,EAAQutD,GAEZ,MACErwC,GAAUouC,GAAcljB,EAAKgjB,IAC7B,MAEJ,KAAKiC,GACS,MAARjlB,GACFtnC,EAAIynD,MAAQ,GACZvoD,EAAQstD,IACS,MAARllB,GACTtnC,EAAIutD,SAAW,GACfruD,EAAQutD,IACCnlB,IAAQ+gB,IACjBroD,EAAIS,KAAK,IAAM+pD,GAAcljB,EAAK8iB,KAClC,MAEJ,KAAKoC,GACEO,GAAyB,MAARzlB,EAGXA,IAAQ+gB,IACL,MAAR/gB,GAAetnC,EAAIytD,YAAaztD,EAAIynD,OAAS,MAC3BznD,EAAIynD,OAAT,MAARngB,EAA0B,MACjBkjB,GAAcljB,EAAK8iB,MALrCpqD,EAAIutD,SAAW,GACfruD,EAAQutD,IAKR,MAEJ,KAAKA,GACCnlB,IAAQ+gB,IAAKroD,EAAIutD,UAAY/C,GAAcljB,EAAK+iB,KAIxD6C,GACF,CACF,EAEAU,UAAW,SAAUhhD,GACnB,IAAIxa,EAAQ46D,EAAYx1D,EACxB,GAAyB,MAArB+Z,EAAO3E,EAAO,GAAY,CAC5B,GAAwC,MAApC2E,EAAO3E,EAAOA,EAAM3c,OAAS,GAAY,OAAO44D,EAEpD,GADAz2D,EAhoBU,SAAUwa,GACxB,IAIItZ,EAAOrD,EAAQ69D,EAAaC,EAAW3+B,EAAQ4+B,EAAOC,EAJtDC,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCC,EAAa,EACbvE,EAAW,KACXsD,EAAU,EAGV5lB,EAAM,WACR,OAAO/1B,EAAO3E,EAAOsgD,EACvB,EAEA,GAAc,MAAV5lB,IAAe,CACjB,GAAyB,MAArB/1B,EAAO3E,EAAO,GAAY,OAC9BsgD,GAAW,EAEXtD,IADAuE,CAEF,CACA,KAAO7mB,KAAO,CACZ,GAAmB,IAAf6mB,EAAkB,OACtB,GAAc,MAAV7mB,IAAJ,CAQA,IADAh0C,EAAQrD,EAAS,EACVA,EAAS,GAAKq0B,EAAK+kC,GAAK/hB,MAC7Bh0C,EAAgB,GAARA,EAAa8F,EAASkuC,IAAO,IACrC4lB,IACAj9D,IAEF,GAAc,MAAVq3C,IAAe,CACjB,GAAe,IAAXr3C,EAAc,OAElB,GADAi9D,GAAWj9D,EACPk+D,EAAa,EAAG,OAEpB,IADAL,EAAc,EACPxmB,KAAO,CAEZ,GADAymB,EAAY,KACRD,EAAc,EAAG,CACnB,KAAc,MAAVxmB,KAAiBwmB,EAAc,GAC9B,OADiCZ,GAExC,CACA,IAAK5oC,EAAK2kC,EAAO3hB,KAAQ,OACzB,KAAOhjB,EAAK2kC,EAAO3hB,MAAQ,CAEzB,GADAlY,EAASh2B,EAASkuC,IAAO,IACP,OAAdymB,EAAoBA,EAAY3+B,MAC/B,IAAkB,IAAd2+B,EAAiB,OACrBA,EAAwB,GAAZA,EAAiB3+B,CAAM,CACxC,GAAI2+B,EAAY,IAAK,OACrBb,GACF,CACAgB,EAAQC,GAAoC,IAAtBD,EAAQC,GAAoBJ,EAE9B,KADpBD,GACyC,IAAhBA,GAAmBK,GAC9C,CACA,GAAoB,IAAhBL,EAAmB,OACvB,KACF,CAAO,GAAc,MAAVxmB,KAET,GADA4lB,KACK5lB,IAAO,YACP,GAAIA,IAAO,OAClB4mB,EAAQC,KAAgB76D,CArCxB,KANA,CACE,GAAiB,OAAbs2D,EAAmB,OACvBsD,IAEAtD,IADAuE,CAGF,CAsCF,CACA,GAAiB,OAAbvE,EAGF,IAFAoE,EAAQG,EAAavE,EACrBuE,EAAa,EACS,IAAfA,GAAoBH,EAAQ,GACjCC,EAAOC,EAAQC,GACfD,EAAQC,KAAgBD,EAAQtE,EAAWoE,EAAQ,GACnDE,EAAQtE,IAAaoE,GAASC,OAE3B,GAAmB,IAAfE,EAAkB,OAC7B,OAAOD,CACT,CAsjBeE,CAAUl3B,EAAYtqB,EAAO,GAAI,KACrCxa,EAAQ,OAAOy2D,EACpBt2D,KAAK2+C,KAAO9+C,CAEd,MAAO,GAAKG,KAAKk7D,YAQV,CAEL,GADA7gD,EAAQ27C,EAAQ37C,GACZ0X,EAAKglC,GAA2B18C,GAAQ,OAAOi8C,EAEnD,GADAz2D,EAvrBU,SAAUwa,GACxB,IACIyhD,EAAaC,EAAS92D,EAAO+2D,EAAM1V,EAAOzpB,EAAQo/B,EADlD3vC,EAAQriB,EAAMoQ,EAAO,KAMzB,GAJIiS,EAAM5uB,QAAsC,KAA5B4uB,EAAMA,EAAM5uB,OAAS,IACvC4uB,EAAM5uB,UAERo+D,EAAcxvC,EAAM5uB,QACF,EAAG,OAAO2c,EAE5B,IADA0hD,EAAU,GACL92D,EAAQ,EAAGA,EAAQ62D,EAAa72D,IAAS,CAE5C,GAAa,MADb+2D,EAAO1vC,EAAMrnB,IACI,OAAOoV,EAMxB,GALAisC,EAAQ,GACJ0V,EAAKt+D,OAAS,GAAyB,MAApBshB,EAAOg9C,EAAM,KAClC1V,EAAQv0B,EAAK4kC,EAAWqF,GAAQ,GAAK,EACrCA,EAAOr3B,EAAYq3B,EAAgB,IAAV1V,EAAc,EAAI,IAEhC,KAAT0V,EACFn/B,EAAS,MACJ,CACL,IAAK9K,EAAe,KAAVu0B,EAAeuQ,EAAgB,IAAVvQ,EAAcsQ,EAAME,GAAKkF,GAAO,OAAO3hD,EACtEwiB,EAASh2B,EAASm1D,EAAM1V,EAC1B,CACAjlD,EAAK06D,EAASl/B,EAChB,CACA,IAAK53B,EAAQ,EAAGA,EAAQ62D,EAAa72D,IAEnC,GADA43B,EAASk/B,EAAQ92D,GACbA,IAAU62D,EAAc,GAC1B,GAAIj/B,GAAUwQ,EAAI,IAAK,EAAIyuB,GAAc,OAAO,UAC3C,GAAIj/B,EAAS,IAAK,OAAO,KAGlC,IADAo/B,EAAO3vD,EAAIyvD,GACN92D,EAAQ,EAAGA,EAAQ82D,EAAQr+D,OAAQuH,IACtCg3D,GAAQF,EAAQ92D,GAASooC,EAAI,IAAK,EAAIpoC,GAExC,OAAOg3D,CACT,CAmpBeC,CAAU7hD,GACJ,OAAXxa,EAAiB,OAAOy2D,EAC5Bt2D,KAAK2+C,KAAO9+C,CACd,KAd8B,CAC5B,GAAIkyB,EAAKilC,GAA6C38C,GAAQ,OAAOi8C,EAGrE,IAFAz2D,EAAS,GACT46D,EAAa1E,EAAU17C,GAClBpV,EAAQ,EAAGA,EAAQw1D,EAAW/8D,OAAQuH,IACzCpF,GAAUo4D,GAAcwC,EAAWx1D,GAAQ4yD,IAE7C73D,KAAK2+C,KAAO9+C,CACd,CAOF,EAEAs8D,+BAAgC,WAC9B,OAAQn8D,KAAK2+C,MAAQ3+C,KAAKi7D,kBAAoC,SAAhBj7D,KAAK+6D,MACrD,EAEAI,oBAAqB,WACnB,MAAyB,KAAlBn7D,KAAKyR,UAAqC,KAAlBzR,KAAK0R,QACtC,EAEAwpD,UAAW,WACT,OAAO1jC,EAAO0gC,GAAgBl4D,KAAK+6D,OACrC,EAEAO,YAAa,WACX,IAAIptD,EAAOlO,KAAKkO,KACZkuD,EAAWluD,EAAKxQ,QAChB0+D,GAA6B,SAAhBp8D,KAAK+6D,QAAkC,IAAbqB,GAAmB3D,GAAqBvqD,EAAK,IAAI,IAC1FA,EAAKxQ,QAET,EAEA+2D,UAAW,WACT,IAAIhnD,EAAMzN,KACN+6D,EAASttD,EAAIstD,OACbtpD,EAAWhE,EAAIgE,SACfC,EAAWjE,EAAIiE,SACfitC,EAAOlxC,EAAIkxC,KACXb,EAAOrwC,EAAIqwC,KACX5vC,EAAOT,EAAIS,KACXgnD,EAAQznD,EAAIynD,MACZ8F,EAAWvtD,EAAIutD,SACf7e,EAAS4e,EAAS,IAYtB,OAXa,OAATpc,GACFxC,GAAU,KACN1uC,EAAI0tD,wBACNhf,GAAU1qC,GAAYC,EAAW,IAAMA,EAAW,IAAM,KAE1DyqC,GAAUib,GAAczY,GACX,OAATb,IAAe3B,GAAU,IAAM2B,IACf,SAAXid,IAAmB5e,GAAU,MACxCA,GAAU1uC,EAAIwtD,iBAAmB/sD,EAAK,GAAKA,EAAKxQ,OAAS,IAAMqM,EAAKmE,EAAM,KAAO,GACnE,OAAVgnD,IAAgB/Y,GAAU,IAAM+Y,GACnB,OAAb8F,IAAmB7e,GAAU,IAAM6e,GAChC7e,CACT,EAEAkgB,QAAS,SAAUlvD,GACjB,IAAImtD,EAAUt6D,KAAKqc,MAAMlP,GACzB,GAAImtD,EAAS,MAAM,IAAIj9D,EAAUi9D,GACjCt6D,KAAK+M,aAAagoD,QACpB,EAEAuH,UAAW,WACT,IAAIvB,EAAS/6D,KAAK+6D,OACdjd,EAAO99C,KAAK89C,KAChB,GAAe,SAAXid,EAAmB,IACrB,OAAO,IAAIwB,GAAexB,EAAO7sD,KAAK,IAAI2X,MAC5C,CAAE,MAAOngB,GACP,MAAO,MACT,CACA,MAAe,SAAXq1D,GAAsB/6D,KAAKk7D,YACxBH,EAAS,MAAQ3D,GAAcp3D,KAAK2+C,OAAkB,OAATb,EAAgB,IAAMA,EAAO,IAD9B,MAErD,EAEA0e,YAAa,WACX,OAAOx8D,KAAK+6D,OAAS,GACvB,EACA0B,YAAa,SAAU/d,GACrB1+C,KAAKqc,MAAMmvC,EAAU9M,GAAY,IAAKoa,GACxC,EAEA4D,YAAa,WACX,OAAO18D,KAAKyR,QACd,EACAkrD,YAAa,SAAUlrD,GACrB,IAAIgpD,EAAa1E,EAAUvK,EAAU/5C,IACrC,IAAIzR,KAAKm8D,iCAAT,CACAn8D,KAAKyR,SAAW,GAChB,IAAK,IAAIhU,EAAI,EAAGA,EAAIg9D,EAAW/8D,OAAQD,IACrCuC,KAAKyR,UAAYwmD,GAAcwC,EAAWh9D,GAAIu6D,GAHC,CAKnD,EAEA4E,YAAa,WACX,OAAO58D,KAAK0R,QACd,EACAmrD,YAAa,SAAUnrD,GACrB,IAAI+oD,EAAa1E,EAAUvK,EAAU95C,IACrC,IAAI1R,KAAKm8D,iCAAT,CACAn8D,KAAK0R,SAAW,GAChB,IAAK,IAAIjU,EAAI,EAAGA,EAAIg9D,EAAW/8D,OAAQD,IACrCuC,KAAK0R,UAAYumD,GAAcwC,EAAWh9D,GAAIu6D,GAHC,CAKnD,EAEA8E,QAAS,WACP,IAAIne,EAAO3+C,KAAK2+C,KACZb,EAAO99C,KAAK89C,KAChB,OAAgB,OAATa,EAAgB,GACV,OAATb,EAAgBsZ,GAAczY,GAC9ByY,GAAczY,GAAQ,IAAMb,CAClC,EACAif,QAAS,SAAUpe,GACb3+C,KAAKi7D,kBACTj7D,KAAKqc,MAAMsiC,EAAM6a,GACnB,EAEAwD,YAAa,WACX,IAAIre,EAAO3+C,KAAK2+C,KAChB,OAAgB,OAATA,EAAgB,GAAKyY,GAAczY,EAC5C,EACAse,YAAa,SAAUC,GACjBl9D,KAAKi7D,kBACTj7D,KAAKqc,MAAM6gD,EAAUzD,GACvB,EAEA0D,QAAS,WACP,IAAIrf,EAAO99C,KAAK89C,KAChB,OAAgB,OAATA,EAAgB,GAAK0N,EAAU1N,EACxC,EACAsf,QAAS,SAAUtf,GACb99C,KAAKm8D,mCAEI,MADbre,EAAO0N,EAAU1N,IACA99C,KAAK89C,KAAO,KACxB99C,KAAKqc,MAAMyhC,EAAM4b,IACxB,EAEA2D,YAAa,WACX,IAAInvD,EAAOlO,KAAKkO,KAChB,OAAOlO,KAAKi7D,iBAAmB/sD,EAAK,GAAKA,EAAKxQ,OAAS,IAAMqM,EAAKmE,EAAM,KAAO,EACjF,EACAovD,YAAa,SAAUjxD,GACjBrM,KAAKi7D,mBACTj7D,KAAKkO,KAAO,GACZlO,KAAKqc,MAAMhQ,EAAUytD,IACvB,EAEAyD,UAAW,WACT,IAAIrI,EAAQl1D,KAAKk1D,MACjB,OAAOA,EAAQ,IAAMA,EAAQ,EAC/B,EACAsI,UAAW,SAAUlmD,GAEJ,MADfA,EAASk0C,EAAUl0C,IAEjBtX,KAAKk1D,MAAQ,MAEa,MAAtBl2C,EAAO1H,EAAQ,KAAYA,EAASqtB,EAAYrtB,EAAQ,IAC5DtX,KAAKk1D,MAAQ,GACbl1D,KAAKqc,MAAM/E,EAAQ2iD,KAErBj6D,KAAK+M,aAAagoD,QACpB,EAEA0I,gBAAiB,WACf,OAAOz9D,KAAK+M,aAAa2hC,MAC3B,EAEAgvB,QAAS,WACP,IAAI1C,EAAWh7D,KAAKg7D,SACpB,OAAOA,EAAW,IAAMA,EAAW,EACrC,EACA2C,QAAS,SAAUpzD,GAEJ,MADbA,EAAOihD,EAAUjhD,KAKO,MAApByU,EAAOzU,EAAM,KAAYA,EAAOo6B,EAAYp6B,EAAM,IACtDvK,KAAKg7D,SAAW,GAChBh7D,KAAKqc,MAAM9R,EAAM2vD,KALfl6D,KAAKg7D,SAAW,IAMpB,EACAjG,OAAQ,WACN/0D,KAAKk1D,MAAQl1D,KAAK+M,aAAa0nD,aAAe,IAChD,GAKF,IAAI8H,GAAiB,SAAa9uD,GAChC,IAAIu0B,EAAOrH,EAAW36B,KAAM49D,IACxBn9D,EAAOs9C,EAAwB79C,UAAUxC,OAAQ,GAAK,EAAIwC,UAAU,QAAKyC,EACzEgK,EAAQsvB,EAAiB+F,EAAM,IAAIm4B,GAAS1sD,GAAK,EAAOhN,IACvD82B,IACHyK,EAAK70B,KAAOR,EAAM8nD,YAClBzyB,EAAKnc,OAASlZ,EAAM2vD,YACpBt6B,EAAK0c,SAAW/xC,EAAM6vD,cACtBx6B,EAAKvwB,SAAW9E,EAAM+vD,cACtB16B,EAAKtwB,SAAW/E,EAAMiwD,cACtB56B,EAAK2c,KAAOhyC,EAAMmwD,UAClB96B,EAAKk7B,SAAWvwD,EAAMqwD,cACtBh7B,EAAK8b,KAAOnxC,EAAMwwD,UAClBn7B,EAAK31B,SAAWM,EAAM0wD,cACtBr7B,EAAK1qB,OAAS3K,EAAM4wD,YACpBv7B,EAAKj1B,aAAeJ,EAAM8wD,kBAC1Bz7B,EAAKz3B,KAAOoC,EAAM+wD,UAEtB,EAEIE,GAAerB,GAAel+D,UAE9Bw/D,GAAqB,SAAU53B,EAAQC,GACzC,MAAO,CACL5lC,IAAK,WACH,OAAO41D,EAAoBl2D,MAAMimC,IACnC,EACAj9B,IAAKk9B,GAAU,SAAUnlC,GACvB,OAAOm1D,EAAoBl2D,MAAMkmC,GAAQnlC,EAC3C,EACAlD,cAAc,EACdD,YAAY,EAEhB,EAqDA,GAnDI25B,IAGFK,EAAsBgmC,GAAc,OAAQC,GAAmB,YAAa,YAG5EjmC,EAAsBgmC,GAAc,SAAUC,GAAmB,cAGjEjmC,EAAsBgmC,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjmC,EAAsBgmC,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjmC,EAAsBgmC,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjmC,EAAsBgmC,GAAc,OAAQC,GAAmB,UAAW,YAG1EjmC,EAAsBgmC,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjmC,EAAsBgmC,GAAc,OAAQC,GAAmB,UAAW,YAG1EjmC,EAAsBgmC,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjmC,EAAsBgmC,GAAc,SAAUC,GAAmB,YAAa,cAG9EjmC,EAAsBgmC,GAAc,eAAgBC,GAAmB,oBAGvEjmC,EAAsBgmC,GAAc,OAAQC,GAAmB,UAAW,aAK5ElmC,EAAcimC,GAAc,UAAU,WACpC,OAAO1H,EAAoBl2D,MAAMy0D,WACnC,GAAG,CAAE72D,YAAY,IAIjB+5B,EAAcimC,GAAc,YAAY,WACtC,OAAO1H,EAAoBl2D,MAAMy0D,WACnC,GAAG,CAAE72D,YAAY,IAEbw4D,EAAW,CACb,IAAI0H,GAAwB1H,EAAU2H,gBAClCC,GAAwB5H,EAAU6H,gBAGlCH,IAAuBnmC,EAAc4kC,GAAgB,kBAAmB79D,EAAKo/D,GAAuB1H,IAGpG4H,IAAuBrmC,EAAc4kC,GAAgB,kBAAmB79D,EAAKs/D,GAAuB5H,GAC1G,CAEA/6B,EAAekhC,GAAgB,OAE/B1rB,EAAE,CAAE/oB,QAAQ,EAAM7nB,aAAa,EAAMi6B,QAAS64B,EAAgBzzD,MAAOi4B,GAAe,CAClFhqB,IAAKgvD,wCCthCP,EAAQ,yCCDR,IAAI1rB,EAAI,EAAQ,MACZnxC,EAAO,EAAQ,MAInBmxC,EAAE,CAAEtzC,OAAQ,MAAOm8B,OAAO,EAAM97B,YAAY,GAAQ,CAClDkkD,OAAQ,WACN,OAAOpiD,EAAK6N,IAAIlP,UAAUiL,SAAUtJ,KACtC,+CCRF,UAAeiG,OAAa,qCCI3B,IAAU6hB,EAAQwJ,EAARxJ,EAYO,oBAAT/oB,KAAuBA,UAAO,EAZpBuyB,EAY0B,SAAUxJ,GAGnD,GAAwB,mBAAZjmB,QACR,KAAM,2BAEV,IAAIq8D,EAAUp2C,EAAO/H,QAAU+H,EAAOq2C,SACtC,GAAMD,EAAN,CAEA,IAAIE,EAAUF,EAAQj+C,QAAUi+C,EAAQG,aACxC,GAAMD,EAAN,CAEA,IAAIE,EAAcx2C,EAAOy2C,QAAUL,EAAQj+D,aAAelC,OACtDygE,EAAgB12C,EAAO22C,cAAgBL,EAAQn+D,aAAelC,OAG9D2gE,GAFc52C,EAAO62C,WAAa72C,EAAO82C,IAEhC92C,EAAO3hB,UAAUC,UAAUqG,QAAQ,UAAY,GACxDoyD,IAAY/2C,EAAOq2C,WAAaO,EAChCI,GAAYZ,EAAQj+C,UAAYi+C,EAAQG,aAC5C,GAAMQ,GAASC,EAAf,CAgKA,IAAIC,EAAU,CAAE,aAAgB,wBAC5BC,EAAU,CAAE,uBAAwB,gBAqXxC,GAhPA,CAAE,cAAe,YAAa,aACzB10D,SAAS,SAAW1D,GACjB,IAAIq4D,EAAMb,EAAQx3D,GAElBw3D,EAAQx3D,GAAK,SAAW2pB,EAAGP,EAAGjrB,GAC1B,IACIm6D,EAAIC,EAAIC,EA9LhB19C,EAiQQ5B,EApEArb,EAAO,GAAG9C,MAAMjC,KAAKQ,WAGzB,OAAS0G,GACL,IAAK,cACDs4D,EAAKv9C,EAAI4O,GAAI4uC,EAAKnvC,EAAGovC,EAAKr6D,EAC1B,MACJ,IAAK,YACDm6D,EAAKv9C,EAAI5c,GAAIo6D,EAAK16D,EAAK,GAAI26D,EAAK36D,EAAK,GAC1B,QAAN8rB,KACDP,EAAIqvC,EAAMrvC,IACFrO,MAAMqO,EAAErO,IAAM29C,EAAOJ,IACvBlvC,EAAEpO,UAAUoO,EAAEpO,QAAsB,QAAVoO,EAAEuvC,IAAoB,MAAOvvC,EAAMovC,EAAGnxD,OAAOuxD,GAAeJ,EAAGnxD,OAAOwxD,GAAeL,EAAGz9D,SACxH8C,EAAK,IA1MrBid,EAAM29C,EA0M0BrvC,GAzM/B6uC,IAAOn9C,EAAiB,YAAIA,EAAIK,WAAYL,EAAIK,KAC9C29C,EAAKC,SAAU/nD,mBAAoBpQ,KAAKC,UAAUia,MAAWmI,SA0MpD,MACJ,IAAK,YACDq1C,EAAKz6D,EAAK,GAAI06D,EAAK16D,EAAK,GAAI26D,EAAK36D,EAAK,GACtCA,EAAK,GAAKM,EAAEmD,KAIpB,GAAW,gBAANtB,GAAmC,SAAZs4D,EAAGz7D,MAAmBy7D,EAAG30D,KAEjD,OADA20D,EAAGxhE,OAASwhE,EAAGxhE,QAAU,CAAE,QAAS,IAAK,UAAW,IAAK,UAAW,KAAM,UAAW,MAAOwhE,EAAG30D,KAAK9G,MAC7F26D,EAAQt8C,UAAW,MAAOo8C,EAAQt9C,gBAAiB,IAAIH,WAAay+C,EAAGxhE,OAAO,GAAI,IAAOwhE,EAAIC,EAAIC,GAG5G,GAAKN,GAAkB,gBAANl4D,GAAmC,sBAAZs4D,EAAGz7D,QAAmCy7D,EAAG3+C,eAAiB2+C,EAAG3+C,eAAiB,MAElH,OADAgQ,EAAI5O,EAAI4O,IAAM9sB,KAAO,0BAA2B8sB,EAAEhmB,KAC3C6zD,EAAQwB,YAAarvC,GAAG,EAAM,CAAE,UAAW,YAC7CxuB,MAAM,SAAWqvB,GACd,OAAOvvB,QAAQ4M,IAAI,CACf2vD,EAAQyB,UAAW,MAAOzuC,EAAE0uC,WAC5B1B,EAAQyB,UAAW,MAAOzuC,EAAEnP,aAEpC,IACClgB,MAAM,SAAWsI,GAGd,OAFAA,EAAK,GAAGsX,IAAMtX,EAAK,GAAGsX,IAAM29C,EAAOJ,GACnC70D,EAAK,GAAGuX,QAAUw9C,EAAGnxD,OAAOwxD,GAAcp1D,EAAK,GAAGuX,QAAUw9C,EAAGnxD,OAAOuxD,GAC/D39D,QAAQ4M,IAAI,CACf2vD,EAAQt8C,UAAW,MAAOzX,EAAK,GAAI60D,GAAI,EAAM70D,EAAK,GAAGuX,SACrDw8C,EAAQt8C,UAAW,MAAOzX,EAAK,GAAI60D,EAAIC,EAAI90D,EAAK,GAAGuX,UAE3D,IACC7f,MAAM,SAAWsI,GACd,MAAO,CACHy1D,UAAWz1D,EAAK,GAChB4X,WAAY5X,EAAK,GAEzB,IAGR,IAAOy0D,GAAcD,GAAmC,WAAzBK,EAAG30D,MAAQ,CAAC,GAAI9G,OAC9B,cAANmD,GAA2B,QAAN2pB,GAA2B,SAAZ2uC,EAAGz7D,MAA6B,QAAVusB,EAAEuvC,IACnE,OAAOnB,EAAQt8C,UAAW,MAAO49C,EAAKK,EAAI/vC,EAAEoB,IAAMrsB,EAAGN,EAAK,GAAIA,EAAK,IAGvE,GAAKq6D,GAAkB,cAANl4D,IAA6B,SAAN2pB,GAAsB,UAANA,GACpD,OAAO6tC,EAAQt8C,UAAW,MAlP1C,SAAoBsP,GAChB,IAAI4uC,EAAOC,EAAM7uC,GAAI8uC,GAAM,EACtBF,EAAKtiE,OAAS,IAAIwiE,GAAM,EAAMF,EAAKnjD,SACxC,IAAI6E,EAAM,CAAE,KAAO,GACnB,GACS,yBADAs+C,EAAK,GAAG,GAYT,MAAM,IAAI3iE,UAAU,wBAVpB,IAAI8iE,EAAU,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MACjDC,EAAUH,EAAOD,EAAK,IACrBE,GAAME,EAAOvjD,QAClB,IAAM,IAAIpf,EAAI,EAAGA,EAAI2iE,EAAO1iE,OAAQD,IAC1B2iE,EAAO3iE,GAAG,KAAK2iE,EAAO3iE,GAAK2iE,EAAO3iE,GAAGyxB,SAAS,IACpDxN,EAAKy+C,EAAQ1iE,IAAO4iE,EAAKC,EAAKF,EAAO3iE,KAOjD,OALQikB,EAAS,IAAI,MAKdA,CACX,CA+NiD6+C,CAASvwC,GAAIjrB,EAAGN,EAAK,GAAIA,EAAK,IAGnE,GAAKo6D,GAAc,cAANj4D,EACT,OAAOw3D,EAAQoC,QAAS/7D,EAAK,GAAIM,EAAGirB,GAC/BjuB,MAAM,SAAWqvB,GACd,OAAOgtC,EAAQt8C,UAAWyO,EAAGa,EAAG3sB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAC3D,IAIR,IACIqb,EAAKm/C,EAAI9+D,MAAOi+D,EAAS35D,EAC7B,CACA,MAAQ9E,GACJ,OAAOkC,QAAQyO,OAAO3Q,EAC1B,CA8BA,OA5BKk/D,IACD/+C,EAAK,IAAIje,SAAS,SAAWuN,EAAKqxD,GAC9B3gD,EAAGjd,QACHid,EAAGqJ,QAAa,SAAWxpB,GAAM8gE,EAAI9gE,EAAiB,EACtDmgB,EAAG4gD,WAAa,SAAW96D,GAAMwJ,EAAIxJ,EAAErI,OAAOsC,OAAQ,CAC1D,KAGJigB,EAAKA,EAAG/d,MAAM,SAAWqvB,GAiBrB,MAhBiB,SAAZ8tC,EAAGz7D,OACEy7D,EAAGxhE,SAASwhE,EAAGxhE,OAAS,EAAI0zB,EAAE5O,UAAU9kB,SAEpB,GAAzBwhE,EAAGz7D,KAAK6T,OAAO,SACV4nD,EAAG3+C,gBAAgB2+C,EAAG3+C,eAAiB6Q,EAAE0uC,WAAa1uC,GAAG5O,UAAUjC,eACnE2+C,EAAG1+C,iBAAiB0+C,EAAG1+C,gBAAkB4Q,EAAE0uC,WAAa1uC,GAAG5O,UAAUhC,iBAE1E4Q,EAAE0uC,WAAa1uC,EAAEnP,WACd,CACA69C,UAAW,IAAInB,EAAWvtC,EAAE0uC,UAAWZ,EAAIC,EAAIC,EAAGnxD,OAAOwxD,IACzDx9C,WAAY,IAAI08C,EAAWvtC,EAAEnP,WAAYi9C,EAAIC,EAAIC,EAAGnxD,OAAOuxD,KAI3D,IAAIb,EAAWvtC,EAAG8tC,EAAIC,EAAIC,EAGtC,GAGJ,CACJ,IAEJ,CAAE,YAAa,WACV90D,SAAS,SAAW1D,GACjB,IAAIq4D,EAAMb,EAAQx3D,GAElBw3D,EAAQx3D,GAAK,SAAW2pB,EAAGP,EAAGjrB,GAC1B,IA4BI+a,EA5BArb,EAAO,GAAG9C,MAAMjC,KAAKQ,WAEzB,OAAS0G,GACL,IAAK,YACDnC,EAAK,GAAKurB,EAAE9nB,KACZ,MACJ,IAAK,UACDzD,EAAK,GAAKurB,EAAE9nB,KAAMzD,EAAK,GAAKM,EAAEmD,KAatC,IATO42D,GAAcD,GAA4C,WAAlC7uC,EAAExN,UAAUjY,MAAQ,CAAC,GAAI9G,OACvC,cAANmD,GAA2B,QAAN2pB,GAAoC,SAArBP,EAAExN,UAAU/e,OACvDgB,EAAK,GAAK,QAGTq6D,GAAkB,cAANl4D,GAA6B,SAAN2pB,GAAsB,UAANA,IACpD9rB,EAAK,GAAK,OAGTo6D,GAAc,YAANj4D,EACT,OAAOw3D,EAAQyB,UAAWtvC,EAAGP,GACxBjuB,MAAM,SAAWqvB,GAEd,MADW,QAANb,IAAca,EAAIsuC,EAAKC,SAAU/nD,mBAAoBpQ,KAAKC,UAAW43D,EAAMjuC,QACxEgtC,EAAQuC,QAASl8D,EAAK,GAAIM,EAAGqsB,EACzC,IAIR,IACItR,EAAKm/C,EAAI9+D,MAAOi+D,EAAS35D,EAC7B,CACA,MAAQ9E,GACJ,OAAOkC,QAAQyO,OAAO3Q,EAC1B,CA8BA,OA5BKk/D,IACD/+C,EAAK,IAAIje,SAAS,SAAWuN,EAAKqxD,GAC9B3gD,EAAGjd,QACHid,EAAGqJ,QAAa,SAAWxpB,GAAM8gE,EAAI9gE,EAAiB,EACtDmgB,EAAG4gD,WAAa,SAAW96D,GAAMwJ,EAAIxJ,EAAErI,OAAOsC,OAAQ,CAC1D,KAGO,cAAN+G,GAA2B,QAAN2pB,IACtBzQ,EAAKA,EAAG/d,MAAM,SAAWqvB,GACrB,OAAO0tC,GAAcD,GAA4C,WAAlC7uC,EAAExN,UAAUjY,MAAQ,CAAC,GAAI9G,OACxB,SAArBusB,EAAExN,UAAU/e,KACZ,CAAE,IAAO,MAAO,IAAO67D,EAAOtvC,EAAExN,WAAY,QAAWwN,EAAE4wC,OAAOj/D,QAAS,KAAO,EAAM,EAAK0+D,EAAKC,EAAIlvC,OAE/GA,EAAIiuC,EAAMjuC,IACFzP,MAAMyP,EAAO,IAAIkuC,EAAOtvC,EAAExN,YAC5B4O,EAAExP,UAAUwP,EAAW,QAAiB,WAAXpB,EAAE/uB,KAAsB+uB,EAAE4wC,OAAO3yD,OAAOwxD,GAA4B,YAAXzvC,EAAE/uB,KAAuB+uB,EAAE4wC,OAAO3yD,OAAOuxD,GAAexvC,EAAE4wC,OAAOj/D,SACtJyvB,EACX,MAGC0tC,GAAkB,cAANl4D,GAA6B,SAAN2pB,GAAsB,UAANA,IACpDzQ,EAAKA,EAAG/d,MAAM,SAAWqvB,GAErB,OADAA,EA/UpB,SAAoBA,GAChB,IAAInzB,EAAK+hE,EAAO,CAAE,CAAE,GAAI,OAAUE,GAAM,EACxC,GACS,QADA9uC,EAAEmuC,IAcH,MAAM,IAAIliE,UAAU,wBAVpB,IAFA,IAAI8iE,EAAU,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MACjDC,EAAS,GACH3iE,EAAI,EAAGA,EAAI0iE,EAAQziE,QACjByiE,EAAQ1iE,KAAM2zB,EADW3zB,IAAM,CAEvC,IAAIuyB,EAAIowC,EAAO3iE,GAAKiiE,EAAKK,EAAK3uC,EAAG+uC,EAAQ1iE,MAC7B,IAAPuyB,EAAE,KAAYowC,EAAO3iE,GAAK,IAAIgjB,WAAWuP,EAAEtyB,OAAS,GAAI0iE,EAAO3iE,GAAGuL,IAAKgnB,EAAG,GACnF,CAWR,OAVaowC,EAAO1iE,OAAS,IAAIwiE,GAAM,EAAME,EAAO13D,QAAS,IAAI+X,WAAW,CAAC,MACrEu/C,EAAK,GAAG,GAAK,uBACb/hE,EAAMmiE,EAKdJ,EAAK3+D,KAAM,IAAIof,WAAYogD,EAAM5iE,IAAO4rB,QAClCq2C,EACDF,EAAKt3D,QAAS,IAAI+X,WAAW,CAAC,KADvBu/C,EAAK,GAAK,CAAE,IAAO,EAAM,MAASA,EAAK,IAE5C,IAAIv/C,WAAYogD,EAAMb,IAAQn2C,MACzC,CAyTwBi3C,CAAUzB,EAAMjuC,IACbA,CACX,KAGGtR,CACX,CACJ,IAEJ,CAAE,UAAW,UAAW,OAAQ,UAC3BxV,SAAS,SAAW1D,GACjB,IAAIq4D,EAAMb,EAAQx3D,GAElBw3D,EAAQx3D,GAAK,SAAW2pB,EAAGP,EAAGjrB,EAAGysB,GAC7B,GAAKqtC,KAAW95D,EAAE6kB,YAAgB4H,IAAMA,EAAE5H,YACtC,MAAM,IAAIpmB,MAAM,6BAEpB,IAWIsc,EAXArb,EAAO,GAAG9C,MAAMjC,KAAKQ,WACrBg/D,EAAKv9C,EAAI4O,GAEb,GAAKsuC,GAAc,YAANj4D,GAA+B,YAAZs4D,EAAGz7D,KAAqB,CACpD,IAAIs9D,EAAKxwC,EAAEywC,WAAa,EACxBv8D,EAAK,IAAMM,EAAE8kB,QAAU9kB,GAAGpD,MAAO,EAAGoD,EAAE6kB,WAAam3C,GACnDxwC,EAAEyU,KAAOjgC,EAAE8kB,QAAU9kB,GAAGpD,MAAOoD,EAAE6kB,WAAam3C,EAClD,CAEAt8D,EAAK,GAAKurB,EAAE9nB,KAGZ,IACI4X,EAAKm/C,EAAI9+D,MAAOi+D,EAAS35D,EAC7B,CACA,MAAQ9E,GACJ,OAAOkC,QAAQyO,OAAO3Q,EAC1B,CAyBA,OAvBKk/D,IACD/+C,EAAK,IAAIje,SAAS,SAAWuN,EAAKqxD,GAC9B3gD,EAAGjd,QACHid,EAAGqJ,QAAU,SAAWxpB,GACpB8gE,EAAI9gE,EACR,EAEAmgB,EAAG4gD,WAAa,SAAW96D,GAGvB,GAFIA,EAAIA,EAAErI,OAAOsC,OAEN,YAAN+G,GAAmBhB,aAAaq7D,oBAAsB,CACvD,IAAIl8D,EAAIa,EAAEs7D,WAAYzlD,EAAI7V,EAAEo/B,KAC5Bp/B,EAAI,IAAI6a,WAAY1b,EAAE6kB,WAAanO,EAAEmO,aACnC5gB,IAAK,IAAIyX,WAAW1b,GAAI,GAC1Ba,EAAEoD,IAAK,IAAIyX,WAAWhF,GAAI1W,EAAE6kB,YAC5BhkB,EAAIA,EAAEikB,MACV,CAEAza,EAAIxJ,EACR,CACJ,KAGGka,CACX,CACJ,IAEC++C,EAAO,CACR,IAAIsC,EAAU/C,EAAQl9C,OAEtBk9C,EAAgB,OAAI,SAAW7tC,EAAGP,GAC9B,IAAMA,EAAEpG,WACJ,MAAM,IAAIpmB,MAAM,6BAEpB,IAAIsc,EACJ,IACIA,EAAKqhD,EAAQzhE,KAAM0+D,EAAS7tC,EAAGP,EACnC,CACA,MAAQrwB,GACJ,OAAOkC,QAAQyO,OAAO3Q,EAC1B,CAQA,OANAmgB,EAAK,IAAIje,SAAS,SAAWuN,EAAKqxD,GAC9B3gD,EAAGjd,QACHid,EAAGqJ,QAAa,SAAWxpB,GAAM8gE,EAAI9gE,EAAiB,EACtDmgB,EAAG4gD,WAAa,SAAW96D,GAAMwJ,EAAIxJ,EAAErI,OAAOsC,OAAQ,CAC1D,GAGJ,EAEAioB,EAAO/H,OAAShiB,OAAOwE,OAAQ27D,EAAS,CACpCt9C,gBAAiB,CAAE7f,MAAO,SAAWwvB,GAAM,OAAO2tC,EAAQt9C,gBAAgB2P,EAAG,GAC7EtQ,OAAiB,CAAElf,MAAOq9D,KAG9Bt2C,EAAO62C,UAAYA,CACvB,CAEKG,IACDZ,EAAQj+C,OAASm+C,EAEjBt2C,EAAOy2C,OAASD,EAChBx2C,EAAO22C,aAAeD,EACtB12C,EAAO62C,UAAYA,EA3jBS,CATV,CAHA,CActB,SAAS0B,EAAMhyC,GACX,OAAOxb,KAAKwb,GAAGlpB,QAAQ,OAAQ,IAAIA,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAC1E,CAEA,SAAS46D,EAAM1xC,GAEX,OADYA,GAAZA,GAAK,OAAa1sB,MAAO,GAAI0sB,EAAE3wB,OAAS,GACjC0c,KAAMiU,EAAElpB,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACpD,CAEA,SAASu6D,EAAMrxC,GAEX,IADA,IAAI2B,EAAI,IAAIvP,WAAW4N,EAAE3wB,QACfD,EAAI,EAAGA,EAAI4wB,EAAE3wB,OAAQD,IAAMuyB,EAAEvyB,GAAK4wB,EAAE7jB,WAAW/M,GACzD,OAAOuyB,CACX,CAEA,SAASswC,EAAMtwC,GAEX,OADKA,aAAa3H,cAAc2H,EAAI,IAAIvP,WAAWuP,IAC5C7hB,OAAO0c,aAAa1qB,MAAOgO,OAAQ6hB,EAC9C,CAEA,SAASrO,EAAM4O,GACX,IAAI3qB,EAAI,CAAE,MAAS2qB,EAAE9sB,MAAQ8sB,GAAK,IAAIjF,cAAcnmB,QAAQ,IAAI,MAChE,OAASS,EAAEnC,MACP,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,UACD,MACJ,IAAK,UACL,IAAK,UACL,IAAK,SACI8sB,EAAE7yB,SAASkI,EAAU,OAAI2qB,EAAE7yB,QAChC,MACJ,IAAK,OACI6yB,EAAEhmB,OAAO3E,EAAQ,KAAI+b,EAAI4O,EAAEhmB,OAC3BgmB,EAAE7yB,SAASkI,EAAU,OAAI2qB,EAAE7yB,QAChC,MACJ,IAAK,mBACI6yB,EAAE/P,iBAAiB5a,EAAkB,eAAI,IAAI6a,WAAW8P,EAAE/P,iBAC1D+P,EAAEhQ,gBAAgB3a,EAAiB,cAAI2qB,EAAEhQ,eAC9C,MACJ,IAAK,oBACL,IAAK,WACIgQ,EAAEhmB,OAAO3E,EAAQ,KAAI+b,EAAI4O,EAAEhmB,OAC3BgmB,EAAE/P,iBAAiB5a,EAAkB,eAAI,IAAI6a,WAAW8P,EAAE/P,iBAC1D+P,EAAEhQ,gBAAgB3a,EAAiB,cAAI2qB,EAAEhQ,eAC9C,MACJ,QACI,MAAM,IAAI8pC,YAAY,sBAE9B,OAAOzkD,CACX,CAEA,SAAS05D,EAAS/uC,GACd,MAAO,CACH,KAAQ,CACJ,QAAS,MACT,UAAW,QACX,UAAW,QACX,UAAW,SAEf,oBAAqB,CACjB,QAAS,MACT,UAAW,QACX,UAAW,QACX,UAAW,SAEf,mBAAoB,CAChB,GAAI,UAER,WAAY,CACR,QAAS,WACT,UAAW,gBAEf,SAAU,CACN,IAAO,SACP,IAAO,SACP,IAAO,UAEX,UAAW,CACP,IAAO,UACP,IAAO,UACP,IAAO,WAEX,UAAW,CACP,IAAO,UACP,IAAO,UACP,IAAO,YAEbA,EAAE9sB,OAAS8sB,EAAEhmB,MAAQ,CAAC,GAAI9G,MAAQ8sB,EAAE7yB,QAAU,GACpD,CAEA,SAAS2hE,EAAQjuC,IACRA,aAAa/I,aAAe+I,aAAa3Q,cAAa2Q,EAAI5pB,KAAK6U,MAAOqP,mBAAoB01C,OAAQd,EAAIlvC,OAC3G,IAAI1P,EAAM,CAAE,IAAO0P,EAAEmuC,IAAK,IAAOnuC,EAAEzP,IAAK,IAAOyP,EAAErP,KAAOqP,EAAEiwC,aAC1D,OAAS3/C,EAAI69C,KACT,IAAK,MACD79C,EAAI0P,EAAIA,EAAEA,EACd,IAAK,MACD,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,OAAQ9mB,SAAS,SAAWqV,GAAWA,KAAKyR,IAAI1P,EAAI/B,GAAKyR,EAAEzR,GAAG,IAC3G,MACJ,QACI,MAAM,IAAItiB,UAAU,wBAE5B,OAAOqkB,CACX,CAwDA,SAASu+C,EAAQv2C,EAAKwD,GAIlB,GAHKxD,aAAerB,cAAcqB,EAAM,IAAIjJ,WAAWiJ,IACjDwD,IAAMA,EAAM,CAAEguB,IAAK,EAAGxb,IAAKhW,EAAIhsB,SAEhCwvB,EAAIwS,IAAMxS,EAAIguB,IAAM,GAAKhuB,EAAIwS,IAAMhW,EAAIhsB,OAAS,MAAM,IAAIouB,WAAW,iBAE1E,IAYIw1C,EAZAt8B,EAAMtb,EAAIwD,EAAIguB,OACdhxC,EAAMwf,EAAIwD,EAAIguB,OAElB,GAAKhxC,GAAO,IAAO,CAEf,GADAA,GAAO,IACFgjB,EAAIwS,IAAMxS,EAAIguB,IAAMhxC,EAAM,MAAM,IAAI4hB,WAAW,iBACpD,IAAM,IAAIy1C,EAAO,EAAGr3D,KAASq3D,IAAS,EAAGA,GAAQ73C,EAAIwD,EAAIguB,OACzDhxC,EAAMq3D,CACV,CAEA,GAAKr0C,EAAIwS,IAAMxS,EAAIguB,IAAMhxC,EAAM,MAAM,IAAI4hB,WAAW,iBAIpD,OAASkZ,GACL,KAAK,EACDs8B,EAAK53C,EAAIwF,SAAUhC,EAAIguB,IAAKhuB,EAAIguB,KAAOhxC,GACvC,MACJ,KAAK,EACD,GAAKwf,EAAIwD,EAAIguB,OAAS,MAAM,IAAI13C,MAAO,0BACvC0G,IACJ,KAAK,EACDo3D,EAAK,IAAI7gD,WAAYiJ,EAAIwF,SAAUhC,EAAIguB,IAAKhuB,EAAIguB,KAAOhxC,IAAQ2f,OAC/D,MACJ,KAAK,EACDy3C,EAAK,KACL,MACJ,KAAK,EACD,IAAIE,EAAM3uD,KAAMytD,EAAK52C,EAAIwF,SAAUhC,EAAIguB,IAAKhuB,EAAIguB,KAAOhxC,KACvD,KAAQs3D,KAAOzC,GAAY,MAAM,IAAIv7D,MAAO,yBAA2Bg+D,GACvEF,EAAKvC,EAAQyC,GACb,MACJ,KAAK,GACDF,EAAK,GACL,IAAM,IAAI5hC,EAAMxS,EAAIguB,IAAMhxC,EAAKgjB,EAAIguB,IAAMxb,GAAO4hC,EAAGjgE,KAAM4+D,EAAOv2C,EAAKwD,IACrE,MACJ,QACI,MAAM,IAAI1pB,MAAO,yBAA2BwhC,EAAI17B,SAAS,KAGjE,OAAOg4D,CACX,CAEA,SAAST,EAAQh4D,EAAK6gB,GACZA,IAAMA,EAAM,IAElB,IAAIsb,EAAM,EAAG96B,EAAM,EACfgxC,EAAMxxB,EAAIhsB,OAAS,EAIvB,GAFAgsB,EAAIroB,KAAM,EAAG,GAERwH,aAAe4X,WAAa,CAC7BukB,EAAM,EAAM96B,EAAMrB,EAAInL,OACtB,IAAM,IAAID,EAAI,EAAGA,EAAIyM,EAAKzM,IAAMisB,EAAIroB,KAAMwH,EAAIpL,GAClD,MACK,GAAKoL,aAAewf,YAErB,IADA2c,EAAM,EAAM96B,EAAMrB,EAAI+gB,WAAY/gB,EAAM,IAAI4X,WAAW5X,GAC7CpL,EAAI,EAAGA,EAAIyM,EAAKzM,IAAMisB,EAAIroB,KAAMwH,EAAIpL,SAE7C,GAAa,OAARoL,EACNm8B,EAAM,EAAM96B,EAAM,OAEjB,GAAoB,iBAARrB,GAAoBA,KAAOm2D,EAAU,CAClD,IAAIwC,EAAM9B,EAAKtlD,KAAM4kD,EAAQn2D,KAE7B,IADAm8B,EAAM,EAAM96B,EAAMs3D,EAAI9jE,OACZD,EAAI,EAAGA,EAAIyM,EAAKzM,IAAMisB,EAAIroB,KAAMmgE,EAAI/jE,GAClD,MACK,GAAKoL,aAAeZ,MAAQ,CAC7B,IAAUxK,EAAI,EAAGA,EAAIoL,EAAInL,OAAQD,IAAMojE,EAAOh4D,EAAIpL,GAAIisB,GACtDsb,EAAM,GAAM96B,EAAMwf,EAAIhsB,OAASw9C,CACnC,KACK,MAAoB,iBAARryC,GAAgC,IAAZA,EAAIm8B,KAAgBn8B,EAAI9H,iBAAiBsnB,aAM1E,MAAM,IAAI7kB,MAAO,yBAA2BqF,GAJ/B,IADoBm8B,EAAM,EAAM96B,GAA7CrB,EAAM,IAAI4X,WAAW5X,EAAI9H,QAA8B6oB,WACvDF,EAAIroB,KAAK,GAAc5D,EAAI,EAAGA,EAAIyM,EAAKzM,IAAMisB,EAAIroB,KAAMwH,EAAIpL,IAC3DyM,GAIJ,CAEA,GAAKA,GAAO,IAAO,CACf,IAAIq3D,EAAOr3D,EAEX,IAFgBA,EAAM,EACtBwf,EAAIloB,OAAQ05C,EAAK,EAAIqmB,GAAQ,GAAM,IAAOA,GAAQ,GAAM,IAAOA,GAAQ,EAAK,IAAa,IAAPA,GAC1Er3D,EAAM,KAAOq3D,GAAQ,KAAMA,IAAS,EAAGr3D,IAC1CA,EAAM,GAAIwf,EAAIloB,OAAQ05C,EAAK,EAAIhxC,GACpCA,GAAO,GACX,CAIA,OAFAwf,EAAIloB,OAAQ05C,EAAM,EAAG,EAAGlW,EAAK96B,GAEtBwf,CACX,CAEA,SAASi1C,EAAY1gE,EAAK0jB,EAAKI,EAAK0/C,GAChC1jE,OAAO6d,iBAAkB5b,KAAM,CAC3BkI,KAAM,CACFnH,MAAO9C,GAEXgD,KAAM,CACFF,MAAO9C,EAAIgD,KACXrD,YAAY,GAEhByjE,YAAa,CACTtgE,WAAgB4B,IAARof,EAAqB9jB,EAAIojE,YAAct/C,EAC/CnkB,YAAY,GAEhB4kB,UAAW,CACPzhB,WAAgB4B,IAARgf,EAAqB1jB,EAAIukB,UAAYb,EAC7C/jB,YAAY,GAEhBgjE,OAAQ,CACJ7/D,WAAgB4B,IAAR8+D,EAAqBxjE,EAAI2iE,OAASa,EAC1C7jE,YAAY,IAGxB,CAEA,SAAS6hE,EAAcjwC,GACnB,MAAa,WAANA,GAAwB,YAANA,GAAyB,YAANA,CAChD,CAEA,SAASgwC,EAAchwC,GACnB,MAAa,SAANA,GAAsB,YAANA,GAAyB,cAANA,CAC9C,CAyRJ,EA3lB0B,mBAAX0D,QAAyBA,OAAOwuC,IAEvCxuC,OAAO,IAAI,WACP,OAAO5B,EAAQxJ,EACnB,IACyB,iBAAXljB,QAAuBA,OAAOL,QAE5CK,OAAOL,QAAU+sB,EAAQxJ,GAEzBwJ,EAAQxJ,KCdZ65C,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBl/D,IAAjBm/D,EACH,OAAOA,EAAav9D,QAGrB,IAAIK,EAAS+8D,EAAyBE,GAAY,CAGjDt9D,QAAS,CAAC,GAOX,OAHAw9D,EAAoBF,GAAUniE,KAAKkF,EAAOL,QAASK,EAAQA,EAAOL,QAASq9D,GAGpEh9D,EAAOL,OACf,CCtBAq9D,EAAoBv9D,EAAI,WACvB,GAA0B,iBAAf2b,WAAyB,OAAOA,WAC3C,IACC,OAAOhgB,MAAQ,IAAI2yB,SAAS,cAAb,EAChB,CAAE,MAAOhzB,GACR,GAAsB,iBAAXsG,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCGxB,IAAI+7D,EAAsBJ,EAAoB","sources":["webpack://FHIR/./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js","webpack://FHIR/./node_modules/debug/src/browser.js","webpack://FHIR/./node_modules/debug/src/common.js","webpack://FHIR/./src/Client.ts","webpack://FHIR/./src/HttpError.ts","webpack://FHIR/./src/adapters/BrowserAdapter.ts","webpack://FHIR/./src/entry/browser.ts","webpack://FHIR/./src/lib.ts","webpack://FHIR/./src/security/browser.ts","webpack://FHIR/./src/settings.ts","webpack://FHIR/./src/smart.ts","webpack://FHIR/./src/storage/BrowserStorage.ts","webpack://FHIR/./src/strings.ts","webpack://FHIR/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://FHIR/./node_modules/js-base64/base64.js","webpack://FHIR/./node_modules/ms/index.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/construct.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/createClass.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/inherits.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/typeof.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://FHIR/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://FHIR/./node_modules/@babel/runtime/regenerator/index.js","webpack://FHIR/./node_modules/core-js/internals/a-callable.js","webpack://FHIR/./node_modules/core-js/internals/a-constructor.js","webpack://FHIR/./node_modules/core-js/internals/a-possible-prototype.js","webpack://FHIR/./node_modules/core-js/internals/add-to-unscopables.js","webpack://FHIR/./node_modules/core-js/internals/advance-string-index.js","webpack://FHIR/./node_modules/core-js/internals/an-instance.js","webpack://FHIR/./node_modules/core-js/internals/an-object.js","webpack://FHIR/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://FHIR/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://FHIR/./node_modules/core-js/internals/array-buffer.js","webpack://FHIR/./node_modules/core-js/internals/array-copy-within.js","webpack://FHIR/./node_modules/core-js/internals/array-fill.js","webpack://FHIR/./node_modules/core-js/internals/array-for-each.js","webpack://FHIR/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://FHIR/./node_modules/core-js/internals/array-from.js","webpack://FHIR/./node_modules/core-js/internals/array-includes.js","webpack://FHIR/./node_modules/core-js/internals/array-iteration.js","webpack://FHIR/./node_modules/core-js/internals/array-last-index-of.js","webpack://FHIR/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://FHIR/./node_modules/core-js/internals/array-method-is-strict.js","webpack://FHIR/./node_modules/core-js/internals/array-reduce.js","webpack://FHIR/./node_modules/core-js/internals/array-set-length.js","webpack://FHIR/./node_modules/core-js/internals/array-slice.js","webpack://FHIR/./node_modules/core-js/internals/array-sort.js","webpack://FHIR/./node_modules/core-js/internals/array-species-constructor.js","webpack://FHIR/./node_modules/core-js/internals/array-species-create.js","webpack://FHIR/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://FHIR/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://FHIR/./node_modules/core-js/internals/classof-raw.js","webpack://FHIR/./node_modules/core-js/internals/classof.js","webpack://FHIR/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://FHIR/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://FHIR/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://FHIR/./node_modules/core-js/internals/create-html.js","webpack://FHIR/./node_modules/core-js/internals/create-iter-result-object.js","webpack://FHIR/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://FHIR/./node_modules/core-js/internals/create-property-descriptor.js","webpack://FHIR/./node_modules/core-js/internals/create-property.js","webpack://FHIR/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://FHIR/./node_modules/core-js/internals/define-built-in.js","webpack://FHIR/./node_modules/core-js/internals/define-built-ins.js","webpack://FHIR/./node_modules/core-js/internals/define-global-property.js","webpack://FHIR/./node_modules/core-js/internals/delete-property-or-throw.js","webpack://FHIR/./node_modules/core-js/internals/descriptors.js","webpack://FHIR/./node_modules/core-js/internals/document-create-element.js","webpack://FHIR/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://FHIR/./node_modules/core-js/internals/dom-iterables.js","webpack://FHIR/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://FHIR/./node_modules/core-js/internals/enum-bug-keys.js","webpack://FHIR/./node_modules/core-js/internals/environment-ff-version.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-ie-or-edge.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-ios-pebble.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-ios.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-node.js","webpack://FHIR/./node_modules/core-js/internals/environment-is-webos-webkit.js","webpack://FHIR/./node_modules/core-js/internals/environment-user-agent.js","webpack://FHIR/./node_modules/core-js/internals/environment-v8-version.js","webpack://FHIR/./node_modules/core-js/internals/environment-webkit-version.js","webpack://FHIR/./node_modules/core-js/internals/environment.js","webpack://FHIR/./node_modules/core-js/internals/export.js","webpack://FHIR/./node_modules/core-js/internals/fails.js","webpack://FHIR/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://FHIR/./node_modules/core-js/internals/flatten-into-array.js","webpack://FHIR/./node_modules/core-js/internals/function-apply.js","webpack://FHIR/./node_modules/core-js/internals/function-bind-context.js","webpack://FHIR/./node_modules/core-js/internals/function-bind-native.js","webpack://FHIR/./node_modules/core-js/internals/function-bind.js","webpack://FHIR/./node_modules/core-js/internals/function-call.js","webpack://FHIR/./node_modules/core-js/internals/function-name.js","webpack://FHIR/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://FHIR/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://FHIR/./node_modules/core-js/internals/function-uncurry-this.js","webpack://FHIR/./node_modules/core-js/internals/get-built-in.js","webpack://FHIR/./node_modules/core-js/internals/get-iterator-method.js","webpack://FHIR/./node_modules/core-js/internals/get-iterator.js","webpack://FHIR/./node_modules/core-js/internals/get-json-replacer-function.js","webpack://FHIR/./node_modules/core-js/internals/get-method.js","webpack://FHIR/./node_modules/core-js/internals/get-substitution.js","webpack://FHIR/./node_modules/core-js/internals/global-this.js","webpack://FHIR/./node_modules/core-js/internals/has-own-property.js","webpack://FHIR/./node_modules/core-js/internals/hidden-keys.js","webpack://FHIR/./node_modules/core-js/internals/host-report-errors.js","webpack://FHIR/./node_modules/core-js/internals/html.js","webpack://FHIR/./node_modules/core-js/internals/ie8-dom-define.js","webpack://FHIR/./node_modules/core-js/internals/ieee754.js","webpack://FHIR/./node_modules/core-js/internals/indexed-object.js","webpack://FHIR/./node_modules/core-js/internals/inherit-if-required.js","webpack://FHIR/./node_modules/core-js/internals/inspect-source.js","webpack://FHIR/./node_modules/core-js/internals/internal-state.js","webpack://FHIR/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://FHIR/./node_modules/core-js/internals/is-array.js","webpack://FHIR/./node_modules/core-js/internals/is-big-int-array.js","webpack://FHIR/./node_modules/core-js/internals/is-callable.js","webpack://FHIR/./node_modules/core-js/internals/is-constructor.js","webpack://FHIR/./node_modules/core-js/internals/is-forced.js","webpack://FHIR/./node_modules/core-js/internals/is-integral-number.js","webpack://FHIR/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://FHIR/./node_modules/core-js/internals/is-object.js","webpack://FHIR/./node_modules/core-js/internals/is-possible-prototype.js","webpack://FHIR/./node_modules/core-js/internals/is-pure.js","webpack://FHIR/./node_modules/core-js/internals/is-regexp.js","webpack://FHIR/./node_modules/core-js/internals/is-symbol.js","webpack://FHIR/./node_modules/core-js/internals/iterate.js","webpack://FHIR/./node_modules/core-js/internals/iterator-close.js","webpack://FHIR/./node_modules/core-js/internals/iterator-create-constructor.js","webpack://FHIR/./node_modules/core-js/internals/iterator-define.js","webpack://FHIR/./node_modules/core-js/internals/iterators-core.js","webpack://FHIR/./node_modules/core-js/internals/iterators.js","webpack://FHIR/./node_modules/core-js/internals/length-of-array-like.js","webpack://FHIR/./node_modules/core-js/internals/make-built-in.js","webpack://FHIR/./node_modules/core-js/internals/math-float-round.js","webpack://FHIR/./node_modules/core-js/internals/math-fround.js","webpack://FHIR/./node_modules/core-js/internals/math-sign.js","webpack://FHIR/./node_modules/core-js/internals/math-trunc.js","webpack://FHIR/./node_modules/core-js/internals/microtask.js","webpack://FHIR/./node_modules/core-js/internals/new-promise-capability.js","webpack://FHIR/./node_modules/core-js/internals/not-a-regexp.js","webpack://FHIR/./node_modules/core-js/internals/object-assign.js","webpack://FHIR/./node_modules/core-js/internals/object-create.js","webpack://FHIR/./node_modules/core-js/internals/object-define-properties.js","webpack://FHIR/./node_modules/core-js/internals/object-define-property.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://FHIR/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://FHIR/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://FHIR/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://FHIR/./node_modules/core-js/internals/object-keys-internal.js","webpack://FHIR/./node_modules/core-js/internals/object-keys.js","webpack://FHIR/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://FHIR/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://FHIR/./node_modules/core-js/internals/object-to-string.js","webpack://FHIR/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://FHIR/./node_modules/core-js/internals/own-keys.js","webpack://FHIR/./node_modules/core-js/internals/path.js","webpack://FHIR/./node_modules/core-js/internals/perform.js","webpack://FHIR/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://FHIR/./node_modules/core-js/internals/promise-native-constructor.js","webpack://FHIR/./node_modules/core-js/internals/promise-resolve.js","webpack://FHIR/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://FHIR/./node_modules/core-js/internals/proxy-accessor.js","webpack://FHIR/./node_modules/core-js/internals/queue.js","webpack://FHIR/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://FHIR/./node_modules/core-js/internals/regexp-exec.js","webpack://FHIR/./node_modules/core-js/internals/regexp-flags.js","webpack://FHIR/./node_modules/core-js/internals/regexp-get-flags.js","webpack://FHIR/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://FHIR/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://FHIR/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://FHIR/./node_modules/core-js/internals/require-object-coercible.js","webpack://FHIR/./node_modules/core-js/internals/safe-get-built-in.js","webpack://FHIR/./node_modules/core-js/internals/same-value.js","webpack://FHIR/./node_modules/core-js/internals/set-species.js","webpack://FHIR/./node_modules/core-js/internals/set-to-string-tag.js","webpack://FHIR/./node_modules/core-js/internals/shared-key.js","webpack://FHIR/./node_modules/core-js/internals/shared-store.js","webpack://FHIR/./node_modules/core-js/internals/shared.js","webpack://FHIR/./node_modules/core-js/internals/species-constructor.js","webpack://FHIR/./node_modules/core-js/internals/string-html-forced.js","webpack://FHIR/./node_modules/core-js/internals/string-multibyte.js","webpack://FHIR/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://FHIR/./node_modules/core-js/internals/string-trim-forced.js","webpack://FHIR/./node_modules/core-js/internals/string-trim.js","webpack://FHIR/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://FHIR/./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack://FHIR/./node_modules/core-js/internals/symbol-registry-detection.js","webpack://FHIR/./node_modules/core-js/internals/task.js","webpack://FHIR/./node_modules/core-js/internals/this-number-value.js","webpack://FHIR/./node_modules/core-js/internals/to-absolute-index.js","webpack://FHIR/./node_modules/core-js/internals/to-big-int.js","webpack://FHIR/./node_modules/core-js/internals/to-index.js","webpack://FHIR/./node_modules/core-js/internals/to-indexed-object.js","webpack://FHIR/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://FHIR/./node_modules/core-js/internals/to-length.js","webpack://FHIR/./node_modules/core-js/internals/to-object.js","webpack://FHIR/./node_modules/core-js/internals/to-offset.js","webpack://FHIR/./node_modules/core-js/internals/to-positive-integer.js","webpack://FHIR/./node_modules/core-js/internals/to-primitive.js","webpack://FHIR/./node_modules/core-js/internals/to-property-key.js","webpack://FHIR/./node_modules/core-js/internals/to-string-tag-support.js","webpack://FHIR/./node_modules/core-js/internals/to-string.js","webpack://FHIR/./node_modules/core-js/internals/to-uint8-clamped.js","webpack://FHIR/./node_modules/core-js/internals/try-to-string.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-constructor.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-from.js","webpack://FHIR/./node_modules/core-js/internals/typed-array-species-constructor.js","webpack://FHIR/./node_modules/core-js/internals/uid.js","webpack://FHIR/./node_modules/core-js/internals/url-constructor-detection.js","webpack://FHIR/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://FHIR/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://FHIR/./node_modules/core-js/internals/validate-arguments-length.js","webpack://FHIR/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://FHIR/./node_modules/core-js/internals/well-known-symbol-define.js","webpack://FHIR/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://FHIR/./node_modules/core-js/internals/well-known-symbol.js","webpack://FHIR/./node_modules/core-js/internals/whitespaces.js","webpack://FHIR/./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.array.concat.js","webpack://FHIR/./node_modules/core-js/modules/es.array.filter.js","webpack://FHIR/./node_modules/core-js/modules/es.array.find.js","webpack://FHIR/./node_modules/core-js/modules/es.array.flat.js","webpack://FHIR/./node_modules/core-js/modules/es.array.includes.js","webpack://FHIR/./node_modules/core-js/modules/es.array.iterator.js","webpack://FHIR/./node_modules/core-js/modules/es.array.join.js","webpack://FHIR/./node_modules/core-js/modules/es.array.map.js","webpack://FHIR/./node_modules/core-js/modules/es.array.slice.js","webpack://FHIR/./node_modules/core-js/modules/es.array.sort.js","webpack://FHIR/./node_modules/core-js/modules/es.array.splice.js","webpack://FHIR/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://FHIR/./node_modules/core-js/modules/es.function.name.js","webpack://FHIR/./node_modules/core-js/modules/es.global-this.js","webpack://FHIR/./node_modules/core-js/modules/es.json.stringify.js","webpack://FHIR/./node_modules/core-js/modules/es.number.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.object.assign.js","webpack://FHIR/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://FHIR/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://FHIR/./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack://FHIR/./node_modules/core-js/modules/es.object.keys.js","webpack://FHIR/./node_modules/core-js/modules/es.object.to-string.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.all.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.catch.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.finally.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.race.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.reject.js","webpack://FHIR/./node_modules/core-js/modules/es.promise.resolve.js","webpack://FHIR/./node_modules/core-js/modules/es.reflect.construct.js","webpack://FHIR/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.regexp.exec.js","webpack://FHIR/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://FHIR/./node_modules/core-js/modules/es.string.from-code-point.js","webpack://FHIR/./node_modules/core-js/modules/es.string.includes.js","webpack://FHIR/./node_modules/core-js/modules/es.string.iterator.js","webpack://FHIR/./node_modules/core-js/modules/es.string.link.js","webpack://FHIR/./node_modules/core-js/modules/es.string.match.js","webpack://FHIR/./node_modules/core-js/modules/es.string.replace.js","webpack://FHIR/./node_modules/core-js/modules/es.string.search.js","webpack://FHIR/./node_modules/core-js/modules/es.string.split.js","webpack://FHIR/./node_modules/core-js/modules/es.string.trim.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.constructor.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.for.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.js","webpack://FHIR/./node_modules/core-js/modules/es.symbol.key-for.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.every.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.fill.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.filter.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.find-index.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.find.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.for-each.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.includes.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.index-of.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.iterator.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.join.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.map.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.reduce.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.reverse.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.set.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.slice.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.some.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.sort.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.subarray.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.to-string.js","webpack://FHIR/./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack://FHIR/./node_modules/core-js/modules/esnext.global-this.js","webpack://FHIR/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://FHIR/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://FHIR/./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack://FHIR/./node_modules/core-js/modules/web.url-search-params.js","webpack://FHIR/./node_modules/core-js/modules/web.url.constructor.js","webpack://FHIR/./node_modules/core-js/modules/web.url.js","webpack://FHIR/./node_modules/core-js/modules/web.url.to-json.js","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/browser.mjs","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs","webpack://FHIR/webpack/bootstrap","webpack://FHIR/webpack/runtime/global","webpack://FHIR/webpack/startup"],"sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n})((function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n Object.defineProperty(this, 'listeners', {\n value: {},\n writable: true,\n configurable: true\n });\n }\n\n _createClass(Emitter, [{\n key: \"addEventListener\",\n value: function addEventListener(type, callback, options) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push({\n callback: callback,\n options: options\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i].callback === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[event.type];\n var stackToCall = stack.slice();\n\n for (var i = 0, l = stackToCall.length; i < l; i++) {\n var listener = stackToCall[i];\n\n try {\n listener.callback.call(this, event);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n\n if (listener.options && listener.options.once) {\n this.removeEventListener(event.type, listener.callback);\n }\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return Emitter;\n }();\n\n var AbortSignal = /*#__PURE__*/function (_Emitter) {\n _inherits(AbortSignal, _Emitter);\n\n var _super = _createSuper(AbortSignal);\n\n function AbortSignal() {\n var _this;\n\n _classCallCheck(this, AbortSignal);\n\n _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n // the parent constructor directly instead as a workaround. For general details, see babel bug:\n // https://github.com/babel/babel/issues/3041\n // This hack was added as a fix for the issue described here:\n // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n\n if (!_this.listeners) {\n Emitter.call(_assertThisInitialized(_this));\n } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'aborted', {\n value: false,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'onabort', {\n value: null,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'reason', {\n value: undefined,\n writable: true,\n configurable: true\n });\n return _this;\n }\n\n _createClass(AbortSignal, [{\n key: \"toString\",\n value: function toString() {\n return '[object AbortSignal]';\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (event.type === 'abort') {\n this.aborted = true;\n\n if (typeof this.onabort === 'function') {\n this.onabort.call(this, event);\n }\n }\n\n _get(_getPrototypeOf(AbortSignal.prototype), \"dispatchEvent\", this).call(this, event);\n }\n }]);\n\n return AbortSignal;\n }(Emitter);\n var AbortController = /*#__PURE__*/function () {\n function AbortController() {\n _classCallCheck(this, AbortController);\n\n // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n Object.defineProperty(this, 'signal', {\n value: new AbortSignal(),\n writable: true,\n configurable: true\n });\n }\n\n _createClass(AbortController, [{\n key: \"abort\",\n value: function abort(reason) {\n var event;\n\n try {\n event = new Event('abort');\n } catch (e) {\n if (typeof document !== 'undefined') {\n if (!document.createEvent) {\n // For Internet Explorer 8:\n event = document.createEventObject();\n event.type = 'abort';\n } else {\n // For Internet Explorer 11:\n event = document.createEvent('Event');\n event.initEvent('abort', false, false);\n }\n } else {\n // Fallback where document isn't available:\n event = {\n type: 'abort',\n bubbles: false,\n cancelable: false\n };\n }\n }\n\n var signalReason = reason;\n\n if (signalReason === undefined) {\n if (typeof document === 'undefined') {\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n } else {\n try {\n signalReason = new DOMException('signal is aborted without reason');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n }\n }\n }\n\n this.signal.reason = signalReason;\n this.signal.dispatchEvent(event);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object AbortController]';\n }\n }]);\n\n return AbortController;\n }();\n\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n // These are necessary to make sure that we get correct output for:\n // Object.prototype.toString.call(new AbortController())\n AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n }\n\n function polyfillNeeded(self) {\n if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n return true;\n } // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // so the below feature detection needs the !self.AbortController part.\n // The Request.prototype check is also needed because Safari versions 11.1.2\n // up to and including 12.1.x has a window.AbortController present but still\n // does NOT correctly implement abortable fetch:\n // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n\n\n return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n }\n\n (function (self) {\n\n if (!polyfillNeeded(self)) {\n return;\n }\n\n self.AbortController = AbortController;\n self.AbortSignal = AbortSignal;\n })(typeof self !== 'undefined' ? self : global);\n\n}));\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","import {\n absolute,\n debug as _debug,\n getPath,\n setPath,\n jwtDecode,\n makeArray,\n request,\n byCode,\n byCodes,\n units,\n getPatientParam,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n assertJsonPatch,\n assert\n} from \"./lib\";\n\nimport str from \"./strings\";\nimport { SMART_KEY, patientCompartment, fhirVersions } from \"./settings\";\nimport HttpError from \"./HttpError\";\nimport BrowserAdapter from \"./adapters/BrowserAdapter\";\nimport { fhirclient } from \"./types\";\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { Response } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst debug = _debug.extend(\"client\");\n\n/**\n * Adds patient context to requestOptions object to be used with [[Client.request]]\n * @param requestOptions Can be a string URL (relative to the serviceUrl), or an\n * object which will be passed to fetch()\n * @param client Current FHIR client object containing patient context\n * @return requestOptions object contextualized to current patient\n */\nasync function contextualize(\n requestOptions: string | URL | fhirclient.RequestOptions,\n client: Client\n): Promise\n{\n const base = absolute(\"/\", client.state.serverUrl);\n\n async function contextualURL(_url: URL) {\n const resourceType = _url.pathname.split(\"/\").pop();\n assert(resourceType, `Invalid url \"${_url}\"`);\n assert(patientCompartment.indexOf(resourceType) > -1, `Cannot filter \"${resourceType}\" resources by patient`);\n const conformance = await fetchConformanceStatement(client.state.serverUrl);\n const searchParam = getPatientParam(conformance, resourceType);\n _url.searchParams.set(searchParam, client.patient.id as string);\n return _url.href;\n }\n\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n return { url: await contextualURL(new URL(requestOptions + \"\", base)) };\n }\n\n requestOptions.url = await contextualURL(new URL(requestOptions.url + \"\", base));\n return requestOptions;\n}\n\n/**\n * Gets single reference by id. Caches the result.\n * @param refId\n * @param cache A map to store the resolved refs\n * @param client The client instance\n * @param requestOptions Only signal and headers are currently used if provided\n * @returns The resolved reference\n * @private\n */\nfunction getRef(\n refId: string,\n cache: Record,\n client: Client,\n requestOptions: RequestInit\n): Promise {\n if (!cache[refId]) {\n\n const { signal, headers } = requestOptions;\n\n // Note that we set cache[refId] immediately! When the promise is\n // settled it will be updated. This is to avoid a ref being fetched\n // twice because some of these requests are executed in parallel.\n cache[refId] = client.request({\n url: refId,\n headers,\n signal\n }).then(res => {\n cache[refId] = res;\n return res;\n }, (error: Error) => {\n delete cache[refId];\n throw error;\n });\n }\n\n return Promise.resolve(cache[refId]);\n}\n\n/**\n * Resolves a reference in the given resource.\n * @param obj FHIR Resource\n */\nfunction resolveRef(\n obj: fhirclient.FHIR.Resource,\n path: string,\n graph: boolean,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n const node = getPath(obj, path);\n if (node) {\n const isArray = Array.isArray(node);\n return Promise.all(makeArray(node).filter(Boolean).map((item, i) => {\n const ref = item.reference;\n if (ref) {\n return getRef(ref, cache, client, requestOptions).then(sub => {\n if (graph) {\n if (isArray) {\n if (path.indexOf(\"..\") > -1) {\n setPath(obj, `${path.replace(\"..\", `.${i}.`)}`, sub); \n } else {\n setPath(obj, `${path}.${i}`, sub);\n }\n } else {\n setPath(obj, path, sub);\n }\n }\n }).catch((ex) => {\n /* ignore missing references */\n if (ex.status !== 404) {\n throw ex;\n }\n });\n }\n }));\n }\n}\n\n/**\n * Given a resource and a list of ref paths - resolves them all\n * @param obj FHIR Resource\n * @param fhirOptions The fhir options of the initiating request call\n * @param cache A map to store fetched refs\n * @param client The client instance\n * @private\n */\nfunction resolveRefs(\n obj: fhirclient.FHIR.Resource,\n fhirOptions: fhirclient.FhirOptions,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n\n // 1. Sanitize paths, remove any invalid ones\n let paths = makeArray(fhirOptions.resolveReferences)\n .filter(Boolean) // No false, 0, null, undefined or \"\"\n .map(path => String(path).trim())\n .filter(Boolean); // No space-only strings\n\n // 2. Remove duplicates\n paths = paths.filter((p, i) => {\n const index = paths.indexOf(p, i + 1);\n if (index > -1) {\n debug(\"Duplicated reference path \\\"%s\\\"\", p);\n return false;\n }\n return true;\n });\n\n // 3. Early exit if no valid paths are found\n if (!paths.length) {\n return Promise.resolve();\n }\n\n // 4. Group the paths by depth so that child refs are looked up\n // after their parents!\n const groups: Record = {};\n paths.forEach(path => {\n const len = path.split(\".\").length;\n if (!groups[len]) {\n groups[len] = [];\n }\n groups[len].push(path);\n });\n\n // 5. Execute groups sequentially! Paths within same group are\n // fetched in parallel!\n let task: Promise = Promise.resolve();\n Object.keys(groups).sort().forEach(len => {\n const group = groups[len];\n task = task.then(() => Promise.all(group.map((path: string) => {\n return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions);\n })));\n });\n return task;\n}\n\n/**\n * This is a FHIR client that is returned to you from the `ready()` call of the\n * **SMART API**. You can also create it yourself if needed:\n *\n * ```js\n * // BROWSER\n * const client = FHIR.client(\"https://r4.smarthealthit.org\");\n *\n * // SERVER\n * const client = smart(req, res).client(\"https://r4.smarthealthit.org\");\n * ```\n */\nexport default class Client\n{\n /**\n * The state of the client instance is an object with various properties.\n * It contains some details about how the client has been authorized and\n * determines the behavior of the client instance. This state is persisted\n * in `SessionStorage` in browsers or in request session on the servers.\n */\n readonly state: fhirclient.ClientState;\n\n /**\n * The adapter to use to connect to the current environment. Currently we have:\n * - BrowserAdapter - for browsers\n * - NodeAdapter - for Express or vanilla NodeJS servers\n * - HapiAdapter - for HAPI NodeJS servers\n */\n readonly environment: fhirclient.Adapter;\n\n /**\n * A SMART app is typically associated with a patient. This is a namespace\n * for the patient-related functionality of the client.\n */\n readonly patient: {\n\n /**\n * The ID of the current patient or `null` if there is no current patient\n */\n id: string | null\n\n /**\n * A method to fetch the current patient resource from the FHIR server.\n * If there is no patient context, it will reject with an error.\n * @param {fhirclient.FetchOptions} [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n \n /**\n * This is similar to [[request]] but it makes requests in the\n * context of the current patient. For example, instead of doing\n * ```js\n * client.request(\"Observation?patient=\" + client.patient.id)\n * ```\n * you can do\n * ```js\n * client.patient.request(\"Observation\")\n * ```\n * The return type depends on the arguments. Typically it will be the\n * response payload JSON object. Can also be a string or the `Response`\n * object itself if we have received a non-json result, which allows us\n * to handle even binary responses. Can also be a [[CombinedFetchResult]]\n * object if the `requestOptions.includeResponse`s has been set to true.\n * @category Request\n */\n request: (\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions?: fhirclient.FhirOptions\n ) => Promise\n\n /**\n * This is the FhirJS Patient API. It will ONLY exist if the `Client`\n * instance is \"connected\" to FhirJS.\n */\n api?: Record\n };\n\n /**\n * The client may be associated with a specific encounter, if the scopes\n * permit that and if the back-end server supports that. This is a namespace\n * for encounter-related functionality.\n */\n readonly encounter: {\n\n /**\n * The ID of the current encounter or `null` if there is no current\n * encounter\n */\n id: string | null\n\n /**\n * A method to fetch the current encounter resource from the FHIR server.\n * If there is no encounter context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n };\n\n /**\n * The client may be associated with a specific user, if the scopes\n * permit that. This is a namespace for user-related functionality.\n */\n readonly user: {\n\n /**\n * The ID of the current user or `null` if there is no current user\n */\n id: string | null\n\n /**\n * A method to fetch the current user resource from the FHIR server.\n * If there is no user context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction<\n fhirclient.FHIR.Patient |\n fhirclient.FHIR.Practitioner |\n fhirclient.FHIR.RelatedPerson\n >\n\n /**\n * Returns the profile of the logged_in user (if any), or null if the\n * user is not available. This is a string having the shape\n * `{user type}/{user id}`. For example `Practitioner/abc` or\n * `Patient/xyz`.\n * @alias client.getFhirUser()\n */\n fhirUser: string | null\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * `Practitioner`, `Patient` or `RelatedPerson`.\n * @alias client.getUserType()\n */\n resourceType: string | null\n };\n\n /**\n * The [FhirJS](https://github.com/FHIR/fhir.js/blob/master/README.md) API.\n * **NOTE:** This will only be available if `fhir.js` is used. Otherwise it\n * will be `undefined`.\n */\n api: Record | undefined;\n\n /**\n * Refers to the refresh task while it is being performed.\n * @see [[refresh]]\n */\n private _refreshTask: Promise | null;\n\n /**\n * Validates the parameters, creates an instance and tries to connect it to\n * FhirJS, if one is available globally.\n */\n constructor(environment: fhirclient.Adapter, state: fhirclient.ClientState | string)\n {\n const _state = typeof state == \"string\" ? { serverUrl: state } : state;\n\n // Valid serverUrl is required!\n assert(\n _state.serverUrl && _state.serverUrl.match(/https?:\\/\\/.+/),\n \"A \\\"serverUrl\\\" option is required and must begin with \\\"http(s)\\\"\"\n );\n\n this.state = _state;\n this.environment = environment;\n this._refreshTask = null;\n\n const client = this;\n\n // patient api ---------------------------------------------------------\n this.patient = {\n get id() { return client.getPatientId(); },\n read: (requestOptions) => {\n const id = this.patient.id;\n return id ?\n this.request({ ...requestOptions, url: `Patient/${id}` }) :\n Promise.reject(new Error(\"Patient is not available\"));\n },\n request: (requestOptions, fhirOptions = {}) => {\n if (this.patient.id) {\n return (async () => {\n const options = await contextualize(requestOptions, this);\n return this.request(options, fhirOptions);\n })();\n } else {\n return Promise.reject(new Error(\"Patient is not available\"));\n }\n }\n };\n\n // encounter api -------------------------------------------------------\n this.encounter = {\n get id() { return client.getEncounterId(); },\n read: requestOptions => {\n const id = this.encounter.id;\n return id ?\n this.request({ ...requestOptions, url: `Encounter/${id}` }) :\n Promise.reject(new Error(\"Encounter is not available\"));\n }\n };\n\n // user api ------------------------------------------------------------\n this.user = {\n get fhirUser() { return client.getFhirUser(); },\n get id() { return client.getUserId(); },\n get resourceType() { return client.getUserType(); },\n read: requestOptions => {\n const fhirUser = this.user.fhirUser;\n return fhirUser ?\n this.request({ ...requestOptions, url: fhirUser }) :\n Promise.reject(new Error(\"User is not available\"));\n }\n };\n\n // fhir.js api (attached automatically in browser)\n // ---------------------------------------------------------------------\n this.connect((environment as BrowserAdapter).fhir);\n }\n\n /**\n * This method is used to make the \"link\" between the `fhirclient` and the\n * `fhir.js`, if one is available.\n * **Note:** This is called by the constructor. If fhir.js is available in\n * the global scope as `fhir`, it will automatically be linked to any [[Client]]\n * instance. You should only use this method to connect to `fhir.js` which\n * is not global.\n */\n connect(fhirJs?: (options: Record) => Record): Client\n {\n if (typeof fhirJs == \"function\") {\n const options: Record = {\n baseUrl: this.state.serverUrl.replace(/\\/$/, \"\")\n };\n\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n options.auth = { token: accessToken };\n }\n else {\n const { username, password } = this.state;\n if (username && password) {\n options.auth = {\n user: username,\n pass: password\n };\n }\n }\n this.api = fhirJs(options);\n\n const patientId = this.getState(\"tokenResponse.patient\");\n if (patientId) {\n this.patient.api = fhirJs({\n ...options,\n patient: patientId\n });\n }\n }\n return this;\n }\n\n /**\n * Returns the ID of the selected patient or null. You should have requested\n * \"launch/patient\" scope. Otherwise this will return null.\n */\n getPatientId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the patient. This should be a scope issue.\n if (!tokenResponse.patient) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/patient)?\\b/)) {\n debug(str.noScopeForId, \"patient\", \"patient\");\n }\n else {\n // The server should have returned the patient!\n debug(\"The ID of the selected patient is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return tokenResponse.patient;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected patient\");\n }\n else {\n debug(str.noFreeContext, \"selected patient\");\n }\n return null;\n }\n\n /**\n * Returns the ID of the selected encounter or null. You should have\n * requested \"launch/encounter\" scope. Otherwise this will return null.\n * Note that not all servers support the \"launch/encounter\" scope so this\n * will be null if they don't.\n */\n getEncounterId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the encounter. This should be a scope issue.\n if (!tokenResponse.encounter) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/encounter)?\\b/)) {\n debug(str.noScopeForId, \"encounter\", \"encounter\");\n }\n else {\n // The server should have returned the encounter!\n debug(\"The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters.\");\n }\n return null;\n }\n return tokenResponse.encounter;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected encounter\");\n }\n else {\n debug(str.noFreeContext, \"selected encounter\");\n }\n return null;\n }\n\n /**\n * Returns the (decoded) id_token if any. You need to request \"openid\" and\n * \"profile\" scopes if you need to receive an id_token (if you need to know\n * who the logged-in user is).\n */\n getIdToken(): fhirclient.IDToken | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n const idToken = tokenResponse.id_token;\n const scope = this.state.scope || \"\";\n\n // We have been authorized against this server but we don't have\n // the id_token. This should be a scope issue.\n if (!idToken) {\n const hasOpenid = scope.match(/\\bopenid\\b/);\n const hasProfile = scope.match(/\\bprofile\\b/);\n const hasFhirUser = scope.match(/\\bfhirUser\\b/);\n if (!hasOpenid || !(hasFhirUser || hasProfile)) {\n debug(\n \"You are trying to get the id_token but you are not \" +\n \"using the right scopes. Please add 'openid' and \" +\n \"'fhirUser' or 'profile' to the scopes you are \" +\n \"requesting.\"\n );\n }\n else {\n // The server should have returned the id_token!\n debug(\"The id_token is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return jwtDecode(idToken, this.environment) as fhirclient.IDToken;\n }\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the id_token\");\n }\n else {\n debug(str.noFreeContext, \"id_token\");\n }\n return null;\n }\n\n /**\n * Returns the profile of the logged_in user (if any). This is a string\n * having the following shape `\"{user type}/{user id}\"`. For example:\n * `\"Practitioner/abc\"` or `\"Patient/xyz\"`.\n */\n getFhirUser(): string | null\n {\n const idToken = this.getIdToken();\n if (idToken) {\n // Epic may return a full url\n // @see https://github.com/smart-on-fhir/client-js/issues/105\n if (idToken.fhirUser) {\n return idToken.fhirUser.split(\"/\").slice(-2).join(\"/\");\n }\n return idToken.profile\n }\n return null;\n }\n\n /**\n * Returns the user ID or null.\n */\n getUserId(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[1];\n }\n return null;\n }\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * \"Practitioner\", \"Patient\" or \"RelatedPerson\".\n */\n getUserType(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[0];\n }\n return null;\n }\n\n /**\n * Builds and returns the value of the `Authorization` header that can be\n * sent to the FHIR server\n */\n getAuthorizationHeader(): string | null\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n return \"Bearer \" + accessToken;\n }\n const { username, password } = this.state;\n if (username && password) {\n return \"Basic \" + this.environment.btoa(username + \":\" + password);\n }\n return null;\n }\n\n /**\n * Used internally to clear the state of the instance and the state in the\n * associated storage.\n */\n private async _clearState() {\n const storage = this.environment.getStorage();\n const key = await storage.get(SMART_KEY);\n if (key) {\n await storage.unset(key);\n }\n await storage.unset(SMART_KEY);\n this.state.tokenResponse = {};\n }\n\n /**\n * Creates a new resource in a server-assigned location\n * @see http://hl7.org/fhir/http.html#create\n * @param resource A FHIR resource to be created\n * @param [requestOptions] Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n create(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}`,\n method: \"POST\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Creates a new current version for an existing resource or creates an\n * initial version if no resource already exists for the given id.\n * @see http://hl7.org/fhir/http.html#update\n * @param resource A FHIR resource to be updated\n * @param requestOptions Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n update(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}/${resource.id}`,\n method: \"PUT\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Removes an existing resource.\n * @see http://hl7.org/fhir/http.html#delete\n * @param url Relative URI of the FHIR resource to be deleted\n * (format: `resourceType/id`)\n * @param requestOptions Any options (except `method` which will be fixed\n * to `DELETE`) to be passed to the fetch call.\n * @category Request\n */\n delete(url: string, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n return this.request({\n ...requestOptions,\n url,\n method: \"DELETE\"\n });\n }\n\n /**\n * Makes a JSON Patch to the given resource\n * @see http://hl7.org/fhir/http.html#patch\n * @param url Relative URI of the FHIR resource to be patched\n * (format: `resourceType/id`)\n * @param patch A JSON Patch array to send to the server, For details\n * see https://datatracker.ietf.org/doc/html/rfc6902\n * @param requestOptions Any options to be passed to the fetch call,\n * except for `method`, `url` and `body` which cannot be overridden.\n * @since 2.4.0\n * @category Request\n * @typeParam ResolveType This method would typically resolve with the\n * patched resource or reject with an OperationOutcome. However, this may\n * depend on the server implementation or even on the request headers.\n * For that reason, if the default resolve type (which is\n * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass\n * in your own resolve type parameter.\n */\n async patch(url: string, patch: fhirclient.JsonPatch, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n assertJsonPatch(patch);\n return this.request({\n ...requestOptions,\n url,\n method: \"PATCH\",\n body: JSON.stringify(patch),\n headers: {\n \"prefer\": \"return=presentation\",\n \"content-type\": \"application/json-patch+json; charset=UTF-8\",\n ...requestOptions.headers,\n }\n });\n }\n\n /**\n * @param requestOptions Can be a string URL (relative to the serviceUrl),\n * or an object which will be passed to fetch()\n * @param fhirOptions Additional options to control the behavior\n * @param _resolvedRefs DO NOT USE! Used internally.\n * @category Request\n */\n async request(\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions: fhirclient.FhirOptions = {},\n _resolvedRefs: fhirclient.JsonObject = {}\n ): Promise\n {\n const debugRequest = _debug.extend(\"client:request\");\n assert(requestOptions, \"request requires an url or request options as argument\");\n\n // url -----------------------------------------------------------------\n let url: string;\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n url = String(requestOptions);\n requestOptions = {} as fhirclient.RequestOptions;\n }\n else {\n url = String(requestOptions.url);\n }\n\n url = absolute(url, this.state.serverUrl);\n\n const options = {\n graph: fhirOptions.graph !== false,\n flat : !!fhirOptions.flat,\n pageLimit: fhirOptions.pageLimit ?? 1,\n resolveReferences: (fhirOptions.resolveReferences || []) as string[],\n useRefreshToken: fhirOptions.useRefreshToken !== false,\n onPage: typeof fhirOptions.onPage == \"function\" ?\n fhirOptions.onPage as (\n data: fhirclient.JsonObject | fhirclient.JsonObject[],\n references?: fhirclient.JsonObject | undefined) => any :\n undefined\n };\n\n const signal = (requestOptions as RequestInit).signal || undefined;\n\n // Refresh the access token if needed\n const job = options.useRefreshToken ?\n this.refreshIfNeeded({ signal }).then(() => requestOptions as fhirclient.RequestOptions) :\n Promise.resolve(requestOptions as fhirclient.RequestOptions);\n\n let response: Response | undefined;\n\n return job\n\n // Add the Authorization header now, after the access token might\n // have been updated\n .then(requestOptions => {\n const authHeader = this.getAuthorizationHeader();\n if (authHeader) {\n requestOptions.headers = {\n ...requestOptions.headers,\n authorization: authHeader\n };\n }\n return requestOptions;\n })\n \n // Make the request\n .then(requestOptions => {\n debugRequest(\n \"%s, options: %O, fhirOptions: %O\",\n url,\n requestOptions,\n options\n );\n return request(url, requestOptions).then(result => {\n if (requestOptions.includeResponse) {\n response = (result as fhirclient.CombinedFetchResult).response;\n return (result as fhirclient.CombinedFetchResult).body;\n }\n return result;\n });\n })\n\n // Handle 401 ------------------------------------------------------\n .catch(async (error: HttpError) => {\n if (error.status == 401) {\n\n // !accessToken -> not authorized -> No session. Need to launch.\n if (!this.getState(\"tokenResponse.access_token\")) {\n error.message += \"\\nThis app cannot be accessed directly. Please launch it as SMART app!\";\n throw error;\n }\n\n // auto-refresh not enabled and Session expired.\n // Need to re-launch. Clear state to start over!\n if (!options.useRefreshToken) {\n debugRequest(\"Your session has expired and the useRefreshToken option is set to false. Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n\n // In rare cases we may have a valid access token and a refresh\n // token and the request might still fail with 401 just because\n // the access token has just been revoked.\n\n // otherwise -> auto-refresh failed. Session expired.\n // Need to re-launch. Clear state to start over!\n debugRequest(\"Auto-refresh failed! Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n throw error;\n })\n\n // Handle 403 ------------------------------------------------------\n .catch((error: HttpError) => {\n if (error.status == 403) {\n debugRequest(\"Permission denied! Please make sure that you have requested the proper scopes.\");\n }\n throw error;\n })\n\n .then((data: any) => {\n\n // At this point we don't know what `data` actually is!\n\n // We might get an empty or falsy result. If so return it as is\n // Also handle raw responses\n if (!data || typeof data == \"string\" || data instanceof Response) {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: data,\n response\n }\n }\n return data;\n }\n \n // Resolve References ------------------------------------------\n return (async (_data: fhirclient.FHIR.Resource) => {\n\n if (_data.resourceType == \"Bundle\") {\n await Promise.all(((_data as fhirclient.FHIR.Bundle).entry || []).map(item => resolveRefs(\n item.resource,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n )));\n }\n else {\n await resolveRefs(\n _data,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n );\n }\n\n return _data;\n })(data)\n\n // Pagination ----------------------------------------------\n .then(async _data => {\n if (_data && _data.resourceType == \"Bundle\") {\n const links = (_data.link || []) as fhirclient.FHIR.BundleLink[];\n\n if (options.flat) {\n _data = (_data.entry || []).map(\n (entry: fhirclient.FHIR.BundleEntry) => entry.resource\n );\n }\n\n if (options.onPage) {\n await options.onPage(_data, { ..._resolvedRefs });\n }\n\n if (--options.pageLimit) {\n const next = links.find(l => l.relation == \"next\");\n _data = makeArray(_data);\n if (next && next.url) {\n const nextPage = await this.request(\n {\n url: next.url,\n\n // Aborting the main request (even after it is complete)\n // must propagate to any child requests and abort them!\n // To do so, just pass the same AbortSignal if one is\n // provided.\n signal\n },\n options,\n _resolvedRefs\n );\n\n if (options.onPage) {\n return null;\n }\n\n if (options.resolveReferences.length) {\n Object.assign(_resolvedRefs, nextPage.references);\n return _data.concat(makeArray(nextPage.data || nextPage));\n }\n return _data.concat(makeArray(nextPage));\n }\n }\n }\n return _data;\n })\n\n // Finalize ------------------------------------------------\n .then(_data => {\n if (options.graph) {\n _resolvedRefs = {};\n }\n else if (!options.onPage && options.resolveReferences.length) {\n return {\n data: _data,\n references: _resolvedRefs\n };\n }\n return _data;\n })\n .then(_data => {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: _data,\n response\n }\n }\n return _data;\n });\n });\n }\n\n /**\n * Checks if access token and refresh token are present. If they are, and if\n * the access token is expired or is about to expire in the next 10 seconds,\n * calls `this.refresh()` to obtain new access token.\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refreshIfNeeded(requestOptions: RequestInit = {}): Promise\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n const refreshToken = this.getState(\"tokenResponse.refresh_token\");\n const expiresAt = this.state.expiresAt || 0;\n\n if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) {\n return this.refresh(requestOptions);\n }\n\n return Promise.resolve(this.state);\n }\n\n /**\n * Use the refresh token to obtain new access token. If the refresh token is\n * expired (or this fails for any other reason) it will be deleted from the\n * state, so that we don't enter into loops trying to re-authorize.\n *\n * This method is typically called internally from [[request]] if\n * certain request fails with 401.\n *\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refresh(requestOptions: RequestInit = {}): Promise\n {\n const debugRefresh = _debug.extend(\"client:refresh\");\n debugRefresh(\"Attempting to refresh with refresh_token...\");\n\n const refreshToken = this.state?.tokenResponse?.refresh_token;\n assert(refreshToken, \"Unable to refresh. No refresh_token found.\");\n\n const tokenUri = this.state.tokenUri;\n assert(tokenUri, \"Unable to refresh. No tokenUri found.\");\n\n const scopes = this.getState(\"tokenResponse.scope\") || \"\";\n const hasOfflineAccess = scopes.search(/\\boffline_access\\b/) > -1;\n const hasOnlineAccess = scopes.search(/\\bonline_access\\b/) > -1;\n assert(hasOfflineAccess || hasOnlineAccess, \"Unable to refresh. No offline_access or online_access scope found.\");\n\n // This method is typically called internally from `request` if certain\n // request fails with 401. However, clients will often run multiple\n // requests in parallel which may result in multiple refresh calls.\n // To avoid that, we keep a reference to the current refresh task (if any).\n if (!this._refreshTask) {\n\n const refreshRequestOptions = {\n credentials: this.environment.options.refreshTokenWithCredentials || \"same-origin\",\n ...requestOptions,\n method : \"POST\",\n mode : \"cors\" as RequestMode,\n headers: {\n ...(requestOptions.headers || {}),\n \"content-type\": \"application/x-www-form-urlencoded\"\n },\n body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(refreshToken)}`\n };\n\n // custom authorization header can be passed on manual calls\n if (!(\"authorization\" in refreshRequestOptions.headers)) {\n const { clientSecret, clientId } = this.state;\n if (clientSecret) {\n // @ts-ignore\n refreshRequestOptions.headers.authorization = \"Basic \" + this.environment.btoa(\n clientId + \":\" + clientSecret\n );\n }\n }\n\n this._refreshTask = request(tokenUri, refreshRequestOptions)\n .then(data => {\n assert(data.access_token, \"No access token received\");\n debugRefresh(\"Received new access token response %O\", data);\n this.state.tokenResponse = { ...this.state.tokenResponse, ...data };\n this.state.expiresAt = getAccessTokenExpiration(data, this.environment);\n return this.state;\n })\n .catch((error: Error) => {\n if (this.state?.tokenResponse?.refresh_token) {\n debugRefresh(\"Deleting the expired or invalid refresh token.\");\n delete this.state.tokenResponse.refresh_token;\n }\n throw error;\n })\n .finally(() => {\n this._refreshTask = null;\n const key = this.state.key;\n if (key) {\n this.environment.getStorage().set(key, this.state);\n } else {\n debugRefresh(\"No 'key' found in Clint.state. Cannot persist the instance.\");\n }\n });\n }\n\n return this._refreshTask;\n }\n\n // utils -------------------------------------------------------------------\n\n /**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): fhirclient.ObservationMap\n {\n return byCode(observations, property);\n }\n\n /**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): (...codes: string[]) => any[]\n {\n return byCodes(observations, property);\n }\n\n /**\n * @category Utility\n */\n units = units;\n\n /**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n getPath(obj: Record, path = \"\"): any {\n return getPath(obj, path);\n }\n\n /**\n * Returns a copy of the client state. Accepts a dot-separated path argument\n * (same as for `getPath`) to allow for selecting specific properties.\n * Examples:\n * ```js\n * client.getState(); // -> the entire state object\n * client.getState(\"serverUrl\"); // -> the URL we are connected to\n * client.getState(\"tokenResponse.patient\"); // -> The selected patient ID (if any)\n * ```\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\n getState(path = \"\") {\n return getPath({ ...this.state }, path);\n }\n\n /**\n * Returns a promise that will be resolved with the fhir version as defined\n * in the CapabilityStatement.\n */\n getFhirVersion(): Promise {\n return fetchConformanceStatement(this.state.serverUrl)\n .then((metadata) => metadata.fhirVersion);\n }\n\n /**\n * Returns a promise that will be resolved with the numeric fhir version\n * - 2 for DSTU2\n * - 3 for STU3\n * - 4 for R4\n * - 0 if the version is not known\n */\n getFhirRelease(): Promise {\n return this.getFhirVersion().then(v => (fhirVersions as any)[v] ?? 0);\n }\n}\n","import { fhirclient } from \"./types\";\n\n\nexport default class HttpError extends Error\n{\n /**\n * The HTTP status code for this error\n */\n statusCode: number;\n\n /**\n * The HTTP status code for this error.\n * Note that this is the same as `status`, i.e. the code is available\n * through any of these.\n */\n status: number;\n\n /**\n * The HTTP status text corresponding to this error\n */\n statusText: string;\n\n /**\n * Reference to the HTTP Response object\n */\n response: Response;\n\n constructor(response: Response) {\n super(`${response.status} ${response.statusText}\\nURL: ${response.url}`);\n this.name = \"HttpError\";\n this.response = response;\n this.statusCode = response.status;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n\n async parse()\n {\n if (!this.response.bodyUsed) {\n try {\n const type = this.response.headers.get(\"content-type\") || \"text/plain\";\n if (type.match(/\\bjson\\b/i)) {\n let body = await this.response.json();\n if (body.error) {\n this.message += \"\\n\" + body.error;\n if (body.error_description) {\n this.message += \": \" + body.error_description;\n }\n }\n else {\n this.message += \"\\n\\n\" + JSON.stringify(body, null, 4);\n }\n }\n else if (type.match(/^text\\//i)) {\n let body = await this.response.text();\n if (body) {\n this.message += \"\\n\\n\" + body;\n }\n }\n } catch {\n // ignore\n }\n }\n\n return this;\n }\n\n toJSON() {\n return {\n name : this.name,\n statusCode: this.statusCode,\n status : this.status,\n statusText: this.statusText,\n message : this.message\n };\n }\n}\n","import { ready, authorize, init } from \"../smart\";\nimport Client from \"../Client\";\nimport BrowserStorage from \"../storage/BrowserStorage\";\nimport { fhirclient } from \"../types\";\nimport * as security from \"../security/browser\"\nimport { encodeURL, decode, fromUint8Array } from \"js-base64\"\n\n/**\n * Browser Adapter\n */\nexport default class BrowserAdapter implements fhirclient.Adapter\n{\n /**\n * Stores the URL instance associated with this adapter\n */\n private _url: URL | null = null;\n\n /**\n * Holds the Storage instance associated with this instance\n */\n private _storage: fhirclient.Storage | null = null;\n\n /**\n * Environment-specific options\n */\n options: fhirclient.BrowserFHIRSettings;\n\n security = security;\n\n /**\n * @param options Environment-specific options\n */\n constructor(options: fhirclient.BrowserFHIRSettings = {})\n {\n this.options = {\n // Replaces the browser's current URL\n // using window.history.replaceState API or by reloading.\n replaceBrowserHistory: true,\n\n // When set to true, this variable will fully utilize\n // HTML5 sessionStorage API.\n // This variable can be overridden to false by setting\n // FHIR.oauth2.settings.fullSessionStorageSupport = false.\n // When set to false, the sessionStorage will be keyed\n // by a state variable. This is to allow the embedded IE browser\n // instances instantiated on a single thread to continue to\n // function without having sessionStorage data shared\n // across the embedded IE instances.\n fullSessionStorageSupport: true,\n\n // Do we want to send cookies while making a request to the token\n // endpoint in order to obtain new access token using existing\n // refresh token. In rare cases the auth server might require the\n // client to send cookies along with those requests. In this case\n // developers will have to change this before initializing the app\n // like so:\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"include\";`\n // or\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"same-origin\";`\n // Can be one of:\n // \"include\" - always send cookies\n // \"same-origin\" - only send cookies if we are on the same domain (default)\n // \"omit\" - do not send cookies\n refreshTokenWithCredentials: \"same-origin\",\n\n ...options\n };\n }\n\n /**\n * Given a relative path, returns an absolute url using the instance base URL\n */\n relative(path: string): string\n {\n return new URL(path, this.getUrl().href).href;\n }\n\n /**\n * In browsers we need to be able to (dynamically) check if fhir.js is\n * included in the page. If it is, it should have created a \"fhir\" variable\n * in the global scope.\n */\n get fhir()\n {\n // @ts-ignore\n return typeof fhir === \"function\" ? fhir : null;\n }\n\n /**\n * Given the current environment, this method must return the current url\n * as URL instance\n */\n getUrl(): URL\n {\n if (!this._url) {\n this._url = new URL(location + \"\");\n }\n return this._url;\n }\n\n /**\n * Given the current environment, this method must redirect to the given\n * path\n */\n redirect(to: string): void\n {\n location.href = to;\n }\n\n /**\n * Returns a BrowserStorage object which is just a wrapper around\n * sessionStorage\n */\n getStorage(): BrowserStorage\n {\n if (!this._storage) {\n this._storage = new BrowserStorage();\n }\n return this._storage;\n }\n\n /**\n * Returns a reference to the AbortController constructor. In browsers,\n * AbortController will always be available as global (native or polyfilled)\n */\n getAbortController()\n {\n return AbortController;\n }\n\n /**\n * ASCII string to Base64\n */\n atob(str: string): string\n {\n return window.atob(str);\n }\n\n /**\n * Base64 to ASCII string\n */\n btoa(str: string): string\n {\n return window.btoa(str);\n }\n\n base64urlencode(input: string | Uint8Array)\n {\n if (typeof input == \"string\") {\n return encodeURL(input)\n }\n return fromUint8Array(input, true)\n }\n\n base64urldecode(input: string)\n {\n return decode(input)\n }\n\n /**\n * Creates and returns adapter-aware SMART api. Not that while the shape of\n * the returned object is well known, the arguments to this function are not.\n * Those who override this method are free to require any environment-specific\n * arguments. For example in node we will need a request, a response and\n * optionally a storage or storage factory function.\n */\n getSmartApi(): fhirclient.SMART\n {\n return {\n ready : (...args: any[]) => ready(this, ...args),\n authorize: options => authorize(this, options),\n init : options => init(this, options),\n client : (state: string | fhirclient.ClientState) => new Client(this, state),\n options : this.options,\n utils: {\n security\n }\n };\n }\n}\n","\n// Note: the following 2 imports appear as unused but they affect how tsc is\n// generating type definitions!\nimport { fhirclient } from \"../types\";\nimport Client from \"../Client\";\n\n// In Browsers we create an adapter, get the SMART api from it and build the\n// global FHIR object\nimport BrowserAdapter from \"../adapters/BrowserAdapter\";\n\nconst adapter = new BrowserAdapter();\nconst { ready, authorize, init, client, options, utils } = adapter.getSmartApi();\n\n// We have two kinds of browser builds - \"pure\" for new browsers and \"legacy\"\n// for old ones. In pure builds we assume that the browser supports everything\n// we need. In legacy mode, the library also acts as a polyfill. Babel will\n// automatically polyfill everything except \"fetch\", which we have to handle\n// manually.\n// @ts-ignore\nif (typeof FHIRCLIENT_PURE == \"undefined\") {\n const fetch = require(\"cross-fetch\");\n require(\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\");\n if (!window.fetch) {\n window.fetch = fetch.default;\n window.Headers = fetch.Headers;\n window.Request = fetch.Request;\n window.Response = fetch.Response;\n }\n}\n\n// $lab:coverage:off$\nconst FHIR = {\n AbortController: window.AbortController,\n client,\n utils,\n oauth2: {\n settings: options,\n ready,\n authorize,\n init\n }\n};\n\nexport = FHIR;\n// $lab:coverage:on$\n","/*\n * This file contains some shared functions. They are used by other modules, but\n * are defined here so that tests can import this library and test them.\n */\n\nimport HttpError from \"./HttpError\";\nimport { patientParams } from \"./settings\";\nimport { fhirclient } from \"./types\";\nconst debug = require(\"debug\");\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { fetch } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst _debug = debug(\"FHIR\");\nexport { _debug as debug };\n\n/**\n * The cache for the `getAndCache` function\n */\nconst cache: Record = {};\n\n/**\n * A namespace with functions for converting between different measurement units\n */\nexport const units = {\n cm({ code, value }: fhirclient.CodeValue) {\n ensureNumerical({ code, value });\n if (code == \"cm\" ) return value;\n if (code == \"m\" ) return value * 100;\n if (code == \"in\" ) return value * 2.54;\n if (code == \"[in_us]\") return value * 2.54;\n if (code == \"[in_i]\" ) return value * 2.54;\n if (code == \"ft\" ) return value * 30.48;\n if (code == \"[ft_us]\") return value * 30.48;\n throw new Error(\"Unrecognized length unit: \" + code);\n },\n kg({ code, value }: fhirclient.CodeValue){\n ensureNumerical({ code, value });\n if (code == \"kg\" ) return value;\n if (code == \"g\" ) return value / 1000;\n if (code.match(/lb/)) return value / 2.20462;\n if (code.match(/oz/)) return value / 35.274;\n throw new Error(\"Unrecognized weight unit: \" + code);\n },\n any(pq: fhirclient.CodeValue){\n ensureNumerical(pq);\n return pq.value;\n }\n};\n\n/**\n * Assertion function to guard arguments for `units` functions\n */\nfunction ensureNumerical({ value, code }: fhirclient.CodeValue) {\n if (typeof value !== \"number\") {\n throw new Error(\"Found a non-numerical unit: \" + value + \" \" + code);\n }\n}\n\n/**\n * Used in fetch Promise chains to reject if the \"ok\" property is not true\n */\nexport async function checkResponse(resp: Response): Promise {\n if (!resp.ok) {\n const error = new HttpError(resp);\n await error.parse();\n throw error;\n }\n return resp;\n}\n\n/**\n * Used in fetch Promise chains to return the JSON version of the response.\n * Note that `resp.json()` will throw on empty body so we use resp.text()\n * instead.\n */\nexport function responseToJSON(resp: Response): Promise {\n return resp.text().then(text => text.length ? JSON.parse(text) : \"\");\n}\n\nexport function loweCaseKeys | any[] | undefined>(obj: T): T {\n \n // Can be undefined to signal that this key should be removed\n if (!obj) {\n return obj as T\n }\n\n // Arrays are valid values in case of recursive calls\n if (Array.isArray(obj)) {\n return obj.map(v => v && typeof v === \"object\" ? loweCaseKeys(v) : v) as unknown as T;\n }\n\n // Plain object\n let out: Record = {};\n Object.keys(obj).forEach(key => {\n const lowerKey = key.toLowerCase()\n const v = (obj as Record)[key]\n out[lowerKey] = v && typeof v == \"object\" ? loweCaseKeys(v) : v;\n });\n return out as T;\n}\n\n/**\n * This is our built-in request function. It does a few things by default\n * (unless told otherwise):\n * - Makes CORS requests\n * - Sets accept header to \"application/json\"\n * - Handles errors\n * - If the response is json return the json object\n * - If the response is text return the result text\n * - Otherwise return the response object on which we call stuff like `.blob()`\n */\nexport function request(\n url: string | Request,\n requestOptions: fhirclient.FetchOptions = {}\n): Promise\n{\n const { includeResponse, ...options } = requestOptions;\n return fetch(url, {\n mode: \"cors\",\n ...options,\n headers: {\n accept: \"application/json\",\n ...loweCaseKeys(options.headers)\n }\n })\n .then(checkResponse)\n .then((res: Response) => {\n const type = res.headers.get(\"content-type\") + \"\";\n if (type.match(/\\bjson\\b/i)) {\n return responseToJSON(res).then(body => ({ res, body }));\n }\n if (type.match(/^text\\//i)) {\n return res.text().then(body => ({ res, body }));\n }\n return { res };\n })\n .then(({res, body}: {res:Response, body?:fhirclient.JsonObject|string}) => {\n\n // Some servers will reply after CREATE with json content type but with\n // empty body. In this case check if a location header is received and\n // fetch that to use it as the final result.\n if (!body && res.status == 201) {\n const location = res.headers.get(\"location\");\n if (location) {\n return request(location, { ...options, method: \"GET\", body: null, includeResponse });\n }\n }\n\n if (includeResponse) {\n return { body, response: res };\n }\n\n // For any non-text and non-json response return the Response object.\n // This to let users decide if they want to call text(), blob() or\n // something else on it\n if (body === undefined) {\n return res;\n }\n\n // Otherwise just return the parsed body (can also be \"\" or null)\n return body;\n });\n}\n\n/**\n * Makes a request using `fetch` and stores the result in internal memory cache.\n * The cache is cleared when the page is unloaded.\n * @param url The URL to request\n * @param requestOptions Request options\n * @param force If true, reload from source and update the cache, even if it has\n * already been cached.\n */\nexport function getAndCache(url: string, requestOptions?: RequestInit, force: boolean = process.env.NODE_ENV === \"test\"): Promise {\n if (force || !cache[url]) {\n cache[url] = request(url, requestOptions);\n return cache[url];\n }\n return Promise.resolve(cache[url]);\n}\n\n/**\n * Fetches the conformance statement from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n * @param [requestOptions] Any options passed to the fetch call\n */\nexport function fetchConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \"metadata\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(\n `Failed to fetch the conformance statement from \"${url}\". ${ex}`\n );\n });\n}\n\n\n/**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\nexport function getPath(obj: Record, path = \"\"): any {\n path = path.trim();\n if (!path) {\n return obj;\n }\n\n let segments = path.split(\".\");\n let result = obj;\n\n while (result && segments.length) {\n const key = segments.shift();\n if (!key && Array.isArray(result)) {\n return result.map(o => getPath(o, segments.join(\".\")));\n } else {\n result = result[key as string];\n }\n }\n\n return result;\n}\n\n/**\n * Like getPath, but if the node is found, its value is set to @value\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @param value The value to set\n * @param createEmpty If true, create missing intermediate objects or arrays\n * @returns The modified object\n */\nexport function setPath(obj: Record, path: string, value: any, createEmpty = false): Record {\n path.trim().split(\".\").reduce(\n (out, key, idx, arr) => {\n if (out && idx === arr.length - 1) {\n out[key] = value;\n }\n else {\n if (out && out[key] === undefined && createEmpty) {\n out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {};\n }\n return out ? out[key] : undefined;\n }\n },\n obj\n );\n return obj;\n}\n\n/**\n * If the argument is an array returns it as is. Otherwise puts it in an array\n * (`[arg]`) and returns the result\n * @param arg The element to test and possibly convert to array\n * @category Utility\n */\nexport function makeArray(arg: any): T[] {\n if (Array.isArray(arg)) {\n return arg;\n }\n return [arg];\n}\n\n/**\n * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl\n * is not provided, the result would be a rooted path (one that starts with `/`).\n * @param path The path to convert\n * @param baseUrl The base URL\n */\nexport function absolute(path: string, baseUrl?: string): string\n{\n if (path.match(/^http/)) return path;\n if (path.match(/^urn/)) return path;\n return String(baseUrl || \"\").replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n}\n\n/**\n * Generates random strings. By default this returns random 8 characters long\n * alphanumeric strings.\n * @param strLength The length of the output string. Defaults to 8.\n * @param charSet A string containing all the possible characters.\n * Defaults to all the upper and lower-case letters plus digits.\n * @category Utility\n */\nexport function randomString(\n strLength = 8,\n charSet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n): string\n{\n const result = [];\n const len = charSet.length;\n while (strLength--) {\n result.push(charSet.charAt(Math.floor(Math.random() * len)));\n }\n return result.join(\"\");\n}\n\n/**\n * Decodes a JWT token and returns it's body.\n * @param token The token to read\n * @param env An `Adapter` or any other object that has an `atob` method\n * @category Utility\n */\nexport function jwtDecode(token: string, env: fhirclient.Adapter): Record | null\n{\n const payload = token.split(\".\")[1];\n return payload ? JSON.parse(env.atob(payload)) : null;\n}\n\n/**\n * Add a supplied number of seconds to the supplied Date, returning\n * an integer number of seconds since the epoch\n * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds)\n * @param from Initial time (defaults to current time)\n */\nexport function getTimeInFuture(secondsAhead: number = 120, from?: Date | number): number {\n return Math.floor(+(from || new Date()) / 1000 + secondsAhead) \n}\n\n/**\n * Given a token response, computes and returns the expiresAt timestamp.\n * Note that this should only be used immediately after an access token is\n * received, otherwise the computed timestamp will be incorrect.\n * @param tokenResponse \n * @param env \n */\nexport function getAccessTokenExpiration(tokenResponse: fhirclient.TokenResponse, env: fhirclient.Adapter): number\n{\n const now = Math.floor(Date.now() / 1000);\n\n // Option 1 - using the expires_in property of the token response\n if (tokenResponse.expires_in) {\n return now + tokenResponse.expires_in;\n }\n\n // Option 2 - using the exp property of JWT tokens (must not assume JWT!)\n if (tokenResponse.access_token) {\n let tokenBody = jwtDecode(tokenResponse.access_token, env);\n if (tokenBody && tokenBody.exp) {\n return tokenBody.exp;\n }\n }\n\n // Option 3 - if none of the above worked set this to 5 minutes after now\n return now + 300;\n}\n\n/**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): fhirclient.ObservationMap\n{\n const ret: fhirclient.ObservationMap = {};\n\n function handleCodeableConcept(concept: fhirclient.FHIR.CodeableConcept, observation: fhirclient.FHIR.Observation) {\n if (concept && Array.isArray(concept.coding)) {\n concept.coding.forEach(({ code }) => {\n if (code) {\n ret[code] = ret[code] || [] as fhirclient.FHIR.Observation[];\n ret[code].push(observation);\n }\n });\n }\n }\n\n makeArray(observations).forEach(o => {\n if (o.resourceType === \"Observation\" && o[property]) {\n if (Array.isArray(o[property])) {\n o[property].forEach((concept: fhirclient.FHIR.CodeableConcept) => handleCodeableConcept(concept, o));\n } else {\n handleCodeableConcept(o[property], o);\n }\n }\n });\n\n return ret;\n}\n\n/**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): (...codes: string[]) => any[]\n{\n const bank = byCode(observations, property);\n return (...codes) => codes\n .filter(code => (code + \"\") in bank)\n .reduce(\n (prev, code) => prev.concat(bank[code + \"\"]),\n [] as fhirclient.FHIR.Observation[]\n );\n}\n\n/**\n * Given a conformance statement and a resource type, returns the name of the\n * URL parameter that can be used to scope the resource type by patient ID.\n */\nexport function getPatientParam(conformance: fhirclient.FHIR.CapabilityStatement, resourceType: string): string\n{\n // Find what resources are supported by this server\n const resources = getPath(conformance, \"rest.0.resource\") || [];\n\n // Check if this resource is supported\n const meta = resources.find((r: any) => r.type === resourceType);\n if (!meta) {\n throw new Error(`Resource \"${resourceType}\" is not supported by this FHIR server`);\n }\n\n // Check if any search parameters are available for this resource\n if (!Array.isArray(meta.searchParam)) {\n throw new Error(`No search parameters supported for \"${resourceType}\" on this FHIR server`);\n }\n\n // This is a rare case but could happen in generic workflows\n if (resourceType == \"Patient\" && meta.searchParam.find((x: any) => x.name == \"_id\")) {\n return \"_id\";\n }\n\n // Now find the first possible parameter name\n const out = patientParams.find(p => meta.searchParam.find((x: any) => x.name == p));\n\n // If there is no match\n if (!out) {\n throw new Error(\"I don't know what param to use for \" + resourceType);\n }\n\n return out;\n}\n\n/**\n * Resolves a reference to target window. It may also open new window or tab if\n * the `target = \"popup\"` or `target = \"_blank\"`.\n * @param target\n * @param width Only used when `target = \"popup\"`\n * @param height Only used when `target = \"popup\"`\n */\nexport async function getTargetWindow(target: fhirclient.WindowTarget, width: number = 800, height: number = 720): Promise\n{\n // The target can be a function that returns the target. This can be\n // used to open a layer pop-up with an iframe and then return a reference\n // to that iframe (or its name)\n if (typeof target == \"function\") {\n target = await target();\n }\n\n // The target can be a window reference\n if (target && typeof target == \"object\") {\n return target;\n }\n\n // At this point target must be a string\n if (typeof target != \"string\") {\n _debug(\"Invalid target type '%s'. Failing back to '_self'.\", typeof target);\n return self;\n }\n\n // Current window\n if (target == \"_self\") {\n return self;\n }\n\n // The parent frame\n if (target == \"_parent\") {\n return parent;\n }\n\n // The top window\n if (target == \"_top\") {\n return top || self;\n }\n\n // New tab or window\n if (target == \"_blank\") {\n let error, targetWindow: Window | null = null;\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\");\n if (!targetWindow) {\n throw new Error(\"Perhaps window.open was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Popup window\n if (target == \"popup\") {\n let error, targetWindow: Window | null = null;\n // if (!targetWindow || targetWindow.closed) {\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\", [\n \"height=\" + height,\n \"width=\" + width,\n \"menubar=0\",\n \"resizable=1\",\n \"status=0\",\n \"top=\" + (screen.height - height) / 2,\n \"left=\" + (screen.width - width) / 2\n ].join(\",\"));\n if (!targetWindow) {\n throw new Error(\"Perhaps the popup window was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Frame or window by name\n const winOrFrame: Window = frames[target as any];\n if (winOrFrame) {\n return winOrFrame;\n }\n\n _debug(\"Unknown target '%s'. Failing back to '_self'.\", target);\n return self;\n}\n\nexport function assert(condition: any, message: string): asserts condition {\n if (!(condition)) {\n throw new Error(message)\n }\n}\n\nexport function assertJsonPatch(patch: fhirclient.JsonPatch): asserts patch {\n assert(Array.isArray(patch), \"The JSON patch must be an array\")\n assert(patch.length > 0, \"The JSON patch array should not be empty\")\n patch.forEach((operation: fhirclient.JsonPatchOperation) => {\n assert(\n [\"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"].indexOf(operation.op) > -1,\n 'Each patch operation must have an \"op\" property which must be one of: \"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"'\n )\n assert(operation.path && typeof operation.path, `Invalid \"${operation.op}\" operation. Missing \"path\" property`)\n \n if (operation.op == \"add\" || operation.op == \"replace\" || operation.op == \"test\") {\n assert(\"value\" in operation, `Invalid \"${operation.op}\" operation. Missing \"value\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else if (operation.op == \"move\" || operation.op == \"copy\") {\n assert(typeof operation.from == \"string\", `Invalid \"${operation.op}\" operation. Requires a string \"from\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else {\n assert(Object.keys(operation).length == 2, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n })\n}\n","import { encodeURL, fromUint8Array } from \"js-base64\"\nimport { fhirclient } from \"../types\"\n\n\nconst crypto: Crypto = typeof globalThis === \"object\" && globalThis.crypto ?\n globalThis.crypto :\n require(\"isomorphic-webcrypto\").default;\n\nconst subtle = () => {\n if (!crypto.subtle) {\n if (!globalThis.isSecureContext) {\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available unless you run this app in secure context (using \" +\n \"HTTPS or running locally). See \" +\n \"https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n )\n }\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available in the current environment (no crypto.subtle)\"\n )\n }\n return crypto.subtle\n}\n\n\ninterface PkcePair {\n codeChallenge: string\n codeVerifier: string\n}\n\nconst ALGS = {\n ES384: {\n name: \"ECDSA\",\n namedCurve: \"P-384\"\n } as EcKeyGenParams,\n RS384: {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 4096,\n publicExponent: new Uint8Array([1, 0, 1]),\n hash: {\n name: 'SHA-384'\n }\n } as RsaHashedKeyGenParams\n};\n\nexport function randomBytes(count: number): Uint8Array {\n return crypto.getRandomValues(new Uint8Array(count));\n}\n\nexport async function digestSha256(payload: string): Promise {\n const prepared = new TextEncoder().encode(payload);\n const hash = await subtle().digest('SHA-256', prepared);\n return new Uint8Array(hash);\n}\n\nexport const generatePKCEChallenge = async (entropy = 96): Promise => {\n const inputBytes = randomBytes(entropy)\n const codeVerifier = fromUint8Array(inputBytes, true)\n const codeChallenge = fromUint8Array(await digestSha256(codeVerifier), true)\n return { codeChallenge, codeVerifier }\n}\n\nexport async function importJWK(jwk: fhirclient.JWK): Promise {\n // alg is optional in JWK but we need it here!\n if (!jwk.alg) {\n throw new Error('The \"alg\" property of the JWK must be set to \"ES384\" or \"RS384\"')\n }\n\n // Use of the \"key_ops\" member is OPTIONAL, unless the application requires its presence.\n // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3\n // \n // In our case the app will only import private keys so we can assume \"sign\"\n if (!Array.isArray(jwk.key_ops)) {\n jwk.key_ops = [\"sign\"]\n }\n\n // In this case the JWK has a \"key_ops\" array and \"sign\" is not listed\n if (!jwk.key_ops.includes(\"sign\")) {\n throw new Error('The \"key_ops\" property of the JWK does not contain \"sign\"')\n }\n\n try {\n return await subtle().importKey(\n \"jwk\",\n jwk,\n ALGS[jwk.alg],\n jwk.ext === true,\n jwk.key_ops// || ['sign']\n )\n } catch (e) {\n throw new Error(`The ${jwk.alg} is not supported by this browser: ${e}`)\n }\n}\n\nexport async function signCompactJws(alg: keyof typeof ALGS, privateKey: CryptoKey, header: any, payload: any): Promise {\n\n const jwtHeader = JSON.stringify({ ...header, alg });\n const jwtPayload = JSON.stringify(payload);\n const jwtAuthenticatedContent = `${encodeURL(jwtHeader)}.${encodeURL(jwtPayload)}`;\n\n const signature = await subtle().sign(\n { ...privateKey.algorithm, hash: 'SHA-384' },\n privateKey,\n new TextEncoder().encode(jwtAuthenticatedContent)\n );\n\n return `${jwtAuthenticatedContent}.${fromUint8Array(new Uint8Array(signature), true)}`\n}\n","/**\n * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4\n */\nexport const patientCompartment = [\n \"Account\",\n \"AdverseEvent\",\n \"AllergyIntolerance\",\n \"Appointment\",\n \"AppointmentResponse\",\n \"AuditEvent\",\n \"Basic\",\n \"BodySite\",\n \"BodyStructure\",\n \"CarePlan\",\n \"CareTeam\",\n \"ChargeItem\",\n \"Claim\",\n \"ClaimResponse\",\n \"ClinicalImpression\",\n \"Communication\",\n \"CommunicationRequest\",\n \"Composition\",\n \"Condition\",\n \"Consent\",\n \"Coverage\",\n \"CoverageEligibilityRequest\",\n \"CoverageEligibilityResponse\",\n \"DetectedIssue\",\n \"DeviceRequest\",\n \"DeviceUseRequest\",\n \"DeviceUseStatement\",\n \"DiagnosticOrder\",\n \"DiagnosticReport\",\n \"DocumentManifest\",\n \"DocumentReference\",\n \"EligibilityRequest\",\n \"Encounter\",\n \"EnrollmentRequest\",\n \"EpisodeOfCare\",\n \"ExplanationOfBenefit\",\n \"FamilyMemberHistory\",\n \"Flag\",\n \"Goal\",\n \"Group\",\n \"ImagingManifest\",\n \"ImagingObjectSelection\",\n \"ImagingStudy\",\n \"Immunization\",\n \"ImmunizationEvaluation\",\n \"ImmunizationRecommendation\",\n \"Invoice\",\n \"List\",\n \"MeasureReport\",\n \"Media\",\n \"MedicationAdministration\",\n \"MedicationDispense\",\n \"MedicationOrder\",\n \"MedicationRequest\",\n \"MedicationStatement\",\n \"MolecularSequence\",\n \"NutritionOrder\",\n \"Observation\",\n \"Order\",\n \"Patient\",\n \"Person\",\n \"Procedure\",\n \"ProcedureRequest\",\n \"Provenance\",\n \"QuestionnaireResponse\",\n \"ReferralRequest\",\n \"RelatedPerson\",\n \"RequestGroup\",\n \"ResearchSubject\",\n \"RiskAssessment\",\n \"Schedule\",\n \"ServiceRequest\",\n \"Specimen\",\n \"SupplyDelivery\",\n \"SupplyRequest\",\n \"VisionPrescription\"\n];\n\n/**\n * Map of FHIR releases and their abstract version as number\n */\nexport const fhirVersions = {\n \"0.4.0\": 2,\n \"0.5.0\": 2,\n \"1.0.0\": 2,\n \"1.0.1\": 2,\n \"1.0.2\": 2,\n \"1.1.0\": 3,\n \"1.4.0\": 3,\n \"1.6.0\": 3,\n \"1.8.0\": 3,\n \"3.0.0\": 3,\n \"3.0.1\": 3,\n \"3.3.0\": 4,\n \"3.5.0\": 4,\n \"4.0.0\": 4,\n \"4.0.1\": 4\n};\n\n/**\n * Combined (FHIR R2-R4) list of search parameters that can be used to scope\n * a request by patient ID.\n */\nexport const patientParams = [\n \"patient\",\n \"subject\",\n \"requester\",\n \"member\",\n \"actor\",\n \"beneficiary\"\n];\n\n/**\n * The name of the sessionStorage entry that contains the current key\n */\nexport const SMART_KEY = \"SMART_KEY\";\n","/* global window */\nimport {\n debug as _debug,\n request,\n getPath,\n getTimeInFuture,\n randomString,\n getAndCache,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n getTargetWindow,\n assert\n} from \"./lib\";\nimport Client from \"./Client\";\nimport { SMART_KEY } from \"./settings\";\nimport { fhirclient } from \"./types\";\n\nconst debug = _debug.extend(\"oauth2\");\n\nexport { SMART_KEY as KEY };\n\nfunction isBrowser() {\n return typeof window === \"object\";\n}\n\n/**\n * Fetches the well-known json file from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n */\nexport function fetchWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \".well-known/smart-configuration\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(`Failed to fetch the well-known json \"${url}\". ${ex.message}`);\n });\n}\n\n/**\n * Fetch a \"WellKnownJson\" and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchWellKnownJson(baseUrl, requestOptions).then(meta => {\n if (!meta.authorization_endpoint || !meta.token_endpoint) {\n throw new Error(\"Invalid wellKnownJson\");\n }\n return {\n registrationUri : meta.registration_endpoint || \"\",\n authorizeUri : meta.authorization_endpoint,\n tokenUri : meta.token_endpoint,\n codeChallengeMethods: meta.code_challenge_methods_supported || []\n };\n });\n}\n\n/**\n * Fetch a `CapabilityStatement` and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchConformanceStatement(baseUrl, requestOptions).then(meta => {\n const nsUri = \"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris\";\n const extensions = ((getPath(meta || {}, \"rest.0.security.extension\") || []) as Array>)\n .filter(e => e.url === nsUri)\n .map(o => o.extension)[0];\n\n const out:fhirclient.OAuthSecurityExtensions = {\n registrationUri : \"\",\n authorizeUri : \"\",\n tokenUri : \"\",\n codeChallengeMethods: [],\n };\n\n if (extensions) {\n extensions.forEach(ext => {\n if (ext.url === \"register\") {\n out.registrationUri = ext.valueUri;\n }\n if (ext.url === \"authorize\") {\n out.authorizeUri = ext.valueUri;\n }\n if (ext.url === \"token\") {\n out.tokenUri = ext.valueUri;\n }\n });\n }\n\n return out;\n });\n}\n\n\n/**\n * Given a FHIR server, returns an object with it's Oauth security endpoints\n * that we are interested in. This will try to find the info in both the\n * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever\n * Arrives first will be used and the other request will be aborted.\n * @param [baseUrl = \"/\"] Fhir server base URL\n */\nexport function getSecurityExtensions(baseUrl = \"/\"): Promise\n{\n return getSecurityExtensionsFromWellKnownJson(baseUrl)\n .catch(() => getSecurityExtensionsFromConformanceStatement(baseUrl));\n}\n\n/**\n * Starts the SMART Launch Sequence.\n * > **IMPORTANT**:\n * `authorize()` will end up redirecting you to the authorization server.\n * This means that you should not add anything to the returned promise chain.\n * Any code written directly after the authorize() call might not be executed\n * due to that redirect!\n * @param env\n * @param [params]\n */\nexport async function authorize(\n env: fhirclient.Adapter,\n params: fhirclient.AuthorizeParams | fhirclient.AuthorizeParams[] = {}\n): Promise\n{\n const url = env.getUrl();\n\n // Multiple config for EHR launches ---------------------------------------\n if (Array.isArray(params)) {\n const urlISS = url.searchParams.get(\"iss\") || url.searchParams.get(\"fhirServiceUrl\");\n if (!urlISS) {\n throw new Error(\n 'Passing in an \"iss\" url parameter is required if authorize ' +\n 'uses multiple configurations'\n );\n }\n // pick the right config\n const cfg = params.find(x => {\n if (x.issMatch) {\n if (typeof x.issMatch === \"function\") {\n return !!x.issMatch(urlISS);\n }\n if (typeof x.issMatch === \"string\") {\n return x.issMatch === urlISS;\n }\n if (x.issMatch instanceof RegExp) {\n return x.issMatch.test(urlISS);\n }\n }\n return false;\n });\n assert(cfg, `No configuration found matching the current \"iss\" parameter \"${urlISS}\"`);\n return await authorize(env, cfg);\n }\n // ------------------------------------------------------------------------\n\n // Obtain input\n const {\n clientSecret,\n fakeTokenResponse,\n encounterId,\n target,\n width,\n height,\n pkceMode,\n clientPublicKeySetUrl,\n // Two deprecated values to use as fall-back values later\n redirect_uri,\n client_id,\n } = params;\n \n let {\n iss,\n launch,\n patientId,\n fhirServiceUrl,\n redirectUri,\n noRedirect,\n scope = \"\",\n clientId,\n completeInTarget,\n clientPrivateJwk\n } = params;\n\n const storage = env.getStorage();\n\n // For these, a url param takes precedence over inline option\n iss = url.searchParams.get(\"iss\") || iss;\n fhirServiceUrl = url.searchParams.get(\"fhirServiceUrl\") || fhirServiceUrl;\n launch = url.searchParams.get(\"launch\") || launch;\n patientId = url.searchParams.get(\"patientId\") || patientId;\n clientId = url.searchParams.get(\"clientId\") || clientId;\n\n // If there's still no clientId or redirectUri, check deprecated params \n if (!clientId) {\n clientId = client_id;\n }\n if (!redirectUri) {\n redirectUri = redirect_uri;\n }\n\n if (!redirectUri) {\n redirectUri = env.relative(\".\");\n } else if (!redirectUri.match(/^https?\\:\\/\\//)) {\n redirectUri = env.relative(redirectUri);\n }\n\n const serverUrl = String(iss || fhirServiceUrl || \"\");\n\n // Validate input\n if (!serverUrl) {\n throw new Error(\n \"No server url found. It must be specified as `iss` or as \" +\n \"`fhirServiceUrl` parameter\"\n );\n }\n\n if (iss) {\n debug(\"Making %s launch...\", launch ? \"EHR\" : \"standalone\");\n }\n\n // append launch scope if needed\n if (launch && !scope.match(/launch/)) {\n scope += \" launch\";\n }\n\n if (isBrowser()) {\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) {\n \n // completeInTarget will default to true if authorize is called from\n // within an iframe. This is to avoid issues when the entire app\n // happens to be rendered in an iframe (including in some EHRs),\n // even though that was not how the app developer's intention.\n completeInTarget = inFrame;\n\n // In this case we can't always make the best decision so ask devs\n // to be explicit in their configuration.\n console.warn(\n 'Your app is being authorized from within an iframe or popup ' +\n 'window. Please be explicit and provide a \"completeInTarget\" ' +\n 'option. Use \"true\" to complete the authorization in the ' +\n 'same window, or \"false\" to try to complete it in the parent ' +\n 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html'\n );\n }\n }\n\n // If `authorize` is called, make sure we clear any previous state (in case\n // this is a re-authorize)\n const oldKey = await storage.get(SMART_KEY);\n await storage.unset(oldKey);\n\n // create initial state\n const stateKey = randomString(16);\n const state: fhirclient.ClientState = {\n clientId,\n scope,\n redirectUri,\n serverUrl,\n clientSecret,\n clientPrivateJwk,\n tokenResponse: {},\n key: stateKey,\n completeInTarget,\n clientPublicKeySetUrl\n };\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n if (fullSessionStorageSupport) {\n await storage.set(SMART_KEY, stateKey);\n }\n\n // fakeTokenResponse to override stuff (useful in development)\n if (fakeTokenResponse) {\n Object.assign(state.tokenResponse!, fakeTokenResponse);\n }\n\n // Fixed patientId (useful in development)\n if (patientId) {\n Object.assign(state.tokenResponse!, { patient: patientId });\n }\n\n // Fixed encounterId (useful in development)\n if (encounterId) {\n Object.assign(state.tokenResponse!, { encounter: encounterId });\n }\n\n let redirectUrl = redirectUri + \"?state=\" + encodeURIComponent(stateKey);\n\n // bypass oauth if fhirServiceUrl is used (but iss takes precedence)\n if (fhirServiceUrl && !iss) {\n debug(\"Making fake launch...\");\n await storage.set(stateKey, state);\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // Get oauth endpoints and add them to the state\n const extensions = await getSecurityExtensions(serverUrl);\n Object.assign(state, extensions);\n await storage.set(stateKey, state);\n\n // If this happens to be an open server and there is no authorizeUri\n if (!state.authorizeUri) {\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // build the redirect uri\n const redirectParams = [\n \"response_type=code\",\n \"client_id=\" + encodeURIComponent(clientId || \"\"),\n \"scope=\" + encodeURIComponent(scope),\n \"redirect_uri=\" + encodeURIComponent(redirectUri),\n \"aud=\" + encodeURIComponent(serverUrl),\n \"state=\" + encodeURIComponent(stateKey)\n ];\n\n // also pass this in case of EHR launch\n if (launch) {\n redirectParams.push(\"launch=\" + encodeURIComponent(launch));\n }\n\n if (shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) {\n let codes = await env.security.generatePKCEChallenge()\n Object.assign(state, codes);\n await storage.set(stateKey, state);\n redirectParams.push(\"code_challenge=\" + state.codeChallenge);// note that the challenge is ALREADY encoded properly\n redirectParams.push(\"code_challenge_method=S256\");\n }\n \n redirectUrl = state.authorizeUri + \"?\" + redirectParams.join(\"&\");\n\n if (noRedirect) {\n return redirectUrl;\n }\n\n if (target && isBrowser()) {\n let win: Window;\n\n win = await getTargetWindow(target, width, height);\n\n if (win !== self) {\n try {\n // Also remove any old state from the target window and then\n // transfer the current state there\n win.sessionStorage.removeItem(oldKey);\n win.sessionStorage.setItem(stateKey, JSON.stringify(state));\n } catch (ex) {\n _debug(`Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n win = self;\n }\n }\n\n if (win !== self) {\n try {\n win.location.href = redirectUrl;\n self.addEventListener(\"message\", onMessage);\n } catch (ex) {\n _debug(`Failed to modify window.location. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n self.location.href = redirectUrl;\n }\n } else {\n self.location.href = redirectUrl;\n }\n\n return;\n }\n else {\n return await env.redirect(redirectUrl);\n }\n}\n\nfunction shouldIncludeChallenge(S256supported: boolean, pkceMode?: string) {\n if (pkceMode === \"disabled\") {\n return false;\n }\n if (pkceMode === \"unsafeV1\") {\n return true;\n }\n if (pkceMode === \"required\") {\n if (!S256supported) {\n throw new Error(\"Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration.\");\n }\n return true;\n }\n return S256supported;\n}\n\n/**\n * Checks if called within a frame. Only works in browsers!\n * If the current window has a `parent` or `top` properties that refer to\n * another window, returns true. If trying to access `top` or `parent` throws an\n * error, returns true. Otherwise returns `false`.\n */\nexport function isInFrame() {\n try {\n return self !== top && parent !== self;\n } catch (e) {\n return true;\n }\n}\n\n/**\n * Checks if called within another window (popup or tab). Only works in browsers!\n * To consider itself called in a new window, this function verifies that:\n * 1. `self === top` (not in frame)\n * 2. `!!opener && opener !== self` The window has an opener\n * 3. `!!window.name` The window has a `name` set\n */\nexport function isInPopUp() {\n try {\n return self === top &&\n !!opener &&\n opener !== self &&\n !!window.name;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Another window can send a \"completeAuth\" message to this one, making it to\n * navigate to e.data.url\n * @param e The message event\n */\nexport function onMessage(e: MessageEvent) {\n if (e.data.type == \"completeAuth\" && e.origin === new URL(self.location.href).origin) {\n window.removeEventListener(\"message\", onMessage);\n window.location.href = e.data.url;\n }\n}\n\n/**\n * The ready function should only be called on the page that represents\n * the redirectUri. We typically land there after a redirect from the\n * authorization server, but this code will also be executed upon subsequent\n * navigation or page refresh.\n */\nexport async function ready(env: fhirclient.Adapter, options: fhirclient.ReadyOptions = {}): Promise\n{\n const url = env.getUrl();\n const Storage = env.getStorage();\n const params = url.searchParams;\n\n let key = params.get(\"state\");\n const code = params.get(\"code\");\n const authError = params.get(\"error\");\n const authErrorDescription = params.get(\"error_description\");\n\n if (!key) {\n key = await Storage.get(SMART_KEY);\n }\n\n // Start by checking the url for `error` and `error_description` parameters.\n // This happens when the auth server rejects our authorization attempt. In\n // this case it has no other way to tell us what the error was, other than\n // appending these parameters to the redirect url.\n // From client's point of view, this is not very reliable (because we can't\n // know how we have landed on this page - was it a redirect or was it loaded\n // manually). However, if `ready()` is being called, we can assume\n // that the url comes from the auth server (otherwise the app won't work\n // anyway).\n if (authError || authErrorDescription) {\n throw new Error([\n authError,\n authErrorDescription\n ].filter(Boolean).join(\": \"));\n }\n\n debug(\"key: %s, code: %s\", key, code);\n\n // key might be coming from the page url so it might be empty or missing\n assert(key, \"No 'state' parameter found. Please (re)launch the app.\");\n\n // Check if we have a previous state\n let state = (await Storage.get(key)) as fhirclient.ClientState;\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n // If we are in a popup window or an iframe and the authorization is\n // complete, send the location back to our opener and exit.\n if (isBrowser() && state && !state.completeInTarget) {\n\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n // we are about to return to the opener/parent where completeAuth will\n // be called again. In rare cases the opener or parent might also be\n // a frame or popup. Then inFrame or inPopUp will be true but we still\n // have to stop going up the chain. To guard against that weird form of\n // recursion we pass one additional parameter to the url which we later\n // remove.\n if ((inFrame || inPopUp) && !url.searchParams.get(\"complete\")) {\n url.searchParams.set(\"complete\", \"1\");\n const { href, origin } = url;\n if (inFrame) {\n parent.postMessage({ type: \"completeAuth\", url: href }, origin);\n }\n if (inPopUp) {\n opener.postMessage({ type: \"completeAuth\", url: href }, origin);\n window.close();\n }\n\n return new Promise(() => { /* leave it pending!!! */ });\n }\n }\n\n url.searchParams.delete(\"complete\");\n\n // Do we have to remove the `code` and `state` params from the URL?\n const hasState = params.has(\"state\");\n\n if (isBrowser() && getPath(env, \"options.replaceBrowserHistory\") && (code || hasState)) {\n // `code` is the flag that tell us to request an access token.\n // We have to remove it, otherwise the page will authorize on\n // every load!\n if (code) {\n params.delete(\"code\");\n debug(\"Removed code parameter from the url.\");\n }\n\n // If we have `fullSessionStorageSupport` it means we no longer\n // need the `state` key. It will be stored to a well know\n // location - sessionStorage[SMART_KEY]. However, no\n // fullSessionStorageSupport means that this \"well know location\"\n // might be shared between windows and tabs. In this case we\n // MUST keep the `state` url parameter.\n if (hasState && fullSessionStorageSupport) {\n params.delete(\"state\");\n debug(\"Removed state parameter from the url.\");\n }\n\n // If the browser does not support the replaceState method for the\n // History Web API, the \"code\" parameter cannot be removed. As a\n // consequence, the page will (re)authorize on every load. The\n // workaround is to reload the page to new location without those\n // parameters. If that is not acceptable replaceBrowserHistory\n // should be set to false.\n if (window.history.replaceState) {\n window.history.replaceState({}, \"\", url.href);\n }\n }\n\n // If the state does not exist, it means the page has been loaded directly.\n assert(state, \"No state found! Please (re)launch the app.\");\n\n // Assume the client has already completed a token exchange when\n // there is no code (but we have a state) or access token is found in state\n const authorized = !code || state.tokenResponse?.access_token;\n\n // If we are authorized already, then this is just a reload.\n // Otherwise, we have to complete the code flow\n if (!authorized && state.tokenUri) {\n\n assert(code, \"'code' url parameter is required\");\n\n debug(\"Preparing to exchange the code for access token...\");\n const requestOptions = await buildTokenRequest(env, {\n code,\n state,\n clientPublicKeySetUrl: options.clientPublicKeySetUrl,\n privateKey: options.privateKey || state.clientPrivateJwk\n });\n debug(\"Token request options: %O\", requestOptions);\n\n // The EHR authorization server SHALL return a JSON structure that\n // includes an access token or a message indicating that the\n // authorization request has been denied.\n const tokenResponse = await request(state.tokenUri, requestOptions);\n debug(\"Token response: %O\", tokenResponse);\n assert(tokenResponse.access_token, \"Failed to obtain access token.\");\n\n // Now we need to determine when is this authorization going to expire\n state.expiresAt = getAccessTokenExpiration(tokenResponse, env);\n\n // save the tokenResponse so that we don't have to re-authorize on\n // every page reload\n state = { ...state, tokenResponse };\n await Storage.set(key, state);\n debug(\"Authorization successful!\");\n }\n else {\n debug(state.tokenResponse?.access_token ?\n \"Already authorized\" :\n \"No authorization needed\"\n );\n }\n\n if (fullSessionStorageSupport) {\n await Storage.set(SMART_KEY, key);\n }\n\n const client = new Client(env, state);\n debug(\"Created client instance: %O\", client);\n return client;\n}\n\n/**\n * Builds the token request options. Does not make the request, just\n * creates it's configuration and returns it in a Promise.\n */\nexport async function buildTokenRequest(\n env: fhirclient.Adapter,\n {\n code,\n state,\n clientPublicKeySetUrl,\n privateKey\n }: {\n /**\n * The `code` URL parameter received from the auth redirect\n */\n code: string,\n \n /**\n * The app state\n */\n state: fhirclient.ClientState\n\n /**\n * If provided overrides the `clientPublicKeySetUrl` from the authorize\n * options (if any). Used for `jku` token header in case of asymmetric auth.\n */\n clientPublicKeySetUrl?: string\n\n /**\n * Can be a private JWK, or an object with alg, kid and key properties,\n * where `key` is an un-extractable private CryptoKey object.\n */\n privateKey?: fhirclient.JWK | {\n key: CryptoKey\n alg: \"RS384\" | \"ES384\"\n kid: string\n }\n }\n): Promise\n{\n const { redirectUri, clientSecret, tokenUri, clientId, codeVerifier } = state;\n\n assert(redirectUri, \"Missing state.redirectUri\");\n assert(tokenUri, \"Missing state.tokenUri\");\n assert(clientId, \"Missing state.clientId\");\n\n const requestOptions: Record = {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: `code=${code}&grant_type=authorization_code&redirect_uri=${\n encodeURIComponent(redirectUri)}`\n };\n\n // For public apps, authentication is not possible (and thus not required),\n // since a client with no secret cannot prove its identity when it issues a\n // call. (The end-to-end system can still be secure because the client comes\n // from a known, https protected endpoint specified and enforced by the\n // redirect uri.) For confidential apps, an Authorization header using HTTP\n // Basic authentication is required, where the username is the app’s\n // client_id and the password is the app’s client_secret (see example).\n if (clientSecret) {\n requestOptions.headers.authorization = \"Basic \" + env.btoa(\n clientId + \":\" + clientSecret\n );\n debug(\n \"Using state.clientSecret to construct the authorization header: %s\",\n requestOptions.headers.authorization\n );\n }\n \n // Asymmetric auth\n else if (privateKey) {\n\n const pk = \"key\" in privateKey ?\n privateKey.key as CryptoKey:\n await env.security.importJWK(privateKey as fhirclient.JWK)\n\n const jwtHeaders = {\n typ: \"JWT\",\n kid: privateKey.kid,\n jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl\n };\n\n const jwtClaims = {\n iss: clientId,\n sub: clientId,\n aud: tokenUri,\n jti: env.base64urlencode(env.security.randomBytes(32)),\n exp: getTimeInFuture(120) // two minutes in the future\n };\n \n const clientAssertion = await env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims);\n requestOptions.body += `&client_assertion_type=${encodeURIComponent(\"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\")}`;\n requestOptions.body += `&client_assertion=${encodeURIComponent(clientAssertion)}`;\n debug(\"Using state.clientPrivateJwk to add a client_assertion to the POST body\")\n }\n \n // Public client\n else {\n debug(\"Public client detected; adding state.clientId to the POST body\");\n requestOptions.body += `&client_id=${encodeURIComponent(clientId)}`;\n }\n\n if (codeVerifier) {\n debug(\"Found state.codeVerifier, adding to the POST body\")\n // Note that the codeVerifier is ALREADY encoded properly \n requestOptions.body += \"&code_verifier=\" + codeVerifier;\n }\n \n return requestOptions as RequestInit;\n}\n\n/**\n * This function can be used when you want to handle everything in one page\n * (no launch endpoint needed). You can think of it as if it does:\n * ```js\n * authorize(options).then(ready)\n * ```\n *\n * **Be careful with init()!** There are some details you need to be aware of:\n *\n * 1. It will only work if your launch_uri is the same as your redirect_uri.\n * While this should be valid, we can’t promise that every EHR will allow you\n * to register client with such settings.\n * 2. Internally, `init()` will be called twice. First it will redirect to the\n * EHR, then the EHR will redirect back to the page where init() will be\n * called again to complete the authorization. This is generally fine,\n * because the returned promise will only be resolved once, after the second\n * execution, but please also consider the following:\n * - You should wrap all your app’s code in a function that is only executed\n * after `init()` resolves!\n * - Since the page will be loaded twice, you must be careful if your code\n * has global side effects that can persist between page reloads\n * (for example writing to localStorage).\n * 3. For standalone launch, only use init in combination with offline_access\n * scope. Once the access_token expires, if you don’t have a refresh_token\n * there is no way to re-authorize properly. We detect that and delete the\n * expired access token, but it still means that the user will have to\n * refresh the page twice to re-authorize.\n * @param env The adapter\n * @param authorizeOptions The authorize options\n */\nexport async function init(\n env: fhirclient.Adapter,\n authorizeOptions: fhirclient.AuthorizeParams,\n readyOptions?: fhirclient.ReadyOptions\n): Promise\n{\n const url = env.getUrl();\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n // if `code` and `state` params are present we need to complete the auth flow\n if (code && state) {\n return ready(env, readyOptions);\n }\n\n // Check for existing client state. If state is found, it means a client\n // instance have already been created in this session and we should try to\n // \"revive\" it.\n const storage = env.getStorage();\n const key = state || await storage.get(SMART_KEY);\n const cached = await storage.get(key);\n if (cached) {\n return new Client(env, cached);\n }\n\n // Otherwise try to launch\n return authorize(env, authorizeOptions).then(() => {\n // `init` promises a Client but that cannot happen in this case. The\n // browser will be redirected (unload the page and be redirected back\n // to it later and the same init function will be called again). On\n // success, authorize will resolve with the redirect url but we don't\n // want to return that from this promise chain because it is not a\n // Client instance. At the same time, if authorize fails, we do want to\n // pass the error to those waiting for a client instance.\n return new Promise(() => { /* leave it pending!!! */ });\n });\n}\n","export default class Storage\n{\n /**\n * Gets the value at `key`. Returns a promise that will be resolved\n * with that value (or undefined for missing keys).\n */\n async get(key: string): Promise\n {\n const value = sessionStorage[key];\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /**\n * Sets the `value` on `key` and returns a promise that will be resolved\n * with the value that was set.\n */\n async set(key: string, value: any): Promise\n {\n sessionStorage[key] = JSON.stringify(value);\n return value;\n }\n\n /**\n * Deletes the value at `key`. Returns a promise that will be resolved\n * with true if the key was deleted or with false if it was not (eg. if\n * did not exist).\n */\n async unset(key: string): Promise\n {\n if (key in sessionStorage) {\n delete sessionStorage[key];\n return true;\n }\n return false;\n }\n\n}\n","// This map contains reusable debug messages (only those used in multiple places)\nexport default {\n expired : \"Session expired! Please re-launch the app\",\n noScopeForId : \"Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.\",\n noIfNoAuth : \"You are trying to get %s but the app is not authorized yet.\",\n noFreeContext: \"Please don't use open fhir servers if you need to access launch context items like the %S.\"\n};\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.7';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = typeof btoa === 'function' ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = typeof atob === 'function' ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar fround = require('../internals/math-fround');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = globalThis[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = globalThis[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = globalThis.Array;\nvar RangeError = globalThis.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(fround(number), 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var pack = conversion(+value);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n type: ARRAY_BUFFER,\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) {\n this.byteLength = byteLength;\n this.detached = false;\n }\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferState = getInternalArrayBufferState(buffer);\n var bufferLength = bufferState.byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);\n setInternalState(this, {\n type: DATA_VIEW,\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset,\n bytes: bufferState.bytes\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n addGetter($DataView, 'buffer', getInternalDataViewState);\n addGetter($DataView, 'byteLength', getInternalDataViewState);\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new, sonar/inconsistent-function-call -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new, sonar/inconsistent-function-call -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer);\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n\n copyConstructorProperties($ArrayBuffer, NativeArrayBuffer);\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n result = IS_CONSTRUCTOR ? new this() : [];\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return -1;\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n aCallable(callbackfn);\n if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw new $TypeError(REDUCE_EMPTY);\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar arraySlice = require('../internals/array-slice');\n\nvar floor = Math.floor;\n\nvar sort = function (array, comparefn) {\n var length = array.length;\n\n if (length < 8) {\n // insertion sort\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n }\n } else {\n // merge sort\n var middle = floor(length / 2);\n var left = sort(arraySlice(array, 0, middle), comparefn);\n var right = sort(arraySlice(array, middle), comparefn);\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n }\n }\n\n return array;\n};\n\nmodule.exports = sort;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n try {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","'use strict';\nvar UA = require('../internals/environment-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegExp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) !== 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () {\n execCalled = true;\n return null;\n };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n }\n return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n var list = [];\n var i = 0;\n for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nmodule.exports = function (a, b) {\n try {\n // eslint-disable-next-line no-console -- safe\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number !== number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number !== number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent += eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[index - 1] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa += pow(2, mantissaLength);\n exponent -= eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n }\n\n return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\n\nvar EPSILON = 2.220446049250313e-16; // Number.EPSILON\nvar INVERSE_EPSILON = 1 / EPSILON;\n\nvar roundTiesToEven = function (n) {\n return n + INVERSE_EPSILON - INVERSE_EPSILON;\n};\n\nmodule.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) {\n var n = +x;\n var absolute = abs(n);\n var s = sign(n);\n if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON;\n var a = (1 + FLOAT_EPSILON / EPSILON) * absolute;\n var result = a - (a - absolute);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity;\n return s * result;\n};\n","'use strict';\nvar floatRound = require('../internals/math-float-round');\n\nvar FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23;\nvar FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104\nvar FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126;\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE);\n};\n","'use strict';\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n var n = +x;\n // eslint-disable-next-line no-self-compare -- NaN check\n return n === 0 || n !== n ? n : n < 0 ? -1 : 1;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n var queue = new Queue();\n\n var flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (fn = queue.get()) try {\n fn();\n } catch (error) {\n if (queue.head) notify();\n throw error;\n }\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // `webpack` dev server bug on IE global methods - use bind(fn, global)\n macrotask = bind(macrotask, globalThis);\n notify = function () {\n macrotask(flush);\n };\n }\n\n microtask = function (fn) {\n if (!queue.head) notify();\n queue.add(fn);\n };\n}\n\nmodule.exports = microtask;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw new $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol('assign detection');\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","'use strict';\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n var tail = this.tail;\n if (tail) tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n var next = this.head = entry.next;\n if (next === null) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') !== null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n if (!DESCRIPTORS) return globalThis[name];\n var descriptor = getOwnPropertyDescriptor(globalThis, name);\n return descriptor && descriptor.value;\n};\n","'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineBuiltInAccessor(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.38.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw new $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw new $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue === n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = globalThis.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n globalThis.addEventListener &&\n isCallable(globalThis.postMessage) &&\n !globalThis.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n globalThis.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw new $RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar round = Math.round;\n\nmodule.exports = function (it) {\n var value = round(it);\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toUint8Clamped = require('../internals/to-uint8-clamped');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = globalThis.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar addGetter = function (it, key) {\n defineBuiltInAccessor(it, key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = globalThis[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw new RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw new RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return arrayFromConstructorAndList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return arrayFromConstructorAndList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\n/* eslint-disable no-new, sonar/inconsistent-function-call -- required for testing */\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar Int8Array = globalThis.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","'use strict';\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'https://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'https://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('https://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('https://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('https://x', undefined).host !== 'x';\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = globalThis[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n switch (state.kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n join: function join(separator) {\n return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return nativeSlice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n setArrayLength(O, len - actualDeleteCount + insertCount);\n return A;\n }\n});\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineBuiltInAccessor(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: globalThis.globalThis !== globalThis }, {\n globalThis: globalThis\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = globalThis[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = globalThis.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n // fast equal of /^0b[01]+$/i\n case 66:\n case 98:\n radix = 2;\n maxCode = 49;\n break;\n // fast equal of /^0o[0-7]+$/i\n case 79:\n case 111:\n radix = 8;\n maxCode = 55;\n break;\n default:\n return +it;\n }\n digits = stringSlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n // includes check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n","'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state === FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(new TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n globalThis.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, globalThis, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, globalThis, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: null\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state === PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n var capabilityReject = capability.reject;\n capabilityReject(r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target === newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = globalThis.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = globalThis.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n // eslint-disable-next-line sonar/inconsistent-function-call -- required for testing\n return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = create(null);\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr += charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n result += chr;\n // ignore non-capturing groups\n if (stringSlice(string, index + 1, index + 3) === '?:') {\n continue;\n }\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(globalThis, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');\n elements[i] = code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n } return join(elements, '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n var fullUnicode;\n if (global) {\n fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n\n var results = [];\n var result;\n while (true) {\n result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n var replacement;\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length !== 4 ||\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n } : nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (!BUGGY) {\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n }\n\n var C = speciesConstructor(rx, RegExp);\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n var $this = this === undefined ? globalThis : this;\n if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor($this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty($this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = globalThis.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n && TypedArrayPrototype.values\n && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = globalThis.RangeError;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw new RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = globalThis.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = globalThis.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = globalThis.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.from-code-point');\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar TypeError = globalThis.TypeError;\nvar encodeURIComponent = globalThis.encodeURIComponent;\nvar fromCharCode = String.fromCharCode;\nvar fromCodePoint = getBuiltIn('String', 'fromCodePoint');\nvar $parseInt = parseInt;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar plus = /\\+/g;\nvar FALLBACK_REPLACER = '\\uFFFD';\nvar VALID_HEX = /^[0-9a-f]+$/i;\n\nvar parseHexOctet = function (string, start) {\n var substr = stringSlice(string, start, start + 2);\n if (!exec(VALID_HEX, substr)) return NaN;\n\n return $parseInt(substr, 16);\n};\n\nvar getLeadingOnes = function (octet) {\n var count = 0;\n for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {\n count++;\n }\n return count;\n};\n\nvar utf8Decode = function (octets) {\n var codePoint = null;\n\n switch (octets.length) {\n case 1:\n codePoint = octets[0];\n break;\n case 2:\n codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);\n break;\n case 3:\n codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);\n break;\n case 4:\n codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);\n break;\n }\n\n return codePoint > 0x10FFFF ? null : codePoint;\n};\n\nvar decode = function (input) {\n input = replace(input, plus, ' ');\n var length = input.length;\n var result = '';\n var i = 0;\n\n while (i < length) {\n var decodedChar = charAt(input, i);\n\n if (decodedChar === '%') {\n if (charAt(input, i + 1) === '%' || i + 3 > length) {\n result += '%';\n i++;\n continue;\n }\n\n var octet = parseHexOctet(input, i + 1);\n\n // eslint-disable-next-line no-self-compare -- NaN check\n if (octet !== octet) {\n result += decodedChar;\n i++;\n continue;\n }\n\n i += 2;\n var byteSequenceLength = getLeadingOnes(octet);\n\n if (byteSequenceLength === 0) {\n decodedChar = fromCharCode(octet);\n } else {\n if (byteSequenceLength === 1 || byteSequenceLength > 4) {\n result += FALLBACK_REPLACER;\n i++;\n continue;\n }\n\n var octets = [octet];\n var sequenceIndex = 1;\n\n while (sequenceIndex < byteSequenceLength) {\n i++;\n if (i + 3 > length || charAt(input, i) !== '%') break;\n\n var nextByte = parseHexOctet(input, i + 1);\n\n // eslint-disable-next-line no-self-compare -- NaN check\n if (nextByte !== nextByte) {\n i += 3;\n break;\n }\n if (nextByte > 191 || nextByte < 128) break;\n\n push(octets, nextByte);\n i += 2;\n sequenceIndex++;\n }\n\n if (octets.length !== byteSequenceLength) {\n result += FALLBACK_REPLACER;\n continue;\n }\n\n var codePoint = utf8Decode(octets);\n if (codePoint === null) {\n result += FALLBACK_REPLACER;\n } else {\n decodedChar = fromCodePoint(codePoint);\n }\n }\n }\n\n result += decodedChar;\n i++;\n }\n\n return result;\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n target: getInternalParamsState(params).entries,\n index: 0,\n kind: kind\n });\n}, URL_SEARCH_PARAMS, function next() {\n var state = getInternalIteratorState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n var entry = target[index];\n switch (state.kind) {\n case 'keys': return createIterResultObject(entry.key, false);\n case 'values': return createIterResultObject(entry.value, false);\n } return createIterResultObject([entry.key, entry.value], false);\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var entries = this.entries;\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw new TypeError('Expected sequence with length 2');\n push(entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var entries = this.entries;\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(entries, {\n key: decode(shift(entry)),\n value: decode(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var state = setInternalState(this, new URLSearchParamsState(init));\n if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 2);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n if (!DESCRIPTORS) this.length++;\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name /* , value */) {\n var state = getInternalParamsState(this);\n var length = validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index];\n if (entry.key === key && (value === undefined || entry.value === value)) {\n splice(entries, index, 1);\n if (value !== undefined) break;\n } else index++;\n }\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name /* , value */) {\n var entries = getInternalParamsState(this).entries;\n var length = validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index++];\n if (entry.key === key && (value === undefined || entry.value === value)) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n return getInternalParamsState(this).entries.length;\n },\n configurable: true,\n enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar globalThis = require('../internals/global-this');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = globalThis.URL;\nvar TypeError = globalThis.TypeError;\nvar parseInt = globalThis.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] === '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part === '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) === '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix === 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index === partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() === ':') {\n if (charAt(input, 1) !== ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex === 8) return;\n if (chr() === ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() === '.') {\n if (length === 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() === '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece === 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;\n }\n if (numbersSeen !== 4) return;\n break;\n } else if (chr() === ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex !== 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n return currLength > maxLength ? currStart : maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n }\n return join(result, '.');\n }\n\n // ipv6\n if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n }\n\n return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length === 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length === 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw new TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw new TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {\n buffer += toLowerCase(chr);\n } else if (chr === ':') {\n if (stateOverride && (\n (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||\n (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme === 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme === 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme === url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] === '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr === '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme === 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr === '/' && codePoints[pointer + 1] === '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr === '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr === EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr === '/' || (chr === '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr === '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr === '/' || chr === '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr === '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr !== '/' && chr !== '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr === '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint === ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer === '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme === 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr === ':' && !seenBracket) {\n if (buffer === '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride === HOSTNAME) return;\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer === '') return INVALID_HOST;\n if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr === '[') seenBracket = true;\n else if (chr === ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer !== '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr === '/' || chr === '\\\\') state = FILE_SLASH;\n else if (base && base.scheme === 'file') {\n switch (chr) {\n case EOF:\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n break;\n case '?':\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n break;\n case '#':\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n break;\n default:\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr === '/' || chr === '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr === EOF || chr === '/' || chr === '\\\\' || chr === '?' || chr === '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer === '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host === 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr !== '/' && chr !== '\\\\') continue;\n } else if (!stateOverride && chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n state = PATH;\n if (chr !== '/') continue;\n } break;\n\n case PATH:\n if (\n chr === EOF || chr === '/' ||\n (chr === '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr === '?' || chr === '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr === '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) === '[') {\n if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme === 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username !== '' || this.password !== '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme === 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw new TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme === 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme === 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port === '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search === '') {\n this.query = null;\n } else {\n if (charAt(search, 0) === '?') search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash === '') {\n this.fragment = null;\n return;\n }\n if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return call(URL.prototype.toString, this);\n }\n});\n","import './webcrypto-shim.mjs'\nexport default window.crypto\n","/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov \n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empy input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empy input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n\n export default {} // section modified by isomorphic-webcrypto build \n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8932);\n"],"names":["_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","prototype","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","bind","__proto__","_setPrototypeOf","p","_assertThisInitialized","self","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_isNativeReflectConstruct","result","Super","NewTarget","this","constructor","arguments","apply","_possibleConstructorReturn","_get","get","property","receiver","base","object","hasOwnProperty","_superPropBase","desc","getOwnPropertyDescriptor","value","Emitter","type","callback","options","listeners","push","stack","l","splice","event","stackToCall","slice","listener","Promise","resolve","then","once","removeEventListener","defaultPrevented","AbortSignal","_Emitter","subClass","superClass","create","_inherits","_super","_this","undefined","aborted","onabort","AbortController","reason","Event","document","createEvent","initEvent","createEventObject","bubbles","cancelable","signalReason","Error","name","DOMException","err","signal","dispatchEvent","Symbol","toStringTag","__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL","console","log","Request","polyfillNeeded","g","warned","exports","formatArgs","args","useColors","namespace","module","humanize","diff","c","color","index","lastC","replace","match","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","process","env","DEBUG","window","__nwjs","navigator","userAgent","toLowerCase","documentElement","style","WebkitAppearance","firebug","exception","table","m","parseInt","localStorage","localstorage","destroy","warn","colors","debug","require","formatters","j","v","JSON","stringify","message","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","_len","Array","_key","enabled","curr","Number","Date","ms","prev","coerce","unshift","format","formatter","val","selectColor","extend","set","init","delimiter","newDebug","toNamespace","regexp","toString","substring","default","disable","concat","_toConsumableArray2","names","map","skips","join","enable","split","len","RegExp","test","keys","forEach","hash","charCodeAt","Math","abs","lib_1","strings_1","settings_1","Response","FHIRCLIENT_PURE","contextualize","_x","_x2","_contextualize","_asyncToGenerator2","_regenerator","mark","_callee9","requestOptions","client","contextualURL","_contextualURL","wrap","_context9","next","_callee8","_url","resourceType","conformance","searchParam","_context8","pathname","pop","assert","patientCompartment","indexOf","fetchConformanceStatement","state","serverUrl","sent","getPatientParam","searchParams","patient","id","abrupt","href","stop","_x9","absolute","URL","t0","url","resolveRefs","obj","fhirOptions","cache","paths","makeArray","resolveReferences","filter","path","String","trim","groups","task","sort","group","all","graph","node","getPath","isArray","item","ref","reference","refId","headers","request","res","getRef","sub","setPath","catch","ex","status","resolveRef","Client","_createClass2","environment","_classCallCheck2","units","_state","_refreshTask","getPatientId","read","_objectSpread","reject","_callee","_context","encounter","getEncounterId","user","fhirUser","getFhirUser","getUserId","getUserType","connect","fhir","fhirJs","baseUrl","accessToken","getState","auth","token","_this$state","username","password","pass","api","patientId","tokenResponse","scope","noScopeForId","authorizeUri","noIfNoAuth","noFreeContext","idToken","id_token","hasOpenid","hasProfile","hasFhirUser","jwtDecode","getIdToken","profile","_this$state2","btoa","_clearState2","_callee2","_context2","getStorage","SMART_KEY","unset","resource","method","body","_patch2","_callee3","patch","_args3","_context3","assertJsonPatch","_x3","_x4","_request","_callee7","_resolvedRefs","_a","debugRequest","job","response","_this2","_args7","_context7","flat","pageLimit","useRefreshToken","onPage","refreshIfNeeded","authHeader","getAuthorizationHeader","authorization","includeResponse","_ref3","_callee4","_context4","_clearState","expired","_x6","data","_ref4","_callee5","_data","_context5","entry","_x7","_ref5","_callee6","links","nextPage","_context6","link","find","relation","assign","references","_x8","_x5","refreshToken","expiresAt","now","refresh","_this3","debugRefresh","_b","refresh_token","tokenUri","scopes","hasOfflineAccess","search","hasOnlineAccess","refreshRequestOptions","credentials","refreshTokenWithCredentials","mode","encodeURIComponent","_this$state3","clientSecret","clientId","access_token","getAccessTokenExpiration","finally","observations","byCode","byCodes","metadata","fhirVersion","getFhirVersion","fhirVersions","HttpError","_Error","_callSuper","statusText","statusCode","_inherits2","_parse","_body","bodyUsed","json","error_description","text","_wrapNativeSuper2","smart_1","Client_1","BrowserStorage_1","security","js_base64_1","BrowserAdapter","_storage","replaceBrowserHistory","fullSessionStorageSupport","getUrl","location","to","str","atob","input","encodeURL","fromUint8Array","decode","ready","authorize","utils","_adapter$getSmartApi","getSmartApi","fetch","Headers","FHIR","oauth2","settings","_interopRequireDefault","_defineProperty2","_objectWithoutProperties2","_typeof2","_excluded","ownKeys","t","getOwnPropertySymbols","getOwnPropertyDescriptors","defineProperties","HttpError_1","_debug","ensureNumerical","code","checkResponse","_checkResponse","resp","ok","parse","responseToJSON","loweCaseKeys","out","lowerKey","accept","getAndCache","segments","shift","arg","payload","ret","handleCodeableConcept","concept","observation","coding","_ref6","_getTargetWindow","width","height","targetWindow","_error","_targetWindow","winOrFrame","_args2","parent","top","open","screen","t1","frames","condition","cm","_ref2","kg","any","pq","createEmpty","reduce","idx","arr","strLength","charSet","charAt","floor","random","secondsAhead","from","expires_in","tokenBody","exp","bank","codes","meta","x","patientParams","operation","op","crypto","globalThis","subtle","isSecureContext","ALGS","ES384","namedCurve","RS384","modulusLength","publicExponent","Uint8Array","randomBytes","count","getRandomValues","digestSha256","_digestSha","prepared","TextEncoder","encode","digest","generatePKCEChallenge","_ref","inputBytes","codeVerifier","codeChallenge","_args","_importJWK","jwk","alg","key_ops","includes","importKey","ext","_signCompactJws","privateKey","header","jwtHeader","jwtPayload","jwtAuthenticatedContent","signature","sign","algorithm","isBrowser","fetchWellKnownJson","getSecurityExtensions","authorization_endpoint","token_endpoint","registrationUri","registration_endpoint","codeChallengeMethods","code_challenge_methods_supported","getSecurityExtensionsFromWellKnownJson","extensions","extension","valueUri","getSecurityExtensionsFromConformanceStatement","_authorize","params","urlISS","cfg","fakeTokenResponse","encounterId","pkceMode","clientPublicKeySetUrl","redirect_uri","client_id","iss","launch","fhirServiceUrl","redirectUri","noRedirect","_params$scope","completeInTarget","clientPrivateJwk","inFrame","inPopUp","oldKey","stateKey","redirectUrl","redirectParams","win","issMatch","relative","isInFrame","isInPopUp","randomString","redirect","shouldIncludeChallenge","getTargetWindow","sessionStorage","addEventListener","onMessage","S256supported","opener","origin","_ready","Storage","authError","authErrorDescription","hasState","postMessage","close","delete","has","history","replaceState","buildTokenRequest","_buildTokenRequest","pk","jwtHeaders","jwtClaims","clientAssertion","importJWK","typ","kid","jku","aud","jti","base64urlencode","getTimeInFuture","signCompactJws","_init","authorizeOptions","readyOptions","cached","_set","_unset","global","__self__","F","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","items","iterator","done","append","getOwnPropertyNames","consumed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","oldValue","thisArg","values","entries","methods","upcased","toUpperCase","referrer","form","bytes","decodeURIComponent","bodyInit","clone","redirectStatuses","RangeError","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","responseText","ontimeout","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","send","polyfill","ponyfill","ctx","tab","version","VERSION","_hasBuffer","Buffer","_TD","TextDecoder","_TE","b64chs","b64tab","b64re","_fromCC","_U8Afrom","it","_mkUriSafe","src","m0","_tidyB64","s","btoaPolyfill","bin","u32","c0","c1","c2","asc","pad","_btoa","_fromUint8Array","u8a","strs","subarray","urlsafe","cb_utob","cc","re_utob","utob","u","_encode","encodeURI","re_btou","cb_btou","cccc","offset","btou","b","atobPolyfill","u24","r1","r2","_atob","_toUint8Array","a","toUint8Array","_unURI","_decode","_noEnum","extendString","_add","extendUint8Array","gBase64","fromBase64","toBase64","isValid","extendBuiltins","k","Base64","factory","h","d","w","plural","msAbs","n","isPlural","round","exec","parseFloat","isFinite","long","fmtShort","__esModule","arrayLikeToArray","asyncGeneratorStep","_next","_throw","isNativeReflectConstruct","toPropertyKey","Function","objectWithoutPropertiesLoose","propertyIsEnumerable","_typeof","assertThisInitialized","_regeneratorRuntime","asyncIterator","define","Generator","Context","makeInvokeMethod","tryCatch","f","y","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","awrap","async","reverse","rval","handle","complete","finish","delegateYield","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","toPrimitive","isNativeFunction","_wrapNativeSuper","Map","Wrapper","runtime","regeneratorRuntime","accidentalStrictMode","isCallable","tryToString","$TypeError","argument","isConstructor","isPossiblePrototype","$String","wellKnownSymbol","UNSCOPABLES","ArrayPrototype","S","unicode","Prototype","isObject","NAME","NATIVE_ARRAY_BUFFER","DESCRIPTORS","hasOwn","classof","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","proto","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","uncurryThis","FunctionName","defineBuiltIns","fails","anInstance","toIntegerOrInfinity","toLength","toIndex","fround","IEEE754","arrayFill","arraySlice","inheritIfRequired","copyConstructorProperties","setToStringTag","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","ARRAY_BUFFER","DATA_VIEW","PROTOTYPE","WRONG_INDEX","getInternalArrayBufferState","getterFor","getInternalDataViewState","setInternalState","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","DataViewPrototype","fill","packIEEE754","pack","unpackIEEE754","unpack","packInt8","number","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","isLittleEndian","store","intIndex","boolIsLittleEndian","start","byteOffset","conversion","INCORRECT_ARRAY_BUFFER_NAME","NaN","testView","$setInt8","setInt8","getInt8","setUint8","unsafe","detached","bufferState","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toObject","toAbsoluteIndex","lengthOfArrayLike","deletePropertyOrThrow","min","copyWithin","O","end","inc","argumentsLength","endPos","$forEach","STRICT_METHOD","arrayMethodIsStrict","callbackfn","list","$length","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","getIteratorMethod","$Array","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","step","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","$this","el","fromIndex","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","that","specificCreate","boundFunction","some","every","findIndex","filterReject","$lastIndexOf","lastIndexOf","NEGATIVE_ZERO","FORCED","searchElement","V8_VERSION","SPECIES","METHOD_NAME","array","foo","aCallable","REDUCE_EMPTY","IS_RIGHT","memo","left","right","SILENT_ON_NON_WRITABLE_LENGTH_SET","comparefn","element","middle","llength","rlength","lindex","rindex","originalArray","arraySpeciesConstructor","anObject","iteratorClose","fn","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","tag","tryGet","callee","getOwnPropertyDescriptorModule","definePropertyModule","source","exceptions","MATCH","error1","requireObjectCoercible","quot","string","attribute","p1","createPropertyDescriptor","bitmap","makeBuiltIn","getter","setter","defineGlobalProperty","simple","nonConfigurable","nonWritable","P","EXISTS","createElement","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","documentCreateElement","DOMTokenListPrototype","firefox","UA","Pebble","ENVIRONMENT","Deno","versions","v8","webkit","userAgentStartsWith","Bun","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","re","flags","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","$exec","doesNotExceedSafeInteger","flattenIntoArray","original","sourceLen","depth","mapper","elementLen","targetIndex","sourceIndex","mapFn","NATIVE_BIND","FunctionPrototype","$Function","factories","partArgs","argsLength","getDescriptor","uncurryThisWithBind","getMethod","isNullOrUndefined","Iterators","usingIterator","replacer","rawLength","keysLength","root","V","func","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","position","captures","namedCaptures","replacement","tailPos","symbols","ch","capture","check","getBuiltIn","pow","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","Infinity","nBits","dummy","NewTargetPrototype","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","facade","STATE","documentAll","noop","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","feature","detection","normalize","POLYFILL","NATIVE","isInteger","isRegExp","USE_SYMBOL_AS_UID","$Symbol","Result","stopped","ResultPrototype","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","callFn","kind","innerResult","innerError","IteratorPrototype","returnThis","IteratorConstructor","ENUMERABLE_NEXT","$","IS_PURE","createIteratorConstructor","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","PrototypeOfArrayIteratorPrototype","arrayIterator","CONFIGURABLE_LENGTH","TEMPLATE","arity","EPSILON","INVERSE_EPSILON","FLOAT_EPSILON","FLOAT_MAX_VALUE","FLOAT_MIN_VALUE","roundTiesToEven","floatRound","ceil","trunc","notify","toggle","safeGetBuiltIn","macrotask","Queue","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","microtask","queue","flush","domain","exit","head","enter","nextTick","createTextNode","observe","characterData","add","PromiseCapability","$$resolve","$$reject","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","A","B","symbol","alphabet","chr","T","activeXDocument","definePropertiesModule","enumBugKeys","html","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","display","appendChild","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","$getOwnPropertyNames","windowNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","$propertyIsEnumerable","NASHORN_BUG","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","pref","getOwnPropertyNamesModule","NativePromiseConstructor","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","newPromiseCapability","promiseCapability","checkCorrectnessOfIteration","Target","Source","tail","R","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","raw","sticky","charsAdded","strCopy","multiline","hasIndices","ignoreCase","dotAll","unicodeSets","regExpFlags","$RegExp","MISSED_STICKY","is","CONSTRUCTOR_NAME","TAG","SHARED","copyright","license","aConstructor","defaultConstructor","CONVERT_TO_STRING","pos","first","second","size","codeAt","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","$RangeError","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","output","counter","extra","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","baseMinusT","label","encoded","labels","whitespaces","ltrim","rtrim","SymbolPrototype","TO_PRIMITIVE","hint","NATIVE_SYMBOL","keyFor","$location","defer","channel","port","validateArgumentsLength","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","ONREADYSTATECHANGE","run","runner","eventListener","globalPostMessageDefer","protocol","host","handler","port2","port1","onmessage","importScripts","removeChild","setTimeout","max","integer","prim","BigInt","toPositiveInteger","BYTES","isSymbol","ordinaryToPrimitive","exoticToPrim","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","isIntegralNumber","toOffset","toUint8Clamped","typedArrayFrom","setSpecies","arrayFromConstructorAndList","nativeDefineProperty","nativeGetOwnPropertyDescriptor","BYTES_PER_ELEMENT","WRONG_LENGTH","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$len","typedArraySpeciesConstructor","isBigIntArray","toBigInt","thisIsBigIntArray","speciesConstructor","postfix","params2","toJSON","passed","required","wrappedWellKnownSymbolModule","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","arrayBufferModule","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","E","$filter","$find","addToUnscopables","FIND","SKIPS_HOLES","depthArg","$includes","defineIterator","createIterResultObject","ARRAY_ITERATOR","iterated","Arguments","nativeJoin","separator","$map","nativeSlice","HAS_SPECIES_SUPPORT","fin","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","itemsLength","arrayLength","getSortCompare","setArrayLength","deleteCount","insertCount","actualDeleteCount","actualStart","FUNCTION_NAME_EXISTS","nameRE","regExpExec","getReplacerFunction","$stringify","numberToString","tester","low","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","space","thisNumberValue","NUMBER","NativeNumber","PureNumberNamespace","NumberPrototype","NumberWrapper","primValue","third","radix","maxCode","digits","toNumber","toNumeric","$getOwnPropertySymbols","nativeKeys","newPromiseCapabilityModule","perform","iterate","capability","$promiseResolve","remaining","alreadyCalled","real","onRejected","Internal","OwnPromiseCapability","nativeThen","hostReportErrors","PromiseConstructorDetection","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","PromiseWrapper","promiseResolve","onFinally","isFunction","race","capabilityReject","PromiseConstructorWrapper","CHECK_WRAPPER","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","newTarget","$args","getRegExpFlags","proxyAccessor","NativeRegExp","SyntaxError","stringIndexOf","IS_NCG","CORRECT_NEW","RegExpWrapper","pattern","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","$toString","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","$fromCodePoint","fromCodePoint","elements","notARegExp","correctIsRegExpLogic","searchString","STRING_ITERATOR","point","createHTML","forcedStringHTMLMethod","fixRegExpWellKnownSymbolLogic","advanceStringIndex","nativeMatch","maybeCallNative","matcher","rx","fullUnicode","matchStr","getSubstitution","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","_","UNSAFE_SUBSTITUTE","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","replacerArgs","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","BUGGY","SPLIT","nativeSplit","internalSplit","limit","splitter","unicodeMatching","lim","z","$trim","forcedStringTrimMethod","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","defineSymbolToPrimitive","HIDDEN","QObject","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","fallbackDefineProperty","ObjectPrototypeDescriptor","setSymbolDescriptor","description","$defineProperties","properties","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","u$ArrayCopyWithin","$every","$fill","actualValue","fromSpeciesAndList","$findIndex","predicate","$indexOf","ArrayIterators","arrayValues","arrayKeys","arrayEntries","GENERIC","ITERATOR_IS_VALUES","typedArrayValues","$join","$reduceRight","$reduce","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","$some","ACCEPT_INCORRECT_ARGUMENTS","mod","expected","begin","beginIndex","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","createTypedArrayConstructor","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","USE_NATIVE_URL","arraySort","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","nativeFetch","NativeRequest","RequestPrototype","HeadersPrototype","$parseInt","plus","VALID_HEX","parseHexOctet","substr","getLeadingOnes","octet","mask","utf8Decode","octets","codePoint","decodedChar","byteSequenceLength","sequenceIndex","nextByte","replacements","serialize","URLSearchParamsIterator","URLSearchParamsState","parseObject","parseQuery","bindURL","update","entryIterator","entryNext","query","attributes","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","$value","getAll","found","headersHas","headersSet","wrapRequestOptions","RequestConstructor","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_C0_CONTROL_OR_SPACE","TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","baseState","failure","urlString","stateOverride","codePoints","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","fragment","cannotBeABaseURL","isSpecial","includesCredentials","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","parseIPv6","partsLength","numbers","part","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","_crypto","msCrypto","_subtle","webkitSubtle","_Crypto","Crypto","_SubtleCrypto","SubtleCrypto","isEdge","CryptoKey","Key","isIE","isWebkit","oid2str","str2oid","_fn","ka","kx","ku","b2jwk","jwkAlg","kty","isPrvKeyUse","isPubKeyUse","s2b","unescape","generateKey","exportKey","publicKey","a2s","info","b2der","prv","rsaComp","rsaKey","s2a","b2s","pkcs2jwk","decrypt","rej","oncomplete","encrypt","usages","der2b","jwk2pkcs","tl","tagLength","AesGcmEncryptResult","ciphertext","_digest","escape","extractable","rv","xlen","oid","use","amd","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/build/fhir-client.pure.js b/dist/build/fhir-client.pure.js new file mode 100644 index 00000000..82f9e538 --- /dev/null +++ b/dist/build/fhir-client.pure.js @@ -0,0 +1,4351 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./src/Client.ts": +/*!***********************!*\ + !*** ./src/Client.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +const lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); +const strings_1 = __webpack_require__(/*! ./strings */ "./src/strings.ts"); +const settings_1 = __webpack_require__(/*! ./settings */ "./src/settings.ts"); +// $lab:coverage:off$ +// @ts-ignore +const { + Response +} = true ? window : 0; +// $lab:coverage:on$ +const debug = lib_1.debug.extend("client"); +/** + * Adds patient context to requestOptions object to be used with [[Client.request]] + * @param requestOptions Can be a string URL (relative to the serviceUrl), or an + * object which will be passed to fetch() + * @param client Current FHIR client object containing patient context + * @return requestOptions object contextualized to current patient + */ +async function contextualize(requestOptions, client) { + const base = (0, lib_1.absolute)("/", client.state.serverUrl); + async function contextualURL(_url) { + const resourceType = _url.pathname.split("/").pop(); + (0, lib_1.assert)(resourceType, `Invalid url "${_url}"`); + (0, lib_1.assert)(settings_1.patientCompartment.indexOf(resourceType) > -1, `Cannot filter "${resourceType}" resources by patient`); + const conformance = await (0, lib_1.fetchConformanceStatement)(client.state.serverUrl); + const searchParam = (0, lib_1.getPatientParam)(conformance, resourceType); + _url.searchParams.set(searchParam, client.patient.id); + return _url.href; + } + if (typeof requestOptions == "string" || requestOptions instanceof URL) { + return { + url: await contextualURL(new URL(requestOptions + "", base)) + }; + } + requestOptions.url = await contextualURL(new URL(requestOptions.url + "", base)); + return requestOptions; +} +/** + * Gets single reference by id. Caches the result. + * @param refId + * @param cache A map to store the resolved refs + * @param client The client instance + * @param requestOptions Only signal and headers are currently used if provided + * @returns The resolved reference + * @private + */ +function getRef(refId, cache, client, requestOptions) { + if (!cache[refId]) { + const { + signal, + headers + } = requestOptions; + // Note that we set cache[refId] immediately! When the promise is + // settled it will be updated. This is to avoid a ref being fetched + // twice because some of these requests are executed in parallel. + cache[refId] = client.request({ + url: refId, + headers, + signal + }).then(res => { + cache[refId] = res; + return res; + }, error => { + delete cache[refId]; + throw error; + }); + } + return Promise.resolve(cache[refId]); +} +/** + * Resolves a reference in the given resource. + * @param obj FHIR Resource + */ +function resolveRef(obj, path, graph, cache, client, requestOptions) { + const node = (0, lib_1.getPath)(obj, path); + if (node) { + const isArray = Array.isArray(node); + return Promise.all((0, lib_1.makeArray)(node).filter(Boolean).map((item, i) => { + const ref = item.reference; + if (ref) { + return getRef(ref, cache, client, requestOptions).then(sub => { + if (graph) { + if (isArray) { + if (path.indexOf("..") > -1) { + (0, lib_1.setPath)(obj, `${path.replace("..", `.${i}.`)}`, sub); + } else { + (0, lib_1.setPath)(obj, `${path}.${i}`, sub); + } + } else { + (0, lib_1.setPath)(obj, path, sub); + } + } + }).catch(ex => { + /* ignore missing references */ + if (ex.status !== 404) { + throw ex; + } + }); + } + })); + } +} +/** + * Given a resource and a list of ref paths - resolves them all + * @param obj FHIR Resource + * @param fhirOptions The fhir options of the initiating request call + * @param cache A map to store fetched refs + * @param client The client instance + * @private + */ +function resolveRefs(obj, fhirOptions, cache, client, requestOptions) { + // 1. Sanitize paths, remove any invalid ones + let paths = (0, lib_1.makeArray)(fhirOptions.resolveReferences).filter(Boolean) // No false, 0, null, undefined or "" + .map(path => String(path).trim()).filter(Boolean); // No space-only strings + // 2. Remove duplicates + paths = paths.filter((p, i) => { + const index = paths.indexOf(p, i + 1); + if (index > -1) { + debug("Duplicated reference path \"%s\"", p); + return false; + } + return true; + }); + // 3. Early exit if no valid paths are found + if (!paths.length) { + return Promise.resolve(); + } + // 4. Group the paths by depth so that child refs are looked up + // after their parents! + const groups = {}; + paths.forEach(path => { + const len = path.split(".").length; + if (!groups[len]) { + groups[len] = []; + } + groups[len].push(path); + }); + // 5. Execute groups sequentially! Paths within same group are + // fetched in parallel! + let task = Promise.resolve(); + Object.keys(groups).sort().forEach(len => { + const group = groups[len]; + task = task.then(() => Promise.all(group.map(path => { + return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions); + }))); + }); + return task; +} +/** + * This is a FHIR client that is returned to you from the `ready()` call of the + * **SMART API**. You can also create it yourself if needed: + * + * ```js + * // BROWSER + * const client = FHIR.client("https://r4.smarthealthit.org"); + * + * // SERVER + * const client = smart(req, res).client("https://r4.smarthealthit.org"); + * ``` + */ +class Client { + /** + * Validates the parameters, creates an instance and tries to connect it to + * FhirJS, if one is available globally. + */ + constructor(environment, state) { + /** + * @category Utility + */ + this.units = lib_1.units; + const _state = typeof state == "string" ? { + serverUrl: state + } : state; + // Valid serverUrl is required! + (0, lib_1.assert)(_state.serverUrl && _state.serverUrl.match(/https?:\/\/.+/), "A \"serverUrl\" option is required and must begin with \"http(s)\""); + this.state = _state; + this.environment = environment; + this._refreshTask = null; + const client = this; + // patient api --------------------------------------------------------- + this.patient = { + get id() { + return client.getPatientId(); + }, + read: requestOptions => { + const id = this.patient.id; + return id ? this.request({ + ...requestOptions, + url: `Patient/${id}` + }) : Promise.reject(new Error("Patient is not available")); + }, + request: (requestOptions, fhirOptions = {}) => { + if (this.patient.id) { + return (async () => { + const options = await contextualize(requestOptions, this); + return this.request(options, fhirOptions); + })(); + } else { + return Promise.reject(new Error("Patient is not available")); + } + } + }; + // encounter api ------------------------------------------------------- + this.encounter = { + get id() { + return client.getEncounterId(); + }, + read: requestOptions => { + const id = this.encounter.id; + return id ? this.request({ + ...requestOptions, + url: `Encounter/${id}` + }) : Promise.reject(new Error("Encounter is not available")); + } + }; + // user api ------------------------------------------------------------ + this.user = { + get fhirUser() { + return client.getFhirUser(); + }, + get id() { + return client.getUserId(); + }, + get resourceType() { + return client.getUserType(); + }, + read: requestOptions => { + const fhirUser = this.user.fhirUser; + return fhirUser ? this.request({ + ...requestOptions, + url: fhirUser + }) : Promise.reject(new Error("User is not available")); + } + }; + // fhir.js api (attached automatically in browser) + // --------------------------------------------------------------------- + this.connect(environment.fhir); + } + /** + * This method is used to make the "link" between the `fhirclient` and the + * `fhir.js`, if one is available. + * **Note:** This is called by the constructor. If fhir.js is available in + * the global scope as `fhir`, it will automatically be linked to any [[Client]] + * instance. You should only use this method to connect to `fhir.js` which + * is not global. + */ + connect(fhirJs) { + if (typeof fhirJs == "function") { + const options = { + baseUrl: this.state.serverUrl.replace(/\/$/, "") + }; + const accessToken = this.getState("tokenResponse.access_token"); + if (accessToken) { + options.auth = { + token: accessToken + }; + } else { + const { + username, + password + } = this.state; + if (username && password) { + options.auth = { + user: username, + pass: password + }; + } + } + this.api = fhirJs(options); + const patientId = this.getState("tokenResponse.patient"); + if (patientId) { + this.patient.api = fhirJs({ + ...options, + patient: patientId + }); + } + } + return this; + } + /** + * Returns the ID of the selected patient or null. You should have requested + * "launch/patient" scope. Otherwise this will return null. + */ + getPatientId() { + const tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + // We have been authorized against this server but we don't know + // the patient. This should be a scope issue. + if (!tokenResponse.patient) { + if (!(this.state.scope || "").match(/\blaunch(\/patient)?\b/)) { + debug(strings_1.default.noScopeForId, "patient", "patient"); + } else { + // The server should have returned the patient! + debug("The ID of the selected patient is not available. Please check if your server supports that."); + } + return null; + } + return tokenResponse.patient; + } + if (this.state.authorizeUri) { + debug(strings_1.default.noIfNoAuth, "the ID of the selected patient"); + } else { + debug(strings_1.default.noFreeContext, "selected patient"); + } + return null; + } + /** + * Returns the ID of the selected encounter or null. You should have + * requested "launch/encounter" scope. Otherwise this will return null. + * Note that not all servers support the "launch/encounter" scope so this + * will be null if they don't. + */ + getEncounterId() { + const tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + // We have been authorized against this server but we don't know + // the encounter. This should be a scope issue. + if (!tokenResponse.encounter) { + if (!(this.state.scope || "").match(/\blaunch(\/encounter)?\b/)) { + debug(strings_1.default.noScopeForId, "encounter", "encounter"); + } else { + // The server should have returned the encounter! + debug("The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters."); + } + return null; + } + return tokenResponse.encounter; + } + if (this.state.authorizeUri) { + debug(strings_1.default.noIfNoAuth, "the ID of the selected encounter"); + } else { + debug(strings_1.default.noFreeContext, "selected encounter"); + } + return null; + } + /** + * Returns the (decoded) id_token if any. You need to request "openid" and + * "profile" scopes if you need to receive an id_token (if you need to know + * who the logged-in user is). + */ + getIdToken() { + const tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + const idToken = tokenResponse.id_token; + const scope = this.state.scope || ""; + // We have been authorized against this server but we don't have + // the id_token. This should be a scope issue. + if (!idToken) { + const hasOpenid = scope.match(/\bopenid\b/); + const hasProfile = scope.match(/\bprofile\b/); + const hasFhirUser = scope.match(/\bfhirUser\b/); + if (!hasOpenid || !(hasFhirUser || hasProfile)) { + debug("You are trying to get the id_token but you are not " + "using the right scopes. Please add 'openid' and " + "'fhirUser' or 'profile' to the scopes you are " + "requesting."); + } else { + // The server should have returned the id_token! + debug("The id_token is not available. Please check if your server supports that."); + } + return null; + } + return (0, lib_1.jwtDecode)(idToken, this.environment); + } + if (this.state.authorizeUri) { + debug(strings_1.default.noIfNoAuth, "the id_token"); + } else { + debug(strings_1.default.noFreeContext, "id_token"); + } + return null; + } + /** + * Returns the profile of the logged_in user (if any). This is a string + * having the following shape `"{user type}/{user id}"`. For example: + * `"Practitioner/abc"` or `"Patient/xyz"`. + */ + getFhirUser() { + const idToken = this.getIdToken(); + if (idToken) { + // Epic may return a full url + // @see https://github.com/smart-on-fhir/client-js/issues/105 + if (idToken.fhirUser) { + return idToken.fhirUser.split("/").slice(-2).join("/"); + } + return idToken.profile; + } + return null; + } + /** + * Returns the user ID or null. + */ + getUserId() { + const profile = this.getFhirUser(); + if (profile) { + return profile.split("/")[1]; + } + return null; + } + /** + * Returns the type of the logged-in user or null. The result can be + * "Practitioner", "Patient" or "RelatedPerson". + */ + getUserType() { + const profile = this.getFhirUser(); + if (profile) { + return profile.split("/")[0]; + } + return null; + } + /** + * Builds and returns the value of the `Authorization` header that can be + * sent to the FHIR server + */ + getAuthorizationHeader() { + const accessToken = this.getState("tokenResponse.access_token"); + if (accessToken) { + return "Bearer " + accessToken; + } + const { + username, + password + } = this.state; + if (username && password) { + return "Basic " + this.environment.btoa(username + ":" + password); + } + return null; + } + /** + * Used internally to clear the state of the instance and the state in the + * associated storage. + */ + async _clearState() { + const storage = this.environment.getStorage(); + const key = await storage.get(settings_1.SMART_KEY); + if (key) { + await storage.unset(key); + } + await storage.unset(settings_1.SMART_KEY); + this.state.tokenResponse = {}; + } + /** + * Creates a new resource in a server-assigned location + * @see http://hl7.org/fhir/http.html#create + * @param resource A FHIR resource to be created + * @param [requestOptions] Any options to be passed to the fetch call. + * Note that `method` and `body` will be ignored. + * @category Request + */ + create(resource, requestOptions) { + return this.request({ + ...requestOptions, + url: `${resource.resourceType}`, + method: "POST", + body: JSON.stringify(resource), + headers: { + // TODO: Do we need to alternate with "application/json+fhir"? + "content-type": "application/json", + ...(requestOptions || {}).headers + } + }); + } + /** + * Creates a new current version for an existing resource or creates an + * initial version if no resource already exists for the given id. + * @see http://hl7.org/fhir/http.html#update + * @param resource A FHIR resource to be updated + * @param requestOptions Any options to be passed to the fetch call. + * Note that `method` and `body` will be ignored. + * @category Request + */ + update(resource, requestOptions) { + return this.request({ + ...requestOptions, + url: `${resource.resourceType}/${resource.id}`, + method: "PUT", + body: JSON.stringify(resource), + headers: { + // TODO: Do we need to alternate with "application/json+fhir"? + "content-type": "application/json", + ...(requestOptions || {}).headers + } + }); + } + /** + * Removes an existing resource. + * @see http://hl7.org/fhir/http.html#delete + * @param url Relative URI of the FHIR resource to be deleted + * (format: `resourceType/id`) + * @param requestOptions Any options (except `method` which will be fixed + * to `DELETE`) to be passed to the fetch call. + * @category Request + */ + delete(url, requestOptions = {}) { + return this.request({ + ...requestOptions, + url, + method: "DELETE" + }); + } + /** + * Makes a JSON Patch to the given resource + * @see http://hl7.org/fhir/http.html#patch + * @param url Relative URI of the FHIR resource to be patched + * (format: `resourceType/id`) + * @param patch A JSON Patch array to send to the server, For details + * see https://datatracker.ietf.org/doc/html/rfc6902 + * @param requestOptions Any options to be passed to the fetch call, + * except for `method`, `url` and `body` which cannot be overridden. + * @since 2.4.0 + * @category Request + * @typeParam ResolveType This method would typically resolve with the + * patched resource or reject with an OperationOutcome. However, this may + * depend on the server implementation or even on the request headers. + * For that reason, if the default resolve type (which is + * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass + * in your own resolve type parameter. + */ + async patch(url, patch, requestOptions = {}) { + (0, lib_1.assertJsonPatch)(patch); + return this.request({ + ...requestOptions, + url, + method: "PATCH", + body: JSON.stringify(patch), + headers: { + "prefer": "return=presentation", + "content-type": "application/json-patch+json; charset=UTF-8", + ...requestOptions.headers + } + }); + } + /** + * @param requestOptions Can be a string URL (relative to the serviceUrl), + * or an object which will be passed to fetch() + * @param fhirOptions Additional options to control the behavior + * @param _resolvedRefs DO NOT USE! Used internally. + * @category Request + */ + async request(requestOptions, fhirOptions = {}, _resolvedRefs = {}) { + var _a; + const debugRequest = lib_1.debug.extend("client:request"); + (0, lib_1.assert)(requestOptions, "request requires an url or request options as argument"); + // url ----------------------------------------------------------------- + let url; + if (typeof requestOptions == "string" || requestOptions instanceof URL) { + url = String(requestOptions); + requestOptions = {}; + } else { + url = String(requestOptions.url); + } + url = (0, lib_1.absolute)(url, this.state.serverUrl); + const options = { + graph: fhirOptions.graph !== false, + flat: !!fhirOptions.flat, + pageLimit: (_a = fhirOptions.pageLimit) !== null && _a !== void 0 ? _a : 1, + resolveReferences: fhirOptions.resolveReferences || [], + useRefreshToken: fhirOptions.useRefreshToken !== false, + onPage: typeof fhirOptions.onPage == "function" ? fhirOptions.onPage : undefined + }; + const signal = requestOptions.signal || undefined; + // Refresh the access token if needed + const job = options.useRefreshToken ? this.refreshIfNeeded({ + signal + }).then(() => requestOptions) : Promise.resolve(requestOptions); + let response; + return job + // Add the Authorization header now, after the access token might + // have been updated + .then(requestOptions => { + const authHeader = this.getAuthorizationHeader(); + if (authHeader) { + requestOptions.headers = { + ...requestOptions.headers, + authorization: authHeader + }; + } + return requestOptions; + }) + // Make the request + .then(requestOptions => { + debugRequest("%s, options: %O, fhirOptions: %O", url, requestOptions, options); + return (0, lib_1.request)(url, requestOptions).then(result => { + if (requestOptions.includeResponse) { + response = result.response; + return result.body; + } + return result; + }); + }) + // Handle 401 ------------------------------------------------------ + .catch(async error => { + if (error.status == 401) { + // !accessToken -> not authorized -> No session. Need to launch. + if (!this.getState("tokenResponse.access_token")) { + error.message += "\nThis app cannot be accessed directly. Please launch it as SMART app!"; + throw error; + } + // auto-refresh not enabled and Session expired. + // Need to re-launch. Clear state to start over! + if (!options.useRefreshToken) { + debugRequest("Your session has expired and the useRefreshToken option is set to false. Please re-launch the app."); + await this._clearState(); + error.message += "\n" + strings_1.default.expired; + throw error; + } + // In rare cases we may have a valid access token and a refresh + // token and the request might still fail with 401 just because + // the access token has just been revoked. + // otherwise -> auto-refresh failed. Session expired. + // Need to re-launch. Clear state to start over! + debugRequest("Auto-refresh failed! Please re-launch the app."); + await this._clearState(); + error.message += "\n" + strings_1.default.expired; + throw error; + } + throw error; + }) + // Handle 403 ------------------------------------------------------ + .catch(error => { + if (error.status == 403) { + debugRequest("Permission denied! Please make sure that you have requested the proper scopes."); + } + throw error; + }).then(data => { + // At this point we don't know what `data` actually is! + // We might get an empty or falsy result. If so return it as is + // Also handle raw responses + if (!data || typeof data == "string" || data instanceof Response) { + if (requestOptions.includeResponse) { + return { + body: data, + response + }; + } + return data; + } + // Resolve References ------------------------------------------ + return (async _data => { + if (_data.resourceType == "Bundle") { + await Promise.all((_data.entry || []).map(item => resolveRefs(item.resource, options, _resolvedRefs, this, requestOptions))); + } else { + await resolveRefs(_data, options, _resolvedRefs, this, requestOptions); + } + return _data; + })(data) + // Pagination ---------------------------------------------- + .then(async _data => { + if (_data && _data.resourceType == "Bundle") { + const links = _data.link || []; + if (options.flat) { + _data = (_data.entry || []).map(entry => entry.resource); + } + if (options.onPage) { + await options.onPage(_data, { + ..._resolvedRefs + }); + } + if (--options.pageLimit) { + const next = links.find(l => l.relation == "next"); + _data = (0, lib_1.makeArray)(_data); + if (next && next.url) { + const nextPage = await this.request({ + url: next.url, + // Aborting the main request (even after it is complete) + // must propagate to any child requests and abort them! + // To do so, just pass the same AbortSignal if one is + // provided. + signal + }, options, _resolvedRefs); + if (options.onPage) { + return null; + } + if (options.resolveReferences.length) { + Object.assign(_resolvedRefs, nextPage.references); + return _data.concat((0, lib_1.makeArray)(nextPage.data || nextPage)); + } + return _data.concat((0, lib_1.makeArray)(nextPage)); + } + } + } + return _data; + }) + // Finalize ------------------------------------------------ + .then(_data => { + if (options.graph) { + _resolvedRefs = {}; + } else if (!options.onPage && options.resolveReferences.length) { + return { + data: _data, + references: _resolvedRefs + }; + } + return _data; + }).then(_data => { + if (requestOptions.includeResponse) { + return { + body: _data, + response + }; + } + return _data; + }); + }); + } + /** + * Checks if access token and refresh token are present. If they are, and if + * the access token is expired or is about to expire in the next 10 seconds, + * calls `this.refresh()` to obtain new access token. + * @param requestOptions Any options to pass to the fetch call. Most of them + * will be overridden, bit it might still be useful for passing additional + * request options or an abort signal. + * @category Request + */ + refreshIfNeeded(requestOptions = {}) { + const accessToken = this.getState("tokenResponse.access_token"); + const refreshToken = this.getState("tokenResponse.refresh_token"); + const expiresAt = this.state.expiresAt || 0; + if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) { + return this.refresh(requestOptions); + } + return Promise.resolve(this.state); + } + /** + * Use the refresh token to obtain new access token. If the refresh token is + * expired (or this fails for any other reason) it will be deleted from the + * state, so that we don't enter into loops trying to re-authorize. + * + * This method is typically called internally from [[request]] if + * certain request fails with 401. + * + * @param requestOptions Any options to pass to the fetch call. Most of them + * will be overridden, bit it might still be useful for passing additional + * request options or an abort signal. + * @category Request + */ + refresh(requestOptions = {}) { + var _a, _b; + const debugRefresh = lib_1.debug.extend("client:refresh"); + debugRefresh("Attempting to refresh with refresh_token..."); + const refreshToken = (_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.tokenResponse) === null || _b === void 0 ? void 0 : _b.refresh_token; + (0, lib_1.assert)(refreshToken, "Unable to refresh. No refresh_token found."); + const tokenUri = this.state.tokenUri; + (0, lib_1.assert)(tokenUri, "Unable to refresh. No tokenUri found."); + const scopes = this.getState("tokenResponse.scope") || ""; + const hasOfflineAccess = scopes.search(/\boffline_access\b/) > -1; + const hasOnlineAccess = scopes.search(/\bonline_access\b/) > -1; + (0, lib_1.assert)(hasOfflineAccess || hasOnlineAccess, "Unable to refresh. No offline_access or online_access scope found."); + // This method is typically called internally from `request` if certain + // request fails with 401. However, clients will often run multiple + // requests in parallel which may result in multiple refresh calls. + // To avoid that, we keep a reference to the current refresh task (if any). + if (!this._refreshTask) { + const refreshRequestOptions = { + credentials: this.environment.options.refreshTokenWithCredentials || "same-origin", + ...requestOptions, + method: "POST", + mode: "cors", + headers: { + ...(requestOptions.headers || {}), + "content-type": "application/x-www-form-urlencoded" + }, + body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(refreshToken)}` + }; + // custom authorization header can be passed on manual calls + if (!("authorization" in refreshRequestOptions.headers)) { + const { + clientSecret, + clientId + } = this.state; + if (clientSecret) { + // @ts-ignore + refreshRequestOptions.headers.authorization = "Basic " + this.environment.btoa(clientId + ":" + clientSecret); + } + } + this._refreshTask = (0, lib_1.request)(tokenUri, refreshRequestOptions).then(data => { + (0, lib_1.assert)(data.access_token, "No access token received"); + debugRefresh("Received new access token response %O", data); + this.state.tokenResponse = { + ...this.state.tokenResponse, + ...data + }; + this.state.expiresAt = (0, lib_1.getAccessTokenExpiration)(data, this.environment); + return this.state; + }).catch(error => { + var _a, _b; + if ((_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.tokenResponse) === null || _b === void 0 ? void 0 : _b.refresh_token) { + debugRefresh("Deleting the expired or invalid refresh token."); + delete this.state.tokenResponse.refresh_token; + } + throw error; + }).finally(() => { + this._refreshTask = null; + const key = this.state.key; + if (key) { + this.environment.getStorage().set(key, this.state); + } else { + debugRefresh("No 'key' found in Clint.state. Cannot persist the instance."); + } + }); + } + return this._refreshTask; + } + // utils ------------------------------------------------------------------- + /** + * Groups the observations by code. Returns a map that will look like: + * ```js + * const map = client.byCodes(observations, "code"); + * // map = { + * // "55284-4": [ observation1, observation2 ], + * // "6082-2": [ observation3 ] + * // } + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + byCode(observations, property) { + return (0, lib_1.byCode)(observations, property); + } + /** + * First groups the observations by code using `byCode`. Then returns a function + * that accepts codes as arguments and will return a flat array of observations + * having that codes. Example: + * ```js + * const filter = client.byCodes(observations, "category"); + * filter("laboratory") // => [ observation1, observation2 ] + * filter("vital-signs") // => [ observation3 ] + * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + byCodes(observations, property) { + return (0, lib_1.byCodes)(observations, property); + } + /** + * Walks through an object (or array) and returns the value found at the + * provided path. This function is very simple so it intentionally does not + * support any argument polymorphism, meaning that the path can only be a + * dot-separated string. If the path is invalid returns undefined. + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + getPath(obj, path = "") { + return (0, lib_1.getPath)(obj, path); + } + /** + * Returns a copy of the client state. Accepts a dot-separated path argument + * (same as for `getPath`) to allow for selecting specific properties. + * Examples: + * ```js + * client.getState(); // -> the entire state object + * client.getState("serverUrl"); // -> the URL we are connected to + * client.getState("tokenResponse.patient"); // -> The selected patient ID (if any) + * ``` + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + */ + getState(path = "") { + return (0, lib_1.getPath)({ + ...this.state + }, path); + } + /** + * Returns a promise that will be resolved with the fhir version as defined + * in the CapabilityStatement. + */ + getFhirVersion() { + return (0, lib_1.fetchConformanceStatement)(this.state.serverUrl).then(metadata => metadata.fhirVersion); + } + /** + * Returns a promise that will be resolved with the numeric fhir version + * - 2 for DSTU2 + * - 3 for STU3 + * - 4 for R4 + * - 0 if the version is not known + */ + getFhirRelease() { + return this.getFhirVersion().then(v => { + var _a; + return (_a = settings_1.fhirVersions[v]) !== null && _a !== void 0 ? _a : 0; + }); + } +} +exports["default"] = Client; + +/***/ }), + +/***/ "./src/HttpError.ts": +/*!**************************!*\ + !*** ./src/HttpError.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +class HttpError extends Error { + constructor(response) { + super(`${response.status} ${response.statusText}\nURL: ${response.url}`); + this.name = "HttpError"; + this.response = response; + this.statusCode = response.status; + this.status = response.status; + this.statusText = response.statusText; + } + async parse() { + if (!this.response.bodyUsed) { + try { + const type = this.response.headers.get("content-type") || "text/plain"; + if (type.match(/\bjson\b/i)) { + let body = await this.response.json(); + if (body.error) { + this.message += "\n" + body.error; + if (body.error_description) { + this.message += ": " + body.error_description; + } + } else { + this.message += "\n\n" + JSON.stringify(body, null, 4); + } + } else if (type.match(/^text\//i)) { + let body = await this.response.text(); + if (body) { + this.message += "\n\n" + body; + } + } + } catch { + // ignore + } + } + return this; + } + toJSON() { + return { + name: this.name, + statusCode: this.statusCode, + status: this.status, + statusText: this.statusText, + message: this.message + }; + } +} +exports["default"] = HttpError; + +/***/ }), + +/***/ "./src/adapters/BrowserAdapter.ts": +/*!****************************************!*\ + !*** ./src/adapters/BrowserAdapter.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +const smart_1 = __webpack_require__(/*! ../smart */ "./src/smart.ts"); +const Client_1 = __webpack_require__(/*! ../Client */ "./src/Client.ts"); +const BrowserStorage_1 = __webpack_require__(/*! ../storage/BrowserStorage */ "./src/storage/BrowserStorage.ts"); +const security = __webpack_require__(/*! ../security/browser */ "./src/security/browser.ts"); +const js_base64_1 = __webpack_require__(/*! js-base64 */ "./node_modules/js-base64/base64.js"); +/** + * Browser Adapter + */ +class BrowserAdapter { + /** + * @param options Environment-specific options + */ + constructor(options = {}) { + /** + * Stores the URL instance associated with this adapter + */ + this._url = null; + /** + * Holds the Storage instance associated with this instance + */ + this._storage = null; + this.security = security; + this.options = { + // Replaces the browser's current URL + // using window.history.replaceState API or by reloading. + replaceBrowserHistory: true, + // When set to true, this variable will fully utilize + // HTML5 sessionStorage API. + // This variable can be overridden to false by setting + // FHIR.oauth2.settings.fullSessionStorageSupport = false. + // When set to false, the sessionStorage will be keyed + // by a state variable. This is to allow the embedded IE browser + // instances instantiated on a single thread to continue to + // function without having sessionStorage data shared + // across the embedded IE instances. + fullSessionStorageSupport: true, + // Do we want to send cookies while making a request to the token + // endpoint in order to obtain new access token using existing + // refresh token. In rare cases the auth server might require the + // client to send cookies along with those requests. In this case + // developers will have to change this before initializing the app + // like so: + // `FHIR.oauth2.settings.refreshTokenWithCredentials = "include";` + // or + // `FHIR.oauth2.settings.refreshTokenWithCredentials = "same-origin";` + // Can be one of: + // "include" - always send cookies + // "same-origin" - only send cookies if we are on the same domain (default) + // "omit" - do not send cookies + refreshTokenWithCredentials: "same-origin", + ...options + }; + } + /** + * Given a relative path, returns an absolute url using the instance base URL + */ + relative(path) { + return new URL(path, this.getUrl().href).href; + } + /** + * In browsers we need to be able to (dynamically) check if fhir.js is + * included in the page. If it is, it should have created a "fhir" variable + * in the global scope. + */ + get fhir() { + // @ts-ignore + return typeof fhir === "function" ? fhir : null; + } + /** + * Given the current environment, this method must return the current url + * as URL instance + */ + getUrl() { + if (!this._url) { + this._url = new URL(location + ""); + } + return this._url; + } + /** + * Given the current environment, this method must redirect to the given + * path + */ + redirect(to) { + location.href = to; + } + /** + * Returns a BrowserStorage object which is just a wrapper around + * sessionStorage + */ + getStorage() { + if (!this._storage) { + this._storage = new BrowserStorage_1.default(); + } + return this._storage; + } + /** + * Returns a reference to the AbortController constructor. In browsers, + * AbortController will always be available as global (native or polyfilled) + */ + getAbortController() { + return AbortController; + } + /** + * ASCII string to Base64 + */ + atob(str) { + return window.atob(str); + } + /** + * Base64 to ASCII string + */ + btoa(str) { + return window.btoa(str); + } + base64urlencode(input) { + if (typeof input == "string") { + return (0, js_base64_1.encodeURL)(input); + } + return (0, js_base64_1.fromUint8Array)(input, true); + } + base64urldecode(input) { + return (0, js_base64_1.decode)(input); + } + /** + * Creates and returns adapter-aware SMART api. Not that while the shape of + * the returned object is well known, the arguments to this function are not. + * Those who override this method are free to require any environment-specific + * arguments. For example in node we will need a request, a response and + * optionally a storage or storage factory function. + */ + getSmartApi() { + return { + ready: (...args) => (0, smart_1.ready)(this, ...args), + authorize: options => (0, smart_1.authorize)(this, options), + init: options => (0, smart_1.init)(this, options), + client: state => new Client_1.default(this, state), + options: this.options, + utils: { + security + } + }; + } +} +exports["default"] = BrowserAdapter; + +/***/ }), + +/***/ "./src/entry/browser.ts": +/*!******************************!*\ + !*** ./src/entry/browser.ts ***! + \******************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +// In Browsers we create an adapter, get the SMART api from it and build the +// global FHIR object +const BrowserAdapter_1 = __webpack_require__(/*! ../adapters/BrowserAdapter */ "./src/adapters/BrowserAdapter.ts"); +const adapter = new BrowserAdapter_1.default(); +const { + ready, + authorize, + init, + client, + options, + utils +} = adapter.getSmartApi(); +// We have two kinds of browser builds - "pure" for new browsers and "legacy" +// for old ones. In pure builds we assume that the browser supports everything +// we need. In legacy mode, the library also acts as a polyfill. Babel will +// automatically polyfill everything except "fetch", which we have to handle +// manually. +// @ts-ignore +if (false) {} +// $lab:coverage:off$ +const FHIR = { + AbortController: window.AbortController, + client, + utils, + oauth2: { + settings: options, + ready, + authorize, + init + } +}; +module.exports = FHIR; +// $lab:coverage:on$ + +/***/ }), + +/***/ "./src/lib.ts": +/*!********************!*\ + !*** ./src/lib.ts ***! + \********************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +/* + * This file contains some shared functions. They are used by other modules, but + * are defined here so that tests can import this library and test them. + */ +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.assertJsonPatch = exports.assert = exports.getTargetWindow = exports.getPatientParam = exports.byCodes = exports.byCode = exports.getAccessTokenExpiration = exports.getTimeInFuture = exports.jwtDecode = exports.randomString = exports.absolute = exports.makeArray = exports.setPath = exports.getPath = exports.fetchConformanceStatement = exports.getAndCache = exports.request = exports.loweCaseKeys = exports.responseToJSON = exports.checkResponse = exports.units = exports.debug = void 0; +const HttpError_1 = __webpack_require__(/*! ./HttpError */ "./src/HttpError.ts"); +const settings_1 = __webpack_require__(/*! ./settings */ "./src/settings.ts"); +const debug = __webpack_require__(/*! debug */ "./node_modules/debug/src/browser.js"); +// $lab:coverage:off$ +// @ts-ignore +const { + fetch +} = true ? window : 0; +// $lab:coverage:on$ +const _debug = debug("FHIR"); +exports.debug = _debug; +/** + * The cache for the `getAndCache` function + */ +const cache = {}; +/** + * A namespace with functions for converting between different measurement units + */ +exports.units = { + cm({ + code, + value + }) { + ensureNumerical({ + code, + value + }); + if (code == "cm") return value; + if (code == "m") return value * 100; + if (code == "in") return value * 2.54; + if (code == "[in_us]") return value * 2.54; + if (code == "[in_i]") return value * 2.54; + if (code == "ft") return value * 30.48; + if (code == "[ft_us]") return value * 30.48; + throw new Error("Unrecognized length unit: " + code); + }, + kg({ + code, + value + }) { + ensureNumerical({ + code, + value + }); + if (code == "kg") return value; + if (code == "g") return value / 1000; + if (code.match(/lb/)) return value / 2.20462; + if (code.match(/oz/)) return value / 35.274; + throw new Error("Unrecognized weight unit: " + code); + }, + any(pq) { + ensureNumerical(pq); + return pq.value; + } +}; +/** + * Assertion function to guard arguments for `units` functions + */ +function ensureNumerical({ + value, + code +}) { + if (typeof value !== "number") { + throw new Error("Found a non-numerical unit: " + value + " " + code); + } +} +/** + * Used in fetch Promise chains to reject if the "ok" property is not true + */ +async function checkResponse(resp) { + if (!resp.ok) { + const error = new HttpError_1.default(resp); + await error.parse(); + throw error; + } + return resp; +} +exports.checkResponse = checkResponse; +/** + * Used in fetch Promise chains to return the JSON version of the response. + * Note that `resp.json()` will throw on empty body so we use resp.text() + * instead. + */ +function responseToJSON(resp) { + return resp.text().then(text => text.length ? JSON.parse(text) : ""); +} +exports.responseToJSON = responseToJSON; +function loweCaseKeys(obj) { + // Can be undefined to signal that this key should be removed + if (!obj) { + return obj; + } + // Arrays are valid values in case of recursive calls + if (Array.isArray(obj)) { + return obj.map(v => v && typeof v === "object" ? loweCaseKeys(v) : v); + } + // Plain object + let out = {}; + Object.keys(obj).forEach(key => { + const lowerKey = key.toLowerCase(); + const v = obj[key]; + out[lowerKey] = v && typeof v == "object" ? loweCaseKeys(v) : v; + }); + return out; +} +exports.loweCaseKeys = loweCaseKeys; +/** + * This is our built-in request function. It does a few things by default + * (unless told otherwise): + * - Makes CORS requests + * - Sets accept header to "application/json" + * - Handles errors + * - If the response is json return the json object + * - If the response is text return the result text + * - Otherwise return the response object on which we call stuff like `.blob()` + */ +function request(url, requestOptions = {}) { + const { + includeResponse, + ...options + } = requestOptions; + return fetch(url, { + mode: "cors", + ...options, + headers: { + accept: "application/json", + ...loweCaseKeys(options.headers) + } + }).then(checkResponse).then(res => { + const type = res.headers.get("content-type") + ""; + if (type.match(/\bjson\b/i)) { + return responseToJSON(res).then(body => ({ + res, + body + })); + } + if (type.match(/^text\//i)) { + return res.text().then(body => ({ + res, + body + })); + } + return { + res + }; + }).then(({ + res, + body + }) => { + // Some servers will reply after CREATE with json content type but with + // empty body. In this case check if a location header is received and + // fetch that to use it as the final result. + if (!body && res.status == 201) { + const location = res.headers.get("location"); + if (location) { + return request(location, { + ...options, + method: "GET", + body: null, + includeResponse + }); + } + } + if (includeResponse) { + return { + body, + response: res + }; + } + // For any non-text and non-json response return the Response object. + // This to let users decide if they want to call text(), blob() or + // something else on it + if (body === undefined) { + return res; + } + // Otherwise just return the parsed body (can also be "" or null) + return body; + }); +} +exports.request = request; +/** + * Makes a request using `fetch` and stores the result in internal memory cache. + * The cache is cleared when the page is unloaded. + * @param url The URL to request + * @param requestOptions Request options + * @param force If true, reload from source and update the cache, even if it has + * already been cached. + */ +function getAndCache(url, requestOptions, force = "development" === "test") { + if (force || !cache[url]) { + cache[url] = request(url, requestOptions); + return cache[url]; + } + return Promise.resolve(cache[url]); +} +exports.getAndCache = getAndCache; +/** + * Fetches the conformance statement from the given base URL. + * Note that the result is cached in memory (until the page is reloaded in the + * browser) because it might have to be re-used by the client + * @param baseUrl The base URL of the FHIR server + * @param [requestOptions] Any options passed to the fetch call + */ +function fetchConformanceStatement(baseUrl = "/", requestOptions) { + const url = String(baseUrl).replace(/\/*$/, "/") + "metadata"; + return getAndCache(url, requestOptions).catch(ex => { + throw new Error(`Failed to fetch the conformance statement from "${url}". ${ex}`); + }); +} +exports.fetchConformanceStatement = fetchConformanceStatement; +/** + * Walks through an object (or array) and returns the value found at the + * provided path. This function is very simple so it intentionally does not + * support any argument polymorphism, meaning that the path can only be a + * dot-separated string. If the path is invalid returns undefined. + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + */ +function getPath(obj, path = "") { + path = path.trim(); + if (!path) { + return obj; + } + let segments = path.split("."); + let result = obj; + while (result && segments.length) { + const key = segments.shift(); + if (!key && Array.isArray(result)) { + return result.map(o => getPath(o, segments.join("."))); + } else { + result = result[key]; + } + } + return result; +} +exports.getPath = getPath; +/** + * Like getPath, but if the node is found, its value is set to @value + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @param value The value to set + * @param createEmpty If true, create missing intermediate objects or arrays + * @returns The modified object + */ +function setPath(obj, path, value, createEmpty = false) { + path.trim().split(".").reduce((out, key, idx, arr) => { + if (out && idx === arr.length - 1) { + out[key] = value; + } else { + if (out && out[key] === undefined && createEmpty) { + out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {}; + } + return out ? out[key] : undefined; + } + }, obj); + return obj; +} +exports.setPath = setPath; +/** + * If the argument is an array returns it as is. Otherwise puts it in an array + * (`[arg]`) and returns the result + * @param arg The element to test and possibly convert to array + * @category Utility + */ +function makeArray(arg) { + if (Array.isArray(arg)) { + return arg; + } + return [arg]; +} +exports.makeArray = makeArray; +/** + * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl + * is not provided, the result would be a rooted path (one that starts with `/`). + * @param path The path to convert + * @param baseUrl The base URL + */ +function absolute(path, baseUrl) { + if (path.match(/^http/)) return path; + if (path.match(/^urn/)) return path; + return String(baseUrl || "").replace(/\/+$/, "") + "/" + path.replace(/^\/+/, ""); +} +exports.absolute = absolute; +/** + * Generates random strings. By default this returns random 8 characters long + * alphanumeric strings. + * @param strLength The length of the output string. Defaults to 8. + * @param charSet A string containing all the possible characters. + * Defaults to all the upper and lower-case letters plus digits. + * @category Utility + */ +function randomString(strLength = 8, charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") { + const result = []; + const len = charSet.length; + while (strLength--) { + result.push(charSet.charAt(Math.floor(Math.random() * len))); + } + return result.join(""); +} +exports.randomString = randomString; +/** + * Decodes a JWT token and returns it's body. + * @param token The token to read + * @param env An `Adapter` or any other object that has an `atob` method + * @category Utility + */ +function jwtDecode(token, env) { + const payload = token.split(".")[1]; + return payload ? JSON.parse(env.atob(payload)) : null; +} +exports.jwtDecode = jwtDecode; +/** + * Add a supplied number of seconds to the supplied Date, returning + * an integer number of seconds since the epoch + * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds) + * @param from Initial time (defaults to current time) + */ +function getTimeInFuture(secondsAhead = 120, from) { + return Math.floor(+(from || new Date()) / 1000 + secondsAhead); +} +exports.getTimeInFuture = getTimeInFuture; +/** + * Given a token response, computes and returns the expiresAt timestamp. + * Note that this should only be used immediately after an access token is + * received, otherwise the computed timestamp will be incorrect. + * @param tokenResponse + * @param env + */ +function getAccessTokenExpiration(tokenResponse, env) { + const now = Math.floor(Date.now() / 1000); + // Option 1 - using the expires_in property of the token response + if (tokenResponse.expires_in) { + return now + tokenResponse.expires_in; + } + // Option 2 - using the exp property of JWT tokens (must not assume JWT!) + if (tokenResponse.access_token) { + let tokenBody = jwtDecode(tokenResponse.access_token, env); + if (tokenBody && tokenBody.exp) { + return tokenBody.exp; + } + } + // Option 3 - if none of the above worked set this to 5 minutes after now + return now + 300; +} +exports.getAccessTokenExpiration = getAccessTokenExpiration; +/** + * Groups the observations by code. Returns a map that will look like: + * ```js + * const map = client.byCodes(observations, "code"); + * // map = { + * // "55284-4": [ observation1, observation2 ], + * // "6082-2": [ observation3 ] + * // } + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + */ +function byCode(observations, property) { + const ret = {}; + function handleCodeableConcept(concept, observation) { + if (concept && Array.isArray(concept.coding)) { + concept.coding.forEach(({ + code + }) => { + if (code) { + ret[code] = ret[code] || []; + ret[code].push(observation); + } + }); + } + } + makeArray(observations).forEach(o => { + if (o.resourceType === "Observation" && o[property]) { + if (Array.isArray(o[property])) { + o[property].forEach(concept => handleCodeableConcept(concept, o)); + } else { + handleCodeableConcept(o[property], o); + } + } + }); + return ret; +} +exports.byCode = byCode; +/** + * First groups the observations by code using `byCode`. Then returns a function + * that accepts codes as arguments and will return a flat array of observations + * having that codes. Example: + * ```js + * const filter = client.byCodes(observations, "category"); + * filter("laboratory") // => [ observation1, observation2 ] + * filter("vital-signs") // => [ observation3 ] + * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + */ +function byCodes(observations, property) { + const bank = byCode(observations, property); + return (...codes) => codes.filter(code => code + "" in bank).reduce((prev, code) => prev.concat(bank[code + ""]), []); +} +exports.byCodes = byCodes; +/** + * Given a conformance statement and a resource type, returns the name of the + * URL parameter that can be used to scope the resource type by patient ID. + */ +function getPatientParam(conformance, resourceType) { + // Find what resources are supported by this server + const resources = getPath(conformance, "rest.0.resource") || []; + // Check if this resource is supported + const meta = resources.find(r => r.type === resourceType); + if (!meta) { + throw new Error(`Resource "${resourceType}" is not supported by this FHIR server`); + } + // Check if any search parameters are available for this resource + if (!Array.isArray(meta.searchParam)) { + throw new Error(`No search parameters supported for "${resourceType}" on this FHIR server`); + } + // This is a rare case but could happen in generic workflows + if (resourceType == "Patient" && meta.searchParam.find(x => x.name == "_id")) { + return "_id"; + } + // Now find the first possible parameter name + const out = settings_1.patientParams.find(p => meta.searchParam.find(x => x.name == p)); + // If there is no match + if (!out) { + throw new Error("I don't know what param to use for " + resourceType); + } + return out; +} +exports.getPatientParam = getPatientParam; +/** + * Resolves a reference to target window. It may also open new window or tab if + * the `target = "popup"` or `target = "_blank"`. + * @param target + * @param width Only used when `target = "popup"` + * @param height Only used when `target = "popup"` + */ +async function getTargetWindow(target, width = 800, height = 720) { + // The target can be a function that returns the target. This can be + // used to open a layer pop-up with an iframe and then return a reference + // to that iframe (or its name) + if (typeof target == "function") { + target = await target(); + } + // The target can be a window reference + if (target && typeof target == "object") { + return target; + } + // At this point target must be a string + if (typeof target != "string") { + _debug("Invalid target type '%s'. Failing back to '_self'.", typeof target); + return self; + } + // Current window + if (target == "_self") { + return self; + } + // The parent frame + if (target == "_parent") { + return parent; + } + // The top window + if (target == "_top") { + return top || self; + } + // New tab or window + if (target == "_blank") { + let error, + targetWindow = null; + try { + targetWindow = window.open("", "SMARTAuthPopup"); + if (!targetWindow) { + throw new Error("Perhaps window.open was blocked"); + } + } catch (e) { + error = e; + } + if (!targetWindow) { + _debug("Cannot open window. Failing back to '_self'. %s", error); + return self; + } else { + return targetWindow; + } + } + // Popup window + if (target == "popup") { + let error, + targetWindow = null; + // if (!targetWindow || targetWindow.closed) { + try { + targetWindow = window.open("", "SMARTAuthPopup", ["height=" + height, "width=" + width, "menubar=0", "resizable=1", "status=0", "top=" + (screen.height - height) / 2, "left=" + (screen.width - width) / 2].join(",")); + if (!targetWindow) { + throw new Error("Perhaps the popup window was blocked"); + } + } catch (e) { + error = e; + } + if (!targetWindow) { + _debug("Cannot open window. Failing back to '_self'. %s", error); + return self; + } else { + return targetWindow; + } + } + // Frame or window by name + const winOrFrame = frames[target]; + if (winOrFrame) { + return winOrFrame; + } + _debug("Unknown target '%s'. Failing back to '_self'.", target); + return self; +} +exports.getTargetWindow = getTargetWindow; +function assert(condition, message) { + if (!condition) { + throw new Error(message); + } +} +exports.assert = assert; +function assertJsonPatch(patch) { + assert(Array.isArray(patch), "The JSON patch must be an array"); + assert(patch.length > 0, "The JSON patch array should not be empty"); + patch.forEach(operation => { + assert(["add", "replace", "test", "move", "copy", "remove"].indexOf(operation.op) > -1, 'Each patch operation must have an "op" property which must be one of: "add", "replace", "test", "move", "copy", "remove"'); + assert(operation.path && typeof operation.path, `Invalid "${operation.op}" operation. Missing "path" property`); + if (operation.op == "add" || operation.op == "replace" || operation.op == "test") { + assert("value" in operation, `Invalid "${operation.op}" operation. Missing "value" property`); + assert(Object.keys(operation).length == 3, `Invalid "${operation.op}" operation. Contains unknown properties`); + } else if (operation.op == "move" || operation.op == "copy") { + assert(typeof operation.from == "string", `Invalid "${operation.op}" operation. Requires a string "from" property`); + assert(Object.keys(operation).length == 3, `Invalid "${operation.op}" operation. Contains unknown properties`); + } else { + assert(Object.keys(operation).length == 2, `Invalid "${operation.op}" operation. Contains unknown properties`); + } + }); +} +exports.assertJsonPatch = assertJsonPatch; + +/***/ }), + +/***/ "./src/security/browser.ts": +/*!*********************************!*\ + !*** ./src/security/browser.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.signCompactJws = exports.importJWK = exports.generatePKCEChallenge = exports.digestSha256 = exports.randomBytes = void 0; +const js_base64_1 = __webpack_require__(/*! js-base64 */ "./node_modules/js-base64/base64.js"); +const crypto = typeof globalThis === "object" && globalThis.crypto ? globalThis.crypto : (__webpack_require__(/*! isomorphic-webcrypto */ "./node_modules/isomorphic-webcrypto/src/browser.mjs")["default"]); +const subtle = () => { + if (!crypto.subtle) { + if (!globalThis.isSecureContext) { + throw new Error("Some of the required subtle crypto functionality is not " + "available unless you run this app in secure context (using " + "HTTPS or running locally). See " + "https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"); + } + throw new Error("Some of the required subtle crypto functionality is not " + "available in the current environment (no crypto.subtle)"); + } + return crypto.subtle; +}; +const ALGS = { + ES384: { + name: "ECDSA", + namedCurve: "P-384" + }, + RS384: { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: { + name: 'SHA-384' + } + } +}; +function randomBytes(count) { + return crypto.getRandomValues(new Uint8Array(count)); +} +exports.randomBytes = randomBytes; +async function digestSha256(payload) { + const prepared = new TextEncoder().encode(payload); + const hash = await subtle().digest('SHA-256', prepared); + return new Uint8Array(hash); +} +exports.digestSha256 = digestSha256; +const generatePKCEChallenge = async (entropy = 96) => { + const inputBytes = randomBytes(entropy); + const codeVerifier = (0, js_base64_1.fromUint8Array)(inputBytes, true); + const codeChallenge = (0, js_base64_1.fromUint8Array)(await digestSha256(codeVerifier), true); + return { + codeChallenge, + codeVerifier + }; +}; +exports.generatePKCEChallenge = generatePKCEChallenge; +async function importJWK(jwk) { + // alg is optional in JWK but we need it here! + if (!jwk.alg) { + throw new Error('The "alg" property of the JWK must be set to "ES384" or "RS384"'); + } + // Use of the "key_ops" member is OPTIONAL, unless the application requires its presence. + // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3 + // + // In our case the app will only import private keys so we can assume "sign" + if (!Array.isArray(jwk.key_ops)) { + jwk.key_ops = ["sign"]; + } + // In this case the JWK has a "key_ops" array and "sign" is not listed + if (!jwk.key_ops.includes("sign")) { + throw new Error('The "key_ops" property of the JWK does not contain "sign"'); + } + try { + return await subtle().importKey("jwk", jwk, ALGS[jwk.alg], jwk.ext === true, jwk.key_ops // || ['sign'] + ); + } catch (e) { + throw new Error(`The ${jwk.alg} is not supported by this browser: ${e}`); + } +} +exports.importJWK = importJWK; +async function signCompactJws(alg, privateKey, header, payload) { + const jwtHeader = JSON.stringify({ + ...header, + alg + }); + const jwtPayload = JSON.stringify(payload); + const jwtAuthenticatedContent = `${(0, js_base64_1.encodeURL)(jwtHeader)}.${(0, js_base64_1.encodeURL)(jwtPayload)}`; + const signature = await subtle().sign({ + ...privateKey.algorithm, + hash: 'SHA-384' + }, privateKey, new TextEncoder().encode(jwtAuthenticatedContent)); + return `${jwtAuthenticatedContent}.${(0, js_base64_1.fromUint8Array)(new Uint8Array(signature), true)}`; +} +exports.signCompactJws = signCompactJws; + +/***/ }), + +/***/ "./src/settings.ts": +/*!*************************!*\ + !*** ./src/settings.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SMART_KEY = exports.patientParams = exports.fhirVersions = exports.patientCompartment = void 0; +/** + * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4 + */ +exports.patientCompartment = ["Account", "AdverseEvent", "AllergyIntolerance", "Appointment", "AppointmentResponse", "AuditEvent", "Basic", "BodySite", "BodyStructure", "CarePlan", "CareTeam", "ChargeItem", "Claim", "ClaimResponse", "ClinicalImpression", "Communication", "CommunicationRequest", "Composition", "Condition", "Consent", "Coverage", "CoverageEligibilityRequest", "CoverageEligibilityResponse", "DetectedIssue", "DeviceRequest", "DeviceUseRequest", "DeviceUseStatement", "DiagnosticOrder", "DiagnosticReport", "DocumentManifest", "DocumentReference", "EligibilityRequest", "Encounter", "EnrollmentRequest", "EpisodeOfCare", "ExplanationOfBenefit", "FamilyMemberHistory", "Flag", "Goal", "Group", "ImagingManifest", "ImagingObjectSelection", "ImagingStudy", "Immunization", "ImmunizationEvaluation", "ImmunizationRecommendation", "Invoice", "List", "MeasureReport", "Media", "MedicationAdministration", "MedicationDispense", "MedicationOrder", "MedicationRequest", "MedicationStatement", "MolecularSequence", "NutritionOrder", "Observation", "Order", "Patient", "Person", "Procedure", "ProcedureRequest", "Provenance", "QuestionnaireResponse", "ReferralRequest", "RelatedPerson", "RequestGroup", "ResearchSubject", "RiskAssessment", "Schedule", "ServiceRequest", "Specimen", "SupplyDelivery", "SupplyRequest", "VisionPrescription"]; +/** + * Map of FHIR releases and their abstract version as number + */ +exports.fhirVersions = { + "0.4.0": 2, + "0.5.0": 2, + "1.0.0": 2, + "1.0.1": 2, + "1.0.2": 2, + "1.1.0": 3, + "1.4.0": 3, + "1.6.0": 3, + "1.8.0": 3, + "3.0.0": 3, + "3.0.1": 3, + "3.3.0": 4, + "3.5.0": 4, + "4.0.0": 4, + "4.0.1": 4 +}; +/** + * Combined (FHIR R2-R4) list of search parameters that can be used to scope + * a request by patient ID. + */ +exports.patientParams = ["patient", "subject", "requester", "member", "actor", "beneficiary"]; +/** + * The name of the sessionStorage entry that contains the current key + */ +exports.SMART_KEY = "SMART_KEY"; + +/***/ }), + +/***/ "./src/smart.ts": +/*!**********************!*\ + !*** ./src/smart.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.init = exports.buildTokenRequest = exports.ready = exports.onMessage = exports.isInPopUp = exports.isInFrame = exports.authorize = exports.getSecurityExtensions = exports.fetchWellKnownJson = exports.KEY = void 0; +/* global window */ +const lib_1 = __webpack_require__(/*! ./lib */ "./src/lib.ts"); +const Client_1 = __webpack_require__(/*! ./Client */ "./src/Client.ts"); +const settings_1 = __webpack_require__(/*! ./settings */ "./src/settings.ts"); +Object.defineProperty(exports, "KEY", ({ + enumerable: true, + get: function () { + return settings_1.SMART_KEY; + } +})); +const debug = lib_1.debug.extend("oauth2"); +function isBrowser() { + return typeof window === "object"; +} +/** + * Fetches the well-known json file from the given base URL. + * Note that the result is cached in memory (until the page is reloaded in the + * browser) because it might have to be re-used by the client + * @param baseUrl The base URL of the FHIR server + */ +function fetchWellKnownJson(baseUrl = "/", requestOptions) { + const url = String(baseUrl).replace(/\/*$/, "/") + ".well-known/smart-configuration"; + return (0, lib_1.getAndCache)(url, requestOptions).catch(ex => { + throw new Error(`Failed to fetch the well-known json "${url}". ${ex.message}`); + }); +} +exports.fetchWellKnownJson = fetchWellKnownJson; +/** + * Fetch a "WellKnownJson" and extract the SMART endpoints from it + */ +function getSecurityExtensionsFromWellKnownJson(baseUrl = "/", requestOptions) { + return fetchWellKnownJson(baseUrl, requestOptions).then(meta => { + if (!meta.authorization_endpoint || !meta.token_endpoint) { + throw new Error("Invalid wellKnownJson"); + } + return { + registrationUri: meta.registration_endpoint || "", + authorizeUri: meta.authorization_endpoint, + tokenUri: meta.token_endpoint, + codeChallengeMethods: meta.code_challenge_methods_supported || [] + }; + }); +} +/** + * Fetch a `CapabilityStatement` and extract the SMART endpoints from it + */ +function getSecurityExtensionsFromConformanceStatement(baseUrl = "/", requestOptions) { + return (0, lib_1.fetchConformanceStatement)(baseUrl, requestOptions).then(meta => { + const nsUri = "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"; + const extensions = ((0, lib_1.getPath)(meta || {}, "rest.0.security.extension") || []).filter(e => e.url === nsUri).map(o => o.extension)[0]; + const out = { + registrationUri: "", + authorizeUri: "", + tokenUri: "", + codeChallengeMethods: [] + }; + if (extensions) { + extensions.forEach(ext => { + if (ext.url === "register") { + out.registrationUri = ext.valueUri; + } + if (ext.url === "authorize") { + out.authorizeUri = ext.valueUri; + } + if (ext.url === "token") { + out.tokenUri = ext.valueUri; + } + }); + } + return out; + }); +} +/** + * Given a FHIR server, returns an object with it's Oauth security endpoints + * that we are interested in. This will try to find the info in both the + * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever + * Arrives first will be used and the other request will be aborted. + * @param [baseUrl = "/"] Fhir server base URL + */ +function getSecurityExtensions(baseUrl = "/") { + return getSecurityExtensionsFromWellKnownJson(baseUrl).catch(() => getSecurityExtensionsFromConformanceStatement(baseUrl)); +} +exports.getSecurityExtensions = getSecurityExtensions; +/** + * Starts the SMART Launch Sequence. + * > **IMPORTANT**: + * `authorize()` will end up redirecting you to the authorization server. + * This means that you should not add anything to the returned promise chain. + * Any code written directly after the authorize() call might not be executed + * due to that redirect! + * @param env + * @param [params] + */ +async function authorize(env, params = {}) { + const url = env.getUrl(); + // Multiple config for EHR launches --------------------------------------- + if (Array.isArray(params)) { + const urlISS = url.searchParams.get("iss") || url.searchParams.get("fhirServiceUrl"); + if (!urlISS) { + throw new Error('Passing in an "iss" url parameter is required if authorize ' + 'uses multiple configurations'); + } + // pick the right config + const cfg = params.find(x => { + if (x.issMatch) { + if (typeof x.issMatch === "function") { + return !!x.issMatch(urlISS); + } + if (typeof x.issMatch === "string") { + return x.issMatch === urlISS; + } + if (x.issMatch instanceof RegExp) { + return x.issMatch.test(urlISS); + } + } + return false; + }); + (0, lib_1.assert)(cfg, `No configuration found matching the current "iss" parameter "${urlISS}"`); + return await authorize(env, cfg); + } + // ------------------------------------------------------------------------ + // Obtain input + const { + clientSecret, + fakeTokenResponse, + encounterId, + target, + width, + height, + pkceMode, + clientPublicKeySetUrl, + // Two deprecated values to use as fall-back values later + redirect_uri, + client_id + } = params; + let { + iss, + launch, + patientId, + fhirServiceUrl, + redirectUri, + noRedirect, + scope = "", + clientId, + completeInTarget, + clientPrivateJwk + } = params; + const storage = env.getStorage(); + // For these, a url param takes precedence over inline option + iss = url.searchParams.get("iss") || iss; + fhirServiceUrl = url.searchParams.get("fhirServiceUrl") || fhirServiceUrl; + launch = url.searchParams.get("launch") || launch; + patientId = url.searchParams.get("patientId") || patientId; + clientId = url.searchParams.get("clientId") || clientId; + // If there's still no clientId or redirectUri, check deprecated params + if (!clientId) { + clientId = client_id; + } + if (!redirectUri) { + redirectUri = redirect_uri; + } + if (!redirectUri) { + redirectUri = env.relative("."); + } else if (!redirectUri.match(/^https?\:\/\//)) { + redirectUri = env.relative(redirectUri); + } + const serverUrl = String(iss || fhirServiceUrl || ""); + // Validate input + if (!serverUrl) { + throw new Error("No server url found. It must be specified as `iss` or as " + "`fhirServiceUrl` parameter"); + } + if (iss) { + debug("Making %s launch...", launch ? "EHR" : "standalone"); + } + // append launch scope if needed + if (launch && !scope.match(/launch/)) { + scope += " launch"; + } + if (isBrowser()) { + const inFrame = isInFrame(); + const inPopUp = isInPopUp(); + if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) { + // completeInTarget will default to true if authorize is called from + // within an iframe. This is to avoid issues when the entire app + // happens to be rendered in an iframe (including in some EHRs), + // even though that was not how the app developer's intention. + completeInTarget = inFrame; + // In this case we can't always make the best decision so ask devs + // to be explicit in their configuration. + console.warn('Your app is being authorized from within an iframe or popup ' + 'window. Please be explicit and provide a "completeInTarget" ' + 'option. Use "true" to complete the authorization in the ' + 'same window, or "false" to try to complete it in the parent ' + 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html'); + } + } + // If `authorize` is called, make sure we clear any previous state (in case + // this is a re-authorize) + const oldKey = await storage.get(settings_1.SMART_KEY); + await storage.unset(oldKey); + // create initial state + const stateKey = (0, lib_1.randomString)(16); + const state = { + clientId, + scope, + redirectUri, + serverUrl, + clientSecret, + clientPrivateJwk, + tokenResponse: {}, + key: stateKey, + completeInTarget, + clientPublicKeySetUrl + }; + const fullSessionStorageSupport = isBrowser() ? (0, lib_1.getPath)(env, "options.fullSessionStorageSupport") : true; + if (fullSessionStorageSupport) { + await storage.set(settings_1.SMART_KEY, stateKey); + } + // fakeTokenResponse to override stuff (useful in development) + if (fakeTokenResponse) { + Object.assign(state.tokenResponse, fakeTokenResponse); + } + // Fixed patientId (useful in development) + if (patientId) { + Object.assign(state.tokenResponse, { + patient: patientId + }); + } + // Fixed encounterId (useful in development) + if (encounterId) { + Object.assign(state.tokenResponse, { + encounter: encounterId + }); + } + let redirectUrl = redirectUri + "?state=" + encodeURIComponent(stateKey); + // bypass oauth if fhirServiceUrl is used (but iss takes precedence) + if (fhirServiceUrl && !iss) { + debug("Making fake launch..."); + await storage.set(stateKey, state); + if (noRedirect) { + return redirectUrl; + } + return await env.redirect(redirectUrl); + } + // Get oauth endpoints and add them to the state + const extensions = await getSecurityExtensions(serverUrl); + Object.assign(state, extensions); + await storage.set(stateKey, state); + // If this happens to be an open server and there is no authorizeUri + if (!state.authorizeUri) { + if (noRedirect) { + return redirectUrl; + } + return await env.redirect(redirectUrl); + } + // build the redirect uri + const redirectParams = ["response_type=code", "client_id=" + encodeURIComponent(clientId || ""), "scope=" + encodeURIComponent(scope), "redirect_uri=" + encodeURIComponent(redirectUri), "aud=" + encodeURIComponent(serverUrl), "state=" + encodeURIComponent(stateKey)]; + // also pass this in case of EHR launch + if (launch) { + redirectParams.push("launch=" + encodeURIComponent(launch)); + } + if (shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) { + let codes = await env.security.generatePKCEChallenge(); + Object.assign(state, codes); + await storage.set(stateKey, state); + redirectParams.push("code_challenge=" + state.codeChallenge); // note that the challenge is ALREADY encoded properly + redirectParams.push("code_challenge_method=S256"); + } + redirectUrl = state.authorizeUri + "?" + redirectParams.join("&"); + if (noRedirect) { + return redirectUrl; + } + if (target && isBrowser()) { + let win; + win = await (0, lib_1.getTargetWindow)(target, width, height); + if (win !== self) { + try { + // Also remove any old state from the target window and then + // transfer the current state there + win.sessionStorage.removeItem(oldKey); + win.sessionStorage.setItem(stateKey, JSON.stringify(state)); + } catch (ex) { + (0, lib_1.debug)(`Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to "_self". %s`, ex); + win = self; + } + } + if (win !== self) { + try { + win.location.href = redirectUrl; + self.addEventListener("message", onMessage); + } catch (ex) { + (0, lib_1.debug)(`Failed to modify window.location. Perhaps it is from different origin?. Failing back to "_self". %s`, ex); + self.location.href = redirectUrl; + } + } else { + self.location.href = redirectUrl; + } + return; + } else { + return await env.redirect(redirectUrl); + } +} +exports.authorize = authorize; +function shouldIncludeChallenge(S256supported, pkceMode) { + if (pkceMode === "disabled") { + return false; + } + if (pkceMode === "unsafeV1") { + return true; + } + if (pkceMode === "required") { + if (!S256supported) { + throw new Error("Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration."); + } + return true; + } + return S256supported; +} +/** + * Checks if called within a frame. Only works in browsers! + * If the current window has a `parent` or `top` properties that refer to + * another window, returns true. If trying to access `top` or `parent` throws an + * error, returns true. Otherwise returns `false`. + */ +function isInFrame() { + try { + return self !== top && parent !== self; + } catch (e) { + return true; + } +} +exports.isInFrame = isInFrame; +/** + * Checks if called within another window (popup or tab). Only works in browsers! + * To consider itself called in a new window, this function verifies that: + * 1. `self === top` (not in frame) + * 2. `!!opener && opener !== self` The window has an opener + * 3. `!!window.name` The window has a `name` set + */ +function isInPopUp() { + try { + return self === top && !!opener && opener !== self && !!window.name; + } catch (e) { + return false; + } +} +exports.isInPopUp = isInPopUp; +/** + * Another window can send a "completeAuth" message to this one, making it to + * navigate to e.data.url + * @param e The message event + */ +function onMessage(e) { + if (e.data.type == "completeAuth" && e.origin === new URL(self.location.href).origin) { + window.removeEventListener("message", onMessage); + window.location.href = e.data.url; + } +} +exports.onMessage = onMessage; +/** + * The ready function should only be called on the page that represents + * the redirectUri. We typically land there after a redirect from the + * authorization server, but this code will also be executed upon subsequent + * navigation or page refresh. + */ +async function ready(env, options = {}) { + var _a, _b; + const url = env.getUrl(); + const Storage = env.getStorage(); + const params = url.searchParams; + let key = params.get("state"); + const code = params.get("code"); + const authError = params.get("error"); + const authErrorDescription = params.get("error_description"); + if (!key) { + key = await Storage.get(settings_1.SMART_KEY); + } + // Start by checking the url for `error` and `error_description` parameters. + // This happens when the auth server rejects our authorization attempt. In + // this case it has no other way to tell us what the error was, other than + // appending these parameters to the redirect url. + // From client's point of view, this is not very reliable (because we can't + // know how we have landed on this page - was it a redirect or was it loaded + // manually). However, if `ready()` is being called, we can assume + // that the url comes from the auth server (otherwise the app won't work + // anyway). + if (authError || authErrorDescription) { + throw new Error([authError, authErrorDescription].filter(Boolean).join(": ")); + } + debug("key: %s, code: %s", key, code); + // key might be coming from the page url so it might be empty or missing + (0, lib_1.assert)(key, "No 'state' parameter found. Please (re)launch the app."); + // Check if we have a previous state + let state = await Storage.get(key); + const fullSessionStorageSupport = isBrowser() ? (0, lib_1.getPath)(env, "options.fullSessionStorageSupport") : true; + // If we are in a popup window or an iframe and the authorization is + // complete, send the location back to our opener and exit. + if (isBrowser() && state && !state.completeInTarget) { + const inFrame = isInFrame(); + const inPopUp = isInPopUp(); + // we are about to return to the opener/parent where completeAuth will + // be called again. In rare cases the opener or parent might also be + // a frame or popup. Then inFrame or inPopUp will be true but we still + // have to stop going up the chain. To guard against that weird form of + // recursion we pass one additional parameter to the url which we later + // remove. + if ((inFrame || inPopUp) && !url.searchParams.get("complete")) { + url.searchParams.set("complete", "1"); + const { + href, + origin + } = url; + if (inFrame) { + parent.postMessage({ + type: "completeAuth", + url: href + }, origin); + } + if (inPopUp) { + opener.postMessage({ + type: "completeAuth", + url: href + }, origin); + window.close(); + } + return new Promise(() => {}); + } + } + url.searchParams.delete("complete"); + // Do we have to remove the `code` and `state` params from the URL? + const hasState = params.has("state"); + if (isBrowser() && (0, lib_1.getPath)(env, "options.replaceBrowserHistory") && (code || hasState)) { + // `code` is the flag that tell us to request an access token. + // We have to remove it, otherwise the page will authorize on + // every load! + if (code) { + params.delete("code"); + debug("Removed code parameter from the url."); + } + // If we have `fullSessionStorageSupport` it means we no longer + // need the `state` key. It will be stored to a well know + // location - sessionStorage[SMART_KEY]. However, no + // fullSessionStorageSupport means that this "well know location" + // might be shared between windows and tabs. In this case we + // MUST keep the `state` url parameter. + if (hasState && fullSessionStorageSupport) { + params.delete("state"); + debug("Removed state parameter from the url."); + } + // If the browser does not support the replaceState method for the + // History Web API, the "code" parameter cannot be removed. As a + // consequence, the page will (re)authorize on every load. The + // workaround is to reload the page to new location without those + // parameters. If that is not acceptable replaceBrowserHistory + // should be set to false. + if (window.history.replaceState) { + window.history.replaceState({}, "", url.href); + } + } + // If the state does not exist, it means the page has been loaded directly. + (0, lib_1.assert)(state, "No state found! Please (re)launch the app."); + // Assume the client has already completed a token exchange when + // there is no code (but we have a state) or access token is found in state + const authorized = !code || ((_a = state.tokenResponse) === null || _a === void 0 ? void 0 : _a.access_token); + // If we are authorized already, then this is just a reload. + // Otherwise, we have to complete the code flow + if (!authorized && state.tokenUri) { + (0, lib_1.assert)(code, "'code' url parameter is required"); + debug("Preparing to exchange the code for access token..."); + const requestOptions = await buildTokenRequest(env, { + code, + state, + clientPublicKeySetUrl: options.clientPublicKeySetUrl, + privateKey: options.privateKey || state.clientPrivateJwk + }); + debug("Token request options: %O", requestOptions); + // The EHR authorization server SHALL return a JSON structure that + // includes an access token or a message indicating that the + // authorization request has been denied. + const tokenResponse = await (0, lib_1.request)(state.tokenUri, requestOptions); + debug("Token response: %O", tokenResponse); + (0, lib_1.assert)(tokenResponse.access_token, "Failed to obtain access token."); + // Now we need to determine when is this authorization going to expire + state.expiresAt = (0, lib_1.getAccessTokenExpiration)(tokenResponse, env); + // save the tokenResponse so that we don't have to re-authorize on + // every page reload + state = { + ...state, + tokenResponse + }; + await Storage.set(key, state); + debug("Authorization successful!"); + } else { + debug(((_b = state.tokenResponse) === null || _b === void 0 ? void 0 : _b.access_token) ? "Already authorized" : "No authorization needed"); + } + if (fullSessionStorageSupport) { + await Storage.set(settings_1.SMART_KEY, key); + } + const client = new Client_1.default(env, state); + debug("Created client instance: %O", client); + return client; +} +exports.ready = ready; +/** + * Builds the token request options. Does not make the request, just + * creates it's configuration and returns it in a Promise. + */ +async function buildTokenRequest(env, { + code, + state, + clientPublicKeySetUrl, + privateKey +}) { + const { + redirectUri, + clientSecret, + tokenUri, + clientId, + codeVerifier + } = state; + (0, lib_1.assert)(redirectUri, "Missing state.redirectUri"); + (0, lib_1.assert)(tokenUri, "Missing state.tokenUri"); + (0, lib_1.assert)(clientId, "Missing state.clientId"); + const requestOptions = { + method: "POST", + headers: { + "content-type": "application/x-www-form-urlencoded" + }, + body: `code=${code}&grant_type=authorization_code&redirect_uri=${encodeURIComponent(redirectUri)}` + }; + // For public apps, authentication is not possible (and thus not required), + // since a client with no secret cannot prove its identity when it issues a + // call. (The end-to-end system can still be secure because the client comes + // from a known, https protected endpoint specified and enforced by the + // redirect uri.) For confidential apps, an Authorization header using HTTP + // Basic authentication is required, where the username is the app’s + // client_id and the password is the app’s client_secret (see example). + if (clientSecret) { + requestOptions.headers.authorization = "Basic " + env.btoa(clientId + ":" + clientSecret); + debug("Using state.clientSecret to construct the authorization header: %s", requestOptions.headers.authorization); + } + // Asymmetric auth + else if (privateKey) { + const pk = "key" in privateKey ? privateKey.key : await env.security.importJWK(privateKey); + const jwtHeaders = { + typ: "JWT", + kid: privateKey.kid, + jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl + }; + const jwtClaims = { + iss: clientId, + sub: clientId, + aud: tokenUri, + jti: env.base64urlencode(env.security.randomBytes(32)), + exp: (0, lib_1.getTimeInFuture)(120) // two minutes in the future + }; + const clientAssertion = await env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims); + requestOptions.body += `&client_assertion_type=${encodeURIComponent("urn:ietf:params:oauth:client-assertion-type:jwt-bearer")}`; + requestOptions.body += `&client_assertion=${encodeURIComponent(clientAssertion)}`; + debug("Using state.clientPrivateJwk to add a client_assertion to the POST body"); + } + // Public client + else { + debug("Public client detected; adding state.clientId to the POST body"); + requestOptions.body += `&client_id=${encodeURIComponent(clientId)}`; + } + if (codeVerifier) { + debug("Found state.codeVerifier, adding to the POST body"); + // Note that the codeVerifier is ALREADY encoded properly + requestOptions.body += "&code_verifier=" + codeVerifier; + } + return requestOptions; +} +exports.buildTokenRequest = buildTokenRequest; +/** + * This function can be used when you want to handle everything in one page + * (no launch endpoint needed). You can think of it as if it does: + * ```js + * authorize(options).then(ready) + * ``` + * + * **Be careful with init()!** There are some details you need to be aware of: + * + * 1. It will only work if your launch_uri is the same as your redirect_uri. + * While this should be valid, we can’t promise that every EHR will allow you + * to register client with such settings. + * 2. Internally, `init()` will be called twice. First it will redirect to the + * EHR, then the EHR will redirect back to the page where init() will be + * called again to complete the authorization. This is generally fine, + * because the returned promise will only be resolved once, after the second + * execution, but please also consider the following: + * - You should wrap all your app’s code in a function that is only executed + * after `init()` resolves! + * - Since the page will be loaded twice, you must be careful if your code + * has global side effects that can persist between page reloads + * (for example writing to localStorage). + * 3. For standalone launch, only use init in combination with offline_access + * scope. Once the access_token expires, if you don’t have a refresh_token + * there is no way to re-authorize properly. We detect that and delete the + * expired access token, but it still means that the user will have to + * refresh the page twice to re-authorize. + * @param env The adapter + * @param authorizeOptions The authorize options + */ +async function init(env, authorizeOptions, readyOptions) { + const url = env.getUrl(); + const code = url.searchParams.get("code"); + const state = url.searchParams.get("state"); + // if `code` and `state` params are present we need to complete the auth flow + if (code && state) { + return ready(env, readyOptions); + } + // Check for existing client state. If state is found, it means a client + // instance have already been created in this session and we should try to + // "revive" it. + const storage = env.getStorage(); + const key = state || (await storage.get(settings_1.SMART_KEY)); + const cached = await storage.get(key); + if (cached) { + return new Client_1.default(env, cached); + } + // Otherwise try to launch + return authorize(env, authorizeOptions).then(() => { + // `init` promises a Client but that cannot happen in this case. The + // browser will be redirected (unload the page and be redirected back + // to it later and the same init function will be called again). On + // success, authorize will resolve with the redirect url but we don't + // want to return that from this promise chain because it is not a + // Client instance. At the same time, if authorize fails, we do want to + // pass the error to those waiting for a client instance. + return new Promise(() => {}); + }); +} +exports.init = init; + +/***/ }), + +/***/ "./src/storage/BrowserStorage.ts": +/*!***************************************!*\ + !*** ./src/storage/BrowserStorage.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +class Storage { + /** + * Gets the value at `key`. Returns a promise that will be resolved + * with that value (or undefined for missing keys). + */ + async get(key) { + const value = sessionStorage[key]; + if (value) { + return JSON.parse(value); + } + return null; + } + /** + * Sets the `value` on `key` and returns a promise that will be resolved + * with the value that was set. + */ + async set(key, value) { + sessionStorage[key] = JSON.stringify(value); + return value; + } + /** + * Deletes the value at `key`. Returns a promise that will be resolved + * with true if the key was deleted or with false if it was not (eg. if + * did not exist). + */ + async unset(key) { + if (key in sessionStorage) { + delete sessionStorage[key]; + return true; + } + return false; + } +} +exports["default"] = Storage; + +/***/ }), + +/***/ "./src/strings.ts": +/*!************************!*\ + !*** ./src/strings.ts ***! + \************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +// This map contains reusable debug messages (only those used in multiple places) +exports["default"] = { + expired: "Session expired! Please re-launch the app", + noScopeForId: "Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.", + noIfNoAuth: "You are trying to get %s but the app is not authorized yet.", + noFreeContext: "Please don't use open fhir servers if you need to access launch context items like the %S." +}; + +/***/ }), + +/***/ "./node_modules/debug/src/browser.js": +/*!*******************************************!*\ + !*** ./node_modules/debug/src/browser.js ***! + \*******************************************/ +/***/ ((module, exports, __webpack_require__) => { + +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + let m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __webpack_require__(/*! ./common */ "./node_modules/debug/src/common.js")(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + + +/***/ }), + +/***/ "./node_modules/debug/src/common.js": +/*!******************************************!*\ + !*** ./node_modules/debug/src/common.js ***! + \******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(/*! ms */ "./node_modules/ms/index.js"); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; + + +/***/ }), + +/***/ "./node_modules/js-base64/base64.js": +/*!******************************************!*\ + !*** ./node_modules/js-base64/base64.js ***! + \******************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +// +// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND! +// +; +(function (global, factory) { + true + ? module.exports = factory() + : 0; +}((typeof self !== 'undefined' ? self + : typeof window !== 'undefined' ? window + : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g + : this), function () { + 'use strict'; + /** + * base64.ts + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + * + * @author Dan Kogai (https://github.com/dankogai) + */ + var version = '3.7.7'; + /** + * @deprecated use lowercase `version`. + */ + var VERSION = version; + var _hasBuffer = typeof Buffer === 'function'; + var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; + var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; + var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var b64chs = Array.prototype.slice.call(b64ch); + var b64tab = (function (a) { + var tab = {}; + a.forEach(function (c, i) { return tab[c] = i; }); + return tab; + })(b64chs); + var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; + var _fromCC = String.fromCharCode.bind(String); + var _U8Afrom = typeof Uint8Array.from === 'function' + ? Uint8Array.from.bind(Uint8Array) + : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); }; + var _mkUriSafe = function (src) { return src + .replace(/=/g, '').replace(/[+\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); }; + var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\+\/]/g, ''); }; + /** + * polyfill version of `btoa` + */ + var btoaPolyfill = function (bin) { + // console.log('polyfilled'); + var u32, c0, c1, c2, asc = ''; + var pad = bin.length % 3; + for (var i = 0; i < bin.length;) { + if ((c0 = bin.charCodeAt(i++)) > 255 || + (c1 = bin.charCodeAt(i++)) > 255 || + (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError('invalid character found'); + u32 = (c0 << 16) | (c1 << 8) | c2; + asc += b64chs[u32 >> 18 & 63] + + b64chs[u32 >> 12 & 63] + + b64chs[u32 >> 6 & 63] + + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; + }; + /** + * does what `window.btoa` of web browsers do. + * @param {String} bin binary string + * @returns {string} Base64-encoded string + */ + var _btoa = typeof btoa === 'function' ? function (bin) { return btoa(bin); } + : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); } + : btoaPolyfill; + var _fromUint8Array = _hasBuffer + ? function (u8a) { return Buffer.from(u8a).toString('base64'); } + : function (u8a) { + // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 + var maxargs = 0x1000; + var strs = []; + for (var i = 0, l = u8a.length; i < l; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join('')); + }; + /** + * converts a Uint8Array to a Base64 string. + * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 + * @returns {string} Base64 string + */ + var fromUint8Array = function (u8a, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); + }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const utob = (src: string) => unescape(encodeURIComponent(src)); + // reverting good old fationed regexp + var cb_utob = function (c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) + + _fromCC(0x80 | (cc & 0x3f))) + : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) + + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-8 string + * @returns {string} UTF-16 string + */ + var utob = function (u) { return u.replace(re_utob, cb_utob); }; + // + var _encode = _hasBuffer + ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); } + : _TE + ? function (s) { return _fromUint8Array(_TE.encode(s)); } + : function (s) { return _btoa(utob(s)); }; + /** + * converts a UTF-8-encoded string to a Base64 string. + * @param {boolean} [urlsafe] if `true` make the result URL-safe + * @returns {string} Base64 string + */ + var encode = function (src, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe + ? _mkUriSafe(_encode(src)) + : _encode(src); + }; + /** + * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. + * @returns {string} Base64 string + */ + var encodeURI = function (src) { return encode(src, true); }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const btou = (src: string) => decodeURIComponent(escape(src)); + // reverting good old fationed regexp + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function (cccc) { + switch (cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; + return (_fromCC((offset >>> 10) + 0xD800) + + _fromCC((offset & 0x3FF) + 0xDC00)); + case 3: + return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2))); + default: + return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1))); + } + }; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-16 string + * @returns {string} UTF-8 string + */ + var btou = function (b) { return b.replace(re_btou, cb_btou); }; + /** + * polyfill version of `atob` + */ + var atobPolyfill = function (asc) { + // console.log('polyfilled'); + asc = asc.replace(/\s+/g, ''); + if (!b64re.test(asc)) + throw new TypeError('malformed base64.'); + asc += '=='.slice(2 - (asc.length & 3)); + var u24, bin = '', r1, r2; + for (var i = 0; i < asc.length;) { + u24 = b64tab[asc.charAt(i++)] << 18 + | b64tab[asc.charAt(i++)] << 12 + | (r1 = b64tab[asc.charAt(i++)]) << 6 + | (r2 = b64tab[asc.charAt(i++)]); + bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) + : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) + : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); + } + return bin; + }; + /** + * does what `window.atob` of web browsers do. + * @param {String} asc Base64-encoded string + * @returns {string} binary string + */ + var _atob = typeof atob === 'function' ? function (asc) { return atob(_tidyB64(asc)); } + : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); } + : atobPolyfill; + // + var _toUint8Array = _hasBuffer + ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); } + : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); }; + /** + * converts a Base64 string to a Uint8Array. + */ + var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); }; + // + var _decode = _hasBuffer + ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); } + : _TD + ? function (a) { return _TD.decode(_toUint8Array(a)); } + : function (a) { return btou(_atob(a)); }; + var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); }; + /** + * converts a Base64 string to a UTF-8 string. + * @param {String} src Base64 string. Both normal and URL-safe are supported + * @returns {string} UTF-8 string + */ + var decode = function (src) { return _decode(_unURI(src)); }; + /** + * check if a value is a valid Base64 string + * @param {String} src a value to check + */ + var isValid = function (src) { + if (typeof src !== 'string') + return false; + var s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); + }; + // + var _noEnum = function (v) { + return { + value: v, enumerable: false, writable: true, configurable: true + }; + }; + /** + * extend String.prototype with relevant methods + */ + var extendString = function () { + var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); }; + _add('fromBase64', function () { return decode(this); }); + _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); + _add('toBase64URI', function () { return encode(this, true); }); + _add('toBase64URL', function () { return encode(this, true); }); + _add('toUint8Array', function () { return toUint8Array(this); }); + }; + /** + * extend Uint8Array.prototype with relevant methods + */ + var extendUint8Array = function () { + var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); }; + _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); + _add('toBase64URI', function () { return fromUint8Array(this, true); }); + _add('toBase64URL', function () { return fromUint8Array(this, true); }); + }; + /** + * extend Builtin prototypes with relevant methods + */ + var extendBuiltins = function () { + extendString(); + extendUint8Array(); + }; + var gBase64 = { + version: version, + VERSION: VERSION, + atob: _atob, + atobPolyfill: atobPolyfill, + btoa: _btoa, + btoaPolyfill: btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode: encode, + encodeURI: encodeURI, + encodeURL: encodeURI, + utob: utob, + btou: btou, + decode: decode, + isValid: isValid, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array, + extendString: extendString, + extendUint8Array: extendUint8Array, + extendBuiltins: extendBuiltins + }; + // + // export Base64 to the namespace + // + // ES5 is yet to have Object.assign() that may make transpilers unhappy. + // gBase64.Base64 = Object.assign({}, gBase64); + gBase64.Base64 = {}; + Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; }); + return gBase64; +})); + + +/***/ }), + +/***/ "./node_modules/ms/index.js": +/*!**********************************!*\ + !*** ./node_modules/ms/index.js ***! + \**********************************/ +/***/ ((module) => { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), + +/***/ "./node_modules/isomorphic-webcrypto/src/browser.mjs": +/*!***********************************************************!*\ + !*** ./node_modules/isomorphic-webcrypto/src/browser.mjs ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _webcrypto_shim_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webcrypto-shim.mjs */ "./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs"); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (window.crypto); + + +/***/ }), + +/***/ "./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs": +/*!******************************************************************!*\ + !*** ./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs ***! + \******************************************************************/ +/***/ (() => { + +"use strict"; +/** + * @file Web Cryptography API shim + * @author Artem S Vybornov + * @license MIT + */ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function () { + return factory(global); + }); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports + module.exports = factory(global); + } else { + factory(global); + } +}(typeof self !== 'undefined' ? self : undefined, function (global) { + 'use strict'; + + if ( typeof Promise !== 'function' ) + throw "Promise support required"; + + var _crypto = global.crypto || global.msCrypto; + if ( !_crypto ) return; + + var _subtle = _crypto.subtle || _crypto.webkitSubtle; + if ( !_subtle ) return; + + var _Crypto = global.Crypto || _crypto.constructor || Object, + _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object, + _CryptoKey = global.CryptoKey || global.Key || Object; + + var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1; + var isIE = !!global.msCrypto && !isEdge; + var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle; + if ( !isIE && !isWebkit ) return; + + function s2a ( s ) { + return btoa(s).replace(/\=+$/, '').replace(/\+/g, '-').replace(/\//g, '_'); + } + + function a2s ( s ) { + s += '===', s = s.slice( 0, -s.length % 4 ); + return atob( s.replace(/-/g, '+').replace(/_/g, '/') ); + } + + function s2b ( s ) { + var b = new Uint8Array(s.length); + for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i); + return b; + } + + function b2s ( b ) { + if ( b instanceof ArrayBuffer ) b = new Uint8Array(b); + return String.fromCharCode.apply( String, b ); + } + + function alg ( a ) { + var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') }; + switch ( r.name ) { + case 'SHA-1': + case 'SHA-256': + case 'SHA-384': + case 'SHA-512': + break; + case 'AES-CBC': + case 'AES-GCM': + case 'AES-KW': + if ( a.length ) r['length'] = a.length; + break; + case 'HMAC': + if ( a.hash ) r['hash'] = alg(a.hash); + if ( a.length ) r['length'] = a.length; + break; + case 'RSAES-PKCS1-v1_5': + if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent); + if ( a.modulusLength ) r['modulusLength'] = a.modulusLength; + break; + case 'RSASSA-PKCS1-v1_5': + case 'RSA-OAEP': + if ( a.hash ) r['hash'] = alg(a.hash); + if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent); + if ( a.modulusLength ) r['modulusLength'] = a.modulusLength; + break; + default: + throw new SyntaxError("Bad algorithm name"); + } + return r; + }; + + function jwkAlg ( a ) { + return { + 'HMAC': { + 'SHA-1': 'HS1', + 'SHA-256': 'HS256', + 'SHA-384': 'HS384', + 'SHA-512': 'HS512', + }, + 'RSASSA-PKCS1-v1_5': { + 'SHA-1': 'RS1', + 'SHA-256': 'RS256', + 'SHA-384': 'RS384', + 'SHA-512': 'RS512', + }, + 'RSAES-PKCS1-v1_5': { + '': 'RSA1_5', + }, + 'RSA-OAEP': { + 'SHA-1': 'RSA-OAEP', + 'SHA-256': 'RSA-OAEP-256', + }, + 'AES-KW': { + '128': 'A128KW', + '192': 'A192KW', + '256': 'A256KW', + }, + 'AES-GCM': { + '128': 'A128GCM', + '192': 'A192GCM', + '256': 'A256GCM', + }, + 'AES-CBC': { + '128': 'A128CBC', + '192': 'A192CBC', + '256': 'A256CBC', + }, + }[a.name][ ( a.hash || {} ).name || a.length || '' ]; + } + + function b2jwk ( k ) { + if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) ); + var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable }; + switch ( jwk.kty ) { + case 'oct': + jwk.k = k.k; + case 'RSA': + [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } ); + break; + default: + throw new TypeError("Unsupported key type"); + } + return jwk; + } + + function jwk2b ( k ) { + var jwk = b2jwk(k); + if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext; + return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer; + } + + function pkcs2jwk ( k ) { + var info = b2der(k), prv = false; + if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure + var jwk = { 'ext': true }; + switch ( info[0][0] ) { + case '1.2.840.113549.1.1.1': + var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ], + rsaKey = b2der( info[1] ); + if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure + for ( var i = 0; i < rsaKey.length; i++ ) { + if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1); + jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) ); + } + jwk['kty'] = 'RSA'; + break; + default: + throw new TypeError("Unsupported key type"); + } + return jwk; + } + + function jwk2pkcs ( k ) { + var key, info = [ [ '', null ] ], prv = false; + switch ( k.kty ) { + case 'RSA': + var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ], + rsaKey = []; + for ( var i = 0; i < rsaComp.length; i++ ) { + if ( !( rsaComp[i] in k ) ) break; + var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) ); + if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 ); + } + if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure + info[0][0] = '1.2.840.113549.1.1.1'; + key = rsaKey; + break; + default: + throw new TypeError("Unsupported key type"); + } + info.push( new Uint8Array( der2b(key) ).buffer ); + if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] }; + else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure + return new Uint8Array( der2b(info) ).buffer; + } + + var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' }, + str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' }; + + function b2der ( buf, ctx ) { + if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf); + if ( !ctx ) ctx = { pos: 0, end: buf.length }; + + if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError("Malformed DER"); + + var tag = buf[ctx.pos++], + len = buf[ctx.pos++]; + + if ( len >= 0x80 ) { + len &= 0x7f; + if ( ctx.end - ctx.pos < len ) throw new RangeError("Malformed DER"); + for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++]; + len = xlen; + } + + if ( ctx.end - ctx.pos < len ) throw new RangeError("Malformed DER"); + + var rv; + + switch ( tag ) { + case 0x02: // Universal Primitive INTEGER + rv = buf.subarray( ctx.pos, ctx.pos += len ); + break; + case 0x03: // Universal Primitive BIT STRING + if ( buf[ctx.pos++] ) throw new Error( "Unsupported bit string" ); + len--; + case 0x04: // Universal Primitive OCTET STRING + rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer; + break; + case 0x05: // Universal Primitive NULL + rv = null; + break; + case 0x06: // Universal Primitive OBJECT IDENTIFIER + var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) ); + if ( !( oid in oid2str ) ) throw new Error( "Unsupported OBJECT ID " + oid ); + rv = oid2str[oid]; + break; + case 0x30: // Universal Constructed SEQUENCE + rv = []; + for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) ); + break; + default: + throw new Error( "Unsupported DER tag 0x" + tag.toString(16) ); + } + + return rv; + } + + function der2b ( val, buf ) { + if ( !buf ) buf = []; + + var tag = 0, len = 0, + pos = buf.length + 2; + + buf.push( 0, 0 ); // placeholder + + if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER + tag = 0x02, len = val.length; + for ( var i = 0; i < len; i++ ) buf.push( val[i] ); + } + else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING + tag = 0x04, len = val.byteLength, val = new Uint8Array(val); + for ( var i = 0; i < len; i++ ) buf.push( val[i] ); + } + else if ( val === null ) { // Universal Primitive NULL + tag = 0x05, len = 0; + } + else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER + var oid = s2b( atob( str2oid[val] ) ); + tag = 0x06, len = oid.length; + for ( var i = 0; i < len; i++ ) buf.push( oid[i] ); + } + else if ( val instanceof Array ) { // Universal Constructed SEQUENCE + for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf ); + tag = 0x30, len = buf.length - pos; + } + else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint + val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength; + buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] ); + len++; + } + else { + throw new Error( "Unsupported DER value " + val ); + } + + if ( len >= 0x80 ) { + var xlen = len, len = 4; + buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff ); + while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--; + if ( len < 4 ) buf.splice( pos, 4 - len ); + len |= 0x80; + } + + buf.splice( pos - 2, 2, tag, len ); + + return buf; + } + + function CryptoKey ( key, alg, ext, use ) { + Object.defineProperties( this, { + _key: { + value: key + }, + type: { + value: key.type, + enumerable: true, + }, + extractable: { + value: (ext === undefined) ? key.extractable : ext, + enumerable: true, + }, + algorithm: { + value: (alg === undefined) ? key.algorithm : alg, + enumerable: true, + }, + usages: { + value: (use === undefined) ? key.usages : use, + enumerable: true, + }, + }); + } + + function isPubKeyUse ( u ) { + return u === 'verify' || u === 'encrypt' || u === 'wrapKey'; + } + + function isPrvKeyUse ( u ) { + return u === 'sign' || u === 'decrypt' || u === 'unwrapKey'; + } + + [ 'generateKey', 'importKey', 'unwrapKey' ] + .forEach( function ( m ) { + var _fn = _subtle[m]; + + _subtle[m] = function ( a, b, c ) { + var args = [].slice.call(arguments), + ka, kx, ku; + + switch ( m ) { + case 'generateKey': + ka = alg(a), kx = b, ku = c; + break; + case 'importKey': + ka = alg(c), kx = args[3], ku = args[4]; + if ( a === 'jwk' ) { + b = b2jwk(b); + if ( !b.alg ) b.alg = jwkAlg(ka); + if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice(); + args[1] = jwk2b(b); + } + break; + case 'unwrapKey': + ka = args[4], kx = args[5], ku = args[6]; + args[2] = c._key; + break; + } + + if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) { + ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name]; + return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku ); + } + + if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) { + a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash; + return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] ) + .then( function ( k ) { + return Promise.all([ + _subtle.exportKey( 'jwk', k.publicKey ), + _subtle.exportKey( 'jwk', k.privateKey ), + ]); + }) + .then( function ( keys ) { + keys[0].alg = keys[1].alg = jwkAlg(ka); + keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse); + return Promise.all([ + _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ), + _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ), + ]); + }) + .then( function ( keys ) { + return { + publicKey: keys[0], + privateKey: keys[1], + }; + }); + } + + if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) ) + && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) { + return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] ); + } + + if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) { + return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] ); + } + + if ( isIE && m === 'unwrapKey' ) { + return _subtle.decrypt( args[3], c, b ) + .then( function ( k ) { + return _subtle.importKey( a, k, args[4], args[5], args[6] ); + }); + } + + var op; + try { + op = _fn.apply( _subtle, args ); + } + catch ( e ) { + return Promise.reject(e); + } + + if ( isIE ) { + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { rej(e) }; + op.oncomplete = function ( r ) { res(r.target.result) }; + }); + } + + op = op.then( function ( k ) { + if ( ka.name === 'HMAC' ) { + if ( !ka.length ) ka.length = 8 * k.algorithm.length; + } + if ( ka.name.search('RSA') == 0 ) { + if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength; + if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent; + } + if ( k.publicKey && k.privateKey ) { + k = { + publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ), + privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ), + }; + } + else { + k = new CryptoKey( k, ka, kx, ku ); + } + return k; + }); + + return op; + } + }); + + [ 'exportKey', 'wrapKey' ] + .forEach( function ( m ) { + var _fn = _subtle[m]; + + _subtle[m] = function ( a, b, c ) { + var args = [].slice.call(arguments); + + switch ( m ) { + case 'exportKey': + args[1] = b._key; + break; + case 'wrapKey': + args[1] = b._key, args[2] = c._key; + break; + } + + if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) ) + && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) { + args[0] = 'raw'; + } + + if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) { + args[0] = 'jwk'; + } + + if ( isIE && m === 'wrapKey' ) { + return _subtle.exportKey( a, b ) + .then( function ( k ) { + if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) ); + return _subtle.encrypt( args[3], c, k ); + }); + } + + var op; + try { + op = _fn.apply( _subtle, args ); + } + catch ( e ) { + return Promise.reject(e); + } + + if ( isIE ) { + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { rej(e) }; + op.oncomplete = function ( r ) { res(r.target.result) }; + }); + } + + if ( m === 'exportKey' && a === 'jwk' ) { + op = op.then( function ( k ) { + if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) ) + && b.algorithm.name === 'HMAC') { + return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) }; + } + k = b2jwk(k); + if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm); + if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice(); + return k; + }); + } + + if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) { + op = op.then( function ( k ) { + k = jwk2pkcs( b2jwk(k) ); + return k; + }); + } + + return op; + } + }); + + [ 'encrypt', 'decrypt', 'sign', 'verify' ] + .forEach( function ( m ) { + var _fn = _subtle[m]; + + _subtle[m] = function ( a, b, c, d ) { + if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) ) + throw new Error("Empy input is not allowed"); + + var args = [].slice.call(arguments), + ka = alg(a); + + if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) { + var tl = a.tagLength >> 3; + args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ), + a.tag = (c.buffer || c).slice( c.byteLength - tl ); + } + + args[1] = b._key; + + var op; + try { + op = _fn.apply( _subtle, args ); + } + catch ( e ) { + return Promise.reject(e); + } + + if ( isIE ) { + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { + rej(e); + }; + + op.oncomplete = function ( r ) { + var r = r.target.result; + + if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) { + var c = r.ciphertext, t = r.tag; + r = new Uint8Array( c.byteLength + t.byteLength ); + r.set( new Uint8Array(c), 0 ); + r.set( new Uint8Array(t), c.byteLength ); + r = r.buffer; + } + + res(r); + }; + }); + } + + return op; + } + }); + + if ( isIE ) { + var _digest = _subtle.digest; + + _subtle['digest'] = function ( a, b ) { + if ( !b.byteLength ) + throw new Error("Empy input is not allowed"); + + var op; + try { + op = _digest.call( _subtle, a, b ); + } + catch ( e ) { + return Promise.reject(e); + } + + op = new Promise( function ( res, rej ) { + op.onabort = + op.onerror = function ( e ) { rej(e) }; + op.oncomplete = function ( r ) { res(r.target.result) }; + }); + + return op; + }; + + global.crypto = Object.create( _crypto, { + getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } }, + subtle: { value: _subtle }, + }); + + global.CryptoKey = CryptoKey; + } + + if ( isWebkit ) { + _crypto.subtle = _subtle; + + global.Crypto = _Crypto; + global.SubtleCrypto = _SubtleCrypto; + global.CryptoKey = CryptoKey; + } +})); + + /* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ({}); // section modified by isomorphic-webcrypto build + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ (() => { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/entry/browser.ts"); +/******/ window.FHIR = __webpack_exports__; +/******/ +/******/ })() +; +//# sourceMappingURL=fhir-client.pure.js.map \ No newline at end of file diff --git a/dist/build/fhir-client.pure.js.map b/dist/build/fhir-client.pure.js.map new file mode 100644 index 00000000..62e03e58 --- /dev/null +++ b/dist/build/fhir-client.pure.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fhir-client.pure.js","mappings":"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AAClB,YAAY;AACZ,YAAY;AACZ,iBAAiB;AACjB,eAAe;AACf,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4CAA4C;;AAEvD;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAU;;AAEnC,OAAO,YAAY;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;AC7QA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,sCAAI;AACpC;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,eAAe;AAC3B;AACA;AACA;AACA;;AAEA,kBAAkB,sBAAsB;AACxC;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;;AAEA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjRA;AACA;AACA;AACA;AACA;AACA,IAAI,KAA4D;AAChE;AACA,UAAU,CAeM;AAChB,CAAC;AACD;AACA,iBAAiB,qBAAM,mBAAmB,qBAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA,KAAK;AACL,mCAAmC,EAAE,oBAAoB,EAAE,sBAAsB,EAAE;AACnF;AACA;AACA;AACA,0BAA0B;AAC1B,sCAAsC;AACtC,6DAA6D,+BAA+B;AAC5F,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8DAA8D;AAC9D,wCAAwC;AACxC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8BAA8B;AAC9B;AACA;AACA,yBAAyB;AACzB;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA,qCAAqC;AACrC;AACA;AACA;AACA,iEAAiE,EAAE,wBAAwB,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,8DAA8D;AAC9D,wCAAwC;AACxC;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB,sDAAsD,yBAAyB;AACxG;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,yBAAyB;AACzB;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B,gCAAgC,mDAAmD,+BAA+B;AAClH;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA,kCAAkC;AAClC;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,yCAAyC,sBAAsB;AAC/D,8CAA8C,+BAA+B;AAC7E,0CAA0C,4BAA4B;AACtE,0CAA0C,4BAA4B;AACtE,2CAA2C,4BAA4B;AACvE;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,8CAA8C,uCAAuC;AACrF,0CAA0C,oCAAoC;AAC9E,0CAA0C,oCAAoC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,gDAAgD,wCAAwC;AACxF;AACA,CAAC;;;;;;;;;;;ACzTD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjK6B;AAC7B,iEAAe,aAAa;;;;;;;;;;;;ACD5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,CAAC,sCAAsC,SAAI;AAC3C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS,yBAAyB;AAClC;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,+FAA+F,8BAA8B;AAC7H;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;AACzD,oBAAoB;AACpB;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,kDAAkD;AAClD;AACA;;AAEA,oBAAoB,wCAAwC;AAC5D,oBAAoB;;AAEpB;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0BAA0B;;AAE1B,4CAA4C;AAC5C;AACA,6BAA6B,SAAS;AACtC;AACA,iDAAiD;AACjD;AACA,6BAA6B,SAAS;AACtC;AACA,mCAAmC;AACnC;AACA;AACA,gEAAgE;AAChE;AACA;AACA,6BAA6B,SAAS;AACtC;AACA,2CAA2C;AAC3C,6BAA6B,gBAAgB;AAC7C;AACA;AACA,sGAAsG;AACtG;AACA,yBAAyB,iBAAiB,SAAS;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C,gEAAgE;AAC/G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA,6DAA6D;AAC7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD;AACzD,yDAAyD;AACzD,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD;AACzD,yDAAyD;AACzD,qBAAqB;AACrB;;AAEA;AACA;AACA,8EAA8E;AAC9E;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,iDAAiD;AACjD,aAAa;;AAEb;AACA;;AAEA;AACA,+BAA+B,wBAAwB,qCAAqC;AAC5F,+BAA+B,gBAAgB;AAC/C,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC,sEAAe,EAAE,GAAC;;;;;;;UCnmBnB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;UEAA;UACA;UACA;UACA","sources":["webpack://FHIR/./src/Client.ts","webpack://FHIR/./src/HttpError.ts","webpack://FHIR/./src/adapters/BrowserAdapter.ts","webpack://FHIR/./src/entry/browser.ts","webpack://FHIR/./src/lib.ts","webpack://FHIR/./src/security/browser.ts","webpack://FHIR/./src/settings.ts","webpack://FHIR/./src/smart.ts","webpack://FHIR/./src/storage/BrowserStorage.ts","webpack://FHIR/./src/strings.ts","webpack://FHIR/./node_modules/debug/src/browser.js","webpack://FHIR/./node_modules/debug/src/common.js","webpack://FHIR/./node_modules/js-base64/base64.js","webpack://FHIR/./node_modules/ms/index.js","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/browser.mjs","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs","webpack://FHIR/webpack/bootstrap","webpack://FHIR/webpack/runtime/define property getters","webpack://FHIR/webpack/runtime/global","webpack://FHIR/webpack/runtime/hasOwnProperty shorthand","webpack://FHIR/webpack/before-startup","webpack://FHIR/webpack/startup","webpack://FHIR/webpack/after-startup"],"sourcesContent":["import {\n absolute,\n debug as _debug,\n getPath,\n setPath,\n jwtDecode,\n makeArray,\n request,\n byCode,\n byCodes,\n units,\n getPatientParam,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n assertJsonPatch,\n assert\n} from \"./lib\";\n\nimport str from \"./strings\";\nimport { SMART_KEY, patientCompartment, fhirVersions } from \"./settings\";\nimport HttpError from \"./HttpError\";\nimport BrowserAdapter from \"./adapters/BrowserAdapter\";\nimport { fhirclient } from \"./types\";\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { Response } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst debug = _debug.extend(\"client\");\n\n/**\n * Adds patient context to requestOptions object to be used with [[Client.request]]\n * @param requestOptions Can be a string URL (relative to the serviceUrl), or an\n * object which will be passed to fetch()\n * @param client Current FHIR client object containing patient context\n * @return requestOptions object contextualized to current patient\n */\nasync function contextualize(\n requestOptions: string | URL | fhirclient.RequestOptions,\n client: Client\n): Promise\n{\n const base = absolute(\"/\", client.state.serverUrl);\n\n async function contextualURL(_url: URL) {\n const resourceType = _url.pathname.split(\"/\").pop();\n assert(resourceType, `Invalid url \"${_url}\"`);\n assert(patientCompartment.indexOf(resourceType) > -1, `Cannot filter \"${resourceType}\" resources by patient`);\n const conformance = await fetchConformanceStatement(client.state.serverUrl);\n const searchParam = getPatientParam(conformance, resourceType);\n _url.searchParams.set(searchParam, client.patient.id as string);\n return _url.href;\n }\n\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n return { url: await contextualURL(new URL(requestOptions + \"\", base)) };\n }\n\n requestOptions.url = await contextualURL(new URL(requestOptions.url + \"\", base));\n return requestOptions;\n}\n\n/**\n * Gets single reference by id. Caches the result.\n * @param refId\n * @param cache A map to store the resolved refs\n * @param client The client instance\n * @param requestOptions Only signal and headers are currently used if provided\n * @returns The resolved reference\n * @private\n */\nfunction getRef(\n refId: string,\n cache: Record,\n client: Client,\n requestOptions: RequestInit\n): Promise {\n if (!cache[refId]) {\n\n const { signal, headers } = requestOptions;\n\n // Note that we set cache[refId] immediately! When the promise is\n // settled it will be updated. This is to avoid a ref being fetched\n // twice because some of these requests are executed in parallel.\n cache[refId] = client.request({\n url: refId,\n headers,\n signal\n }).then(res => {\n cache[refId] = res;\n return res;\n }, (error: Error) => {\n delete cache[refId];\n throw error;\n });\n }\n\n return Promise.resolve(cache[refId]);\n}\n\n/**\n * Resolves a reference in the given resource.\n * @param obj FHIR Resource\n */\nfunction resolveRef(\n obj: fhirclient.FHIR.Resource,\n path: string,\n graph: boolean,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n const node = getPath(obj, path);\n if (node) {\n const isArray = Array.isArray(node);\n return Promise.all(makeArray(node).filter(Boolean).map((item, i) => {\n const ref = item.reference;\n if (ref) {\n return getRef(ref, cache, client, requestOptions).then(sub => {\n if (graph) {\n if (isArray) {\n if (path.indexOf(\"..\") > -1) {\n setPath(obj, `${path.replace(\"..\", `.${i}.`)}`, sub); \n } else {\n setPath(obj, `${path}.${i}`, sub);\n }\n } else {\n setPath(obj, path, sub);\n }\n }\n }).catch((ex) => {\n /* ignore missing references */\n if (ex.status !== 404) {\n throw ex;\n }\n });\n }\n }));\n }\n}\n\n/**\n * Given a resource and a list of ref paths - resolves them all\n * @param obj FHIR Resource\n * @param fhirOptions The fhir options of the initiating request call\n * @param cache A map to store fetched refs\n * @param client The client instance\n * @private\n */\nfunction resolveRefs(\n obj: fhirclient.FHIR.Resource,\n fhirOptions: fhirclient.FhirOptions,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n\n // 1. Sanitize paths, remove any invalid ones\n let paths = makeArray(fhirOptions.resolveReferences)\n .filter(Boolean) // No false, 0, null, undefined or \"\"\n .map(path => String(path).trim())\n .filter(Boolean); // No space-only strings\n\n // 2. Remove duplicates\n paths = paths.filter((p, i) => {\n const index = paths.indexOf(p, i + 1);\n if (index > -1) {\n debug(\"Duplicated reference path \\\"%s\\\"\", p);\n return false;\n }\n return true;\n });\n\n // 3. Early exit if no valid paths are found\n if (!paths.length) {\n return Promise.resolve();\n }\n\n // 4. Group the paths by depth so that child refs are looked up\n // after their parents!\n const groups: Record = {};\n paths.forEach(path => {\n const len = path.split(\".\").length;\n if (!groups[len]) {\n groups[len] = [];\n }\n groups[len].push(path);\n });\n\n // 5. Execute groups sequentially! Paths within same group are\n // fetched in parallel!\n let task: Promise = Promise.resolve();\n Object.keys(groups).sort().forEach(len => {\n const group = groups[len];\n task = task.then(() => Promise.all(group.map((path: string) => {\n return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions);\n })));\n });\n return task;\n}\n\n/**\n * This is a FHIR client that is returned to you from the `ready()` call of the\n * **SMART API**. You can also create it yourself if needed:\n *\n * ```js\n * // BROWSER\n * const client = FHIR.client(\"https://r4.smarthealthit.org\");\n *\n * // SERVER\n * const client = smart(req, res).client(\"https://r4.smarthealthit.org\");\n * ```\n */\nexport default class Client\n{\n /**\n * The state of the client instance is an object with various properties.\n * It contains some details about how the client has been authorized and\n * determines the behavior of the client instance. This state is persisted\n * in `SessionStorage` in browsers or in request session on the servers.\n */\n readonly state: fhirclient.ClientState;\n\n /**\n * The adapter to use to connect to the current environment. Currently we have:\n * - BrowserAdapter - for browsers\n * - NodeAdapter - for Express or vanilla NodeJS servers\n * - HapiAdapter - for HAPI NodeJS servers\n */\n readonly environment: fhirclient.Adapter;\n\n /**\n * A SMART app is typically associated with a patient. This is a namespace\n * for the patient-related functionality of the client.\n */\n readonly patient: {\n\n /**\n * The ID of the current patient or `null` if there is no current patient\n */\n id: string | null\n\n /**\n * A method to fetch the current patient resource from the FHIR server.\n * If there is no patient context, it will reject with an error.\n * @param {fhirclient.FetchOptions} [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n \n /**\n * This is similar to [[request]] but it makes requests in the\n * context of the current patient. For example, instead of doing\n * ```js\n * client.request(\"Observation?patient=\" + client.patient.id)\n * ```\n * you can do\n * ```js\n * client.patient.request(\"Observation\")\n * ```\n * The return type depends on the arguments. Typically it will be the\n * response payload JSON object. Can also be a string or the `Response`\n * object itself if we have received a non-json result, which allows us\n * to handle even binary responses. Can also be a [[CombinedFetchResult]]\n * object if the `requestOptions.includeResponse`s has been set to true.\n * @category Request\n */\n request: (\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions?: fhirclient.FhirOptions\n ) => Promise\n\n /**\n * This is the FhirJS Patient API. It will ONLY exist if the `Client`\n * instance is \"connected\" to FhirJS.\n */\n api?: Record\n };\n\n /**\n * The client may be associated with a specific encounter, if the scopes\n * permit that and if the back-end server supports that. This is a namespace\n * for encounter-related functionality.\n */\n readonly encounter: {\n\n /**\n * The ID of the current encounter or `null` if there is no current\n * encounter\n */\n id: string | null\n\n /**\n * A method to fetch the current encounter resource from the FHIR server.\n * If there is no encounter context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n };\n\n /**\n * The client may be associated with a specific user, if the scopes\n * permit that. This is a namespace for user-related functionality.\n */\n readonly user: {\n\n /**\n * The ID of the current user or `null` if there is no current user\n */\n id: string | null\n\n /**\n * A method to fetch the current user resource from the FHIR server.\n * If there is no user context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction<\n fhirclient.FHIR.Patient |\n fhirclient.FHIR.Practitioner |\n fhirclient.FHIR.RelatedPerson\n >\n\n /**\n * Returns the profile of the logged_in user (if any), or null if the\n * user is not available. This is a string having the shape\n * `{user type}/{user id}`. For example `Practitioner/abc` or\n * `Patient/xyz`.\n * @alias client.getFhirUser()\n */\n fhirUser: string | null\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * `Practitioner`, `Patient` or `RelatedPerson`.\n * @alias client.getUserType()\n */\n resourceType: string | null\n };\n\n /**\n * The [FhirJS](https://github.com/FHIR/fhir.js/blob/master/README.md) API.\n * **NOTE:** This will only be available if `fhir.js` is used. Otherwise it\n * will be `undefined`.\n */\n api: Record | undefined;\n\n /**\n * Refers to the refresh task while it is being performed.\n * @see [[refresh]]\n */\n private _refreshTask: Promise | null;\n\n /**\n * Validates the parameters, creates an instance and tries to connect it to\n * FhirJS, if one is available globally.\n */\n constructor(environment: fhirclient.Adapter, state: fhirclient.ClientState | string)\n {\n const _state = typeof state == \"string\" ? { serverUrl: state } : state;\n\n // Valid serverUrl is required!\n assert(\n _state.serverUrl && _state.serverUrl.match(/https?:\\/\\/.+/),\n \"A \\\"serverUrl\\\" option is required and must begin with \\\"http(s)\\\"\"\n );\n\n this.state = _state;\n this.environment = environment;\n this._refreshTask = null;\n\n const client = this;\n\n // patient api ---------------------------------------------------------\n this.patient = {\n get id() { return client.getPatientId(); },\n read: (requestOptions) => {\n const id = this.patient.id;\n return id ?\n this.request({ ...requestOptions, url: `Patient/${id}` }) :\n Promise.reject(new Error(\"Patient is not available\"));\n },\n request: (requestOptions, fhirOptions = {}) => {\n if (this.patient.id) {\n return (async () => {\n const options = await contextualize(requestOptions, this);\n return this.request(options, fhirOptions);\n })();\n } else {\n return Promise.reject(new Error(\"Patient is not available\"));\n }\n }\n };\n\n // encounter api -------------------------------------------------------\n this.encounter = {\n get id() { return client.getEncounterId(); },\n read: requestOptions => {\n const id = this.encounter.id;\n return id ?\n this.request({ ...requestOptions, url: `Encounter/${id}` }) :\n Promise.reject(new Error(\"Encounter is not available\"));\n }\n };\n\n // user api ------------------------------------------------------------\n this.user = {\n get fhirUser() { return client.getFhirUser(); },\n get id() { return client.getUserId(); },\n get resourceType() { return client.getUserType(); },\n read: requestOptions => {\n const fhirUser = this.user.fhirUser;\n return fhirUser ?\n this.request({ ...requestOptions, url: fhirUser }) :\n Promise.reject(new Error(\"User is not available\"));\n }\n };\n\n // fhir.js api (attached automatically in browser)\n // ---------------------------------------------------------------------\n this.connect((environment as BrowserAdapter).fhir);\n }\n\n /**\n * This method is used to make the \"link\" between the `fhirclient` and the\n * `fhir.js`, if one is available.\n * **Note:** This is called by the constructor. If fhir.js is available in\n * the global scope as `fhir`, it will automatically be linked to any [[Client]]\n * instance. You should only use this method to connect to `fhir.js` which\n * is not global.\n */\n connect(fhirJs?: (options: Record) => Record): Client\n {\n if (typeof fhirJs == \"function\") {\n const options: Record = {\n baseUrl: this.state.serverUrl.replace(/\\/$/, \"\")\n };\n\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n options.auth = { token: accessToken };\n }\n else {\n const { username, password } = this.state;\n if (username && password) {\n options.auth = {\n user: username,\n pass: password\n };\n }\n }\n this.api = fhirJs(options);\n\n const patientId = this.getState(\"tokenResponse.patient\");\n if (patientId) {\n this.patient.api = fhirJs({\n ...options,\n patient: patientId\n });\n }\n }\n return this;\n }\n\n /**\n * Returns the ID of the selected patient or null. You should have requested\n * \"launch/patient\" scope. Otherwise this will return null.\n */\n getPatientId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the patient. This should be a scope issue.\n if (!tokenResponse.patient) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/patient)?\\b/)) {\n debug(str.noScopeForId, \"patient\", \"patient\");\n }\n else {\n // The server should have returned the patient!\n debug(\"The ID of the selected patient is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return tokenResponse.patient;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected patient\");\n }\n else {\n debug(str.noFreeContext, \"selected patient\");\n }\n return null;\n }\n\n /**\n * Returns the ID of the selected encounter or null. You should have\n * requested \"launch/encounter\" scope. Otherwise this will return null.\n * Note that not all servers support the \"launch/encounter\" scope so this\n * will be null if they don't.\n */\n getEncounterId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the encounter. This should be a scope issue.\n if (!tokenResponse.encounter) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/encounter)?\\b/)) {\n debug(str.noScopeForId, \"encounter\", \"encounter\");\n }\n else {\n // The server should have returned the encounter!\n debug(\"The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters.\");\n }\n return null;\n }\n return tokenResponse.encounter;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected encounter\");\n }\n else {\n debug(str.noFreeContext, \"selected encounter\");\n }\n return null;\n }\n\n /**\n * Returns the (decoded) id_token if any. You need to request \"openid\" and\n * \"profile\" scopes if you need to receive an id_token (if you need to know\n * who the logged-in user is).\n */\n getIdToken(): fhirclient.IDToken | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n const idToken = tokenResponse.id_token;\n const scope = this.state.scope || \"\";\n\n // We have been authorized against this server but we don't have\n // the id_token. This should be a scope issue.\n if (!idToken) {\n const hasOpenid = scope.match(/\\bopenid\\b/);\n const hasProfile = scope.match(/\\bprofile\\b/);\n const hasFhirUser = scope.match(/\\bfhirUser\\b/);\n if (!hasOpenid || !(hasFhirUser || hasProfile)) {\n debug(\n \"You are trying to get the id_token but you are not \" +\n \"using the right scopes. Please add 'openid' and \" +\n \"'fhirUser' or 'profile' to the scopes you are \" +\n \"requesting.\"\n );\n }\n else {\n // The server should have returned the id_token!\n debug(\"The id_token is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return jwtDecode(idToken, this.environment) as fhirclient.IDToken;\n }\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the id_token\");\n }\n else {\n debug(str.noFreeContext, \"id_token\");\n }\n return null;\n }\n\n /**\n * Returns the profile of the logged_in user (if any). This is a string\n * having the following shape `\"{user type}/{user id}\"`. For example:\n * `\"Practitioner/abc\"` or `\"Patient/xyz\"`.\n */\n getFhirUser(): string | null\n {\n const idToken = this.getIdToken();\n if (idToken) {\n // Epic may return a full url\n // @see https://github.com/smart-on-fhir/client-js/issues/105\n if (idToken.fhirUser) {\n return idToken.fhirUser.split(\"/\").slice(-2).join(\"/\");\n }\n return idToken.profile\n }\n return null;\n }\n\n /**\n * Returns the user ID or null.\n */\n getUserId(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[1];\n }\n return null;\n }\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * \"Practitioner\", \"Patient\" or \"RelatedPerson\".\n */\n getUserType(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[0];\n }\n return null;\n }\n\n /**\n * Builds and returns the value of the `Authorization` header that can be\n * sent to the FHIR server\n */\n getAuthorizationHeader(): string | null\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n return \"Bearer \" + accessToken;\n }\n const { username, password } = this.state;\n if (username && password) {\n return \"Basic \" + this.environment.btoa(username + \":\" + password);\n }\n return null;\n }\n\n /**\n * Used internally to clear the state of the instance and the state in the\n * associated storage.\n */\n private async _clearState() {\n const storage = this.environment.getStorage();\n const key = await storage.get(SMART_KEY);\n if (key) {\n await storage.unset(key);\n }\n await storage.unset(SMART_KEY);\n this.state.tokenResponse = {};\n }\n\n /**\n * Creates a new resource in a server-assigned location\n * @see http://hl7.org/fhir/http.html#create\n * @param resource A FHIR resource to be created\n * @param [requestOptions] Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n create(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}`,\n method: \"POST\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Creates a new current version for an existing resource or creates an\n * initial version if no resource already exists for the given id.\n * @see http://hl7.org/fhir/http.html#update\n * @param resource A FHIR resource to be updated\n * @param requestOptions Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n update(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}/${resource.id}`,\n method: \"PUT\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Removes an existing resource.\n * @see http://hl7.org/fhir/http.html#delete\n * @param url Relative URI of the FHIR resource to be deleted\n * (format: `resourceType/id`)\n * @param requestOptions Any options (except `method` which will be fixed\n * to `DELETE`) to be passed to the fetch call.\n * @category Request\n */\n delete(url: string, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n return this.request({\n ...requestOptions,\n url,\n method: \"DELETE\"\n });\n }\n\n /**\n * Makes a JSON Patch to the given resource\n * @see http://hl7.org/fhir/http.html#patch\n * @param url Relative URI of the FHIR resource to be patched\n * (format: `resourceType/id`)\n * @param patch A JSON Patch array to send to the server, For details\n * see https://datatracker.ietf.org/doc/html/rfc6902\n * @param requestOptions Any options to be passed to the fetch call,\n * except for `method`, `url` and `body` which cannot be overridden.\n * @since 2.4.0\n * @category Request\n * @typeParam ResolveType This method would typically resolve with the\n * patched resource or reject with an OperationOutcome. However, this may\n * depend on the server implementation or even on the request headers.\n * For that reason, if the default resolve type (which is\n * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass\n * in your own resolve type parameter.\n */\n async patch(url: string, patch: fhirclient.JsonPatch, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n assertJsonPatch(patch);\n return this.request({\n ...requestOptions,\n url,\n method: \"PATCH\",\n body: JSON.stringify(patch),\n headers: {\n \"prefer\": \"return=presentation\",\n \"content-type\": \"application/json-patch+json; charset=UTF-8\",\n ...requestOptions.headers,\n }\n });\n }\n\n /**\n * @param requestOptions Can be a string URL (relative to the serviceUrl),\n * or an object which will be passed to fetch()\n * @param fhirOptions Additional options to control the behavior\n * @param _resolvedRefs DO NOT USE! Used internally.\n * @category Request\n */\n async request(\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions: fhirclient.FhirOptions = {},\n _resolvedRefs: fhirclient.JsonObject = {}\n ): Promise\n {\n const debugRequest = _debug.extend(\"client:request\");\n assert(requestOptions, \"request requires an url or request options as argument\");\n\n // url -----------------------------------------------------------------\n let url: string;\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n url = String(requestOptions);\n requestOptions = {} as fhirclient.RequestOptions;\n }\n else {\n url = String(requestOptions.url);\n }\n\n url = absolute(url, this.state.serverUrl);\n\n const options = {\n graph: fhirOptions.graph !== false,\n flat : !!fhirOptions.flat,\n pageLimit: fhirOptions.pageLimit ?? 1,\n resolveReferences: (fhirOptions.resolveReferences || []) as string[],\n useRefreshToken: fhirOptions.useRefreshToken !== false,\n onPage: typeof fhirOptions.onPage == \"function\" ?\n fhirOptions.onPage as (\n data: fhirclient.JsonObject | fhirclient.JsonObject[],\n references?: fhirclient.JsonObject | undefined) => any :\n undefined\n };\n\n const signal = (requestOptions as RequestInit).signal || undefined;\n\n // Refresh the access token if needed\n const job = options.useRefreshToken ?\n this.refreshIfNeeded({ signal }).then(() => requestOptions as fhirclient.RequestOptions) :\n Promise.resolve(requestOptions as fhirclient.RequestOptions);\n\n let response: Response | undefined;\n\n return job\n\n // Add the Authorization header now, after the access token might\n // have been updated\n .then(requestOptions => {\n const authHeader = this.getAuthorizationHeader();\n if (authHeader) {\n requestOptions.headers = {\n ...requestOptions.headers,\n authorization: authHeader\n };\n }\n return requestOptions;\n })\n \n // Make the request\n .then(requestOptions => {\n debugRequest(\n \"%s, options: %O, fhirOptions: %O\",\n url,\n requestOptions,\n options\n );\n return request(url, requestOptions).then(result => {\n if (requestOptions.includeResponse) {\n response = (result as fhirclient.CombinedFetchResult).response;\n return (result as fhirclient.CombinedFetchResult).body;\n }\n return result;\n });\n })\n\n // Handle 401 ------------------------------------------------------\n .catch(async (error: HttpError) => {\n if (error.status == 401) {\n\n // !accessToken -> not authorized -> No session. Need to launch.\n if (!this.getState(\"tokenResponse.access_token\")) {\n error.message += \"\\nThis app cannot be accessed directly. Please launch it as SMART app!\";\n throw error;\n }\n\n // auto-refresh not enabled and Session expired.\n // Need to re-launch. Clear state to start over!\n if (!options.useRefreshToken) {\n debugRequest(\"Your session has expired and the useRefreshToken option is set to false. Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n\n // In rare cases we may have a valid access token and a refresh\n // token and the request might still fail with 401 just because\n // the access token has just been revoked.\n\n // otherwise -> auto-refresh failed. Session expired.\n // Need to re-launch. Clear state to start over!\n debugRequest(\"Auto-refresh failed! Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n throw error;\n })\n\n // Handle 403 ------------------------------------------------------\n .catch((error: HttpError) => {\n if (error.status == 403) {\n debugRequest(\"Permission denied! Please make sure that you have requested the proper scopes.\");\n }\n throw error;\n })\n\n .then((data: any) => {\n\n // At this point we don't know what `data` actually is!\n\n // We might get an empty or falsy result. If so return it as is\n // Also handle raw responses\n if (!data || typeof data == \"string\" || data instanceof Response) {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: data,\n response\n }\n }\n return data;\n }\n \n // Resolve References ------------------------------------------\n return (async (_data: fhirclient.FHIR.Resource) => {\n\n if (_data.resourceType == \"Bundle\") {\n await Promise.all(((_data as fhirclient.FHIR.Bundle).entry || []).map(item => resolveRefs(\n item.resource,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n )));\n }\n else {\n await resolveRefs(\n _data,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n );\n }\n\n return _data;\n })(data)\n\n // Pagination ----------------------------------------------\n .then(async _data => {\n if (_data && _data.resourceType == \"Bundle\") {\n const links = (_data.link || []) as fhirclient.FHIR.BundleLink[];\n\n if (options.flat) {\n _data = (_data.entry || []).map(\n (entry: fhirclient.FHIR.BundleEntry) => entry.resource\n );\n }\n\n if (options.onPage) {\n await options.onPage(_data, { ..._resolvedRefs });\n }\n\n if (--options.pageLimit) {\n const next = links.find(l => l.relation == \"next\");\n _data = makeArray(_data);\n if (next && next.url) {\n const nextPage = await this.request(\n {\n url: next.url,\n\n // Aborting the main request (even after it is complete)\n // must propagate to any child requests and abort them!\n // To do so, just pass the same AbortSignal if one is\n // provided.\n signal\n },\n options,\n _resolvedRefs\n );\n\n if (options.onPage) {\n return null;\n }\n\n if (options.resolveReferences.length) {\n Object.assign(_resolvedRefs, nextPage.references);\n return _data.concat(makeArray(nextPage.data || nextPage));\n }\n return _data.concat(makeArray(nextPage));\n }\n }\n }\n return _data;\n })\n\n // Finalize ------------------------------------------------\n .then(_data => {\n if (options.graph) {\n _resolvedRefs = {};\n }\n else if (!options.onPage && options.resolveReferences.length) {\n return {\n data: _data,\n references: _resolvedRefs\n };\n }\n return _data;\n })\n .then(_data => {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: _data,\n response\n }\n }\n return _data;\n });\n });\n }\n\n /**\n * Checks if access token and refresh token are present. If they are, and if\n * the access token is expired or is about to expire in the next 10 seconds,\n * calls `this.refresh()` to obtain new access token.\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refreshIfNeeded(requestOptions: RequestInit = {}): Promise\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n const refreshToken = this.getState(\"tokenResponse.refresh_token\");\n const expiresAt = this.state.expiresAt || 0;\n\n if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) {\n return this.refresh(requestOptions);\n }\n\n return Promise.resolve(this.state);\n }\n\n /**\n * Use the refresh token to obtain new access token. If the refresh token is\n * expired (or this fails for any other reason) it will be deleted from the\n * state, so that we don't enter into loops trying to re-authorize.\n *\n * This method is typically called internally from [[request]] if\n * certain request fails with 401.\n *\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refresh(requestOptions: RequestInit = {}): Promise\n {\n const debugRefresh = _debug.extend(\"client:refresh\");\n debugRefresh(\"Attempting to refresh with refresh_token...\");\n\n const refreshToken = this.state?.tokenResponse?.refresh_token;\n assert(refreshToken, \"Unable to refresh. No refresh_token found.\");\n\n const tokenUri = this.state.tokenUri;\n assert(tokenUri, \"Unable to refresh. No tokenUri found.\");\n\n const scopes = this.getState(\"tokenResponse.scope\") || \"\";\n const hasOfflineAccess = scopes.search(/\\boffline_access\\b/) > -1;\n const hasOnlineAccess = scopes.search(/\\bonline_access\\b/) > -1;\n assert(hasOfflineAccess || hasOnlineAccess, \"Unable to refresh. No offline_access or online_access scope found.\");\n\n // This method is typically called internally from `request` if certain\n // request fails with 401. However, clients will often run multiple\n // requests in parallel which may result in multiple refresh calls.\n // To avoid that, we keep a reference to the current refresh task (if any).\n if (!this._refreshTask) {\n\n const refreshRequestOptions = {\n credentials: this.environment.options.refreshTokenWithCredentials || \"same-origin\",\n ...requestOptions,\n method : \"POST\",\n mode : \"cors\" as RequestMode,\n headers: {\n ...(requestOptions.headers || {}),\n \"content-type\": \"application/x-www-form-urlencoded\"\n },\n body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(refreshToken)}`\n };\n\n // custom authorization header can be passed on manual calls\n if (!(\"authorization\" in refreshRequestOptions.headers)) {\n const { clientSecret, clientId } = this.state;\n if (clientSecret) {\n // @ts-ignore\n refreshRequestOptions.headers.authorization = \"Basic \" + this.environment.btoa(\n clientId + \":\" + clientSecret\n );\n }\n }\n\n this._refreshTask = request(tokenUri, refreshRequestOptions)\n .then(data => {\n assert(data.access_token, \"No access token received\");\n debugRefresh(\"Received new access token response %O\", data);\n this.state.tokenResponse = { ...this.state.tokenResponse, ...data };\n this.state.expiresAt = getAccessTokenExpiration(data, this.environment);\n return this.state;\n })\n .catch((error: Error) => {\n if (this.state?.tokenResponse?.refresh_token) {\n debugRefresh(\"Deleting the expired or invalid refresh token.\");\n delete this.state.tokenResponse.refresh_token;\n }\n throw error;\n })\n .finally(() => {\n this._refreshTask = null;\n const key = this.state.key;\n if (key) {\n this.environment.getStorage().set(key, this.state);\n } else {\n debugRefresh(\"No 'key' found in Clint.state. Cannot persist the instance.\");\n }\n });\n }\n\n return this._refreshTask;\n }\n\n // utils -------------------------------------------------------------------\n\n /**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): fhirclient.ObservationMap\n {\n return byCode(observations, property);\n }\n\n /**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): (...codes: string[]) => any[]\n {\n return byCodes(observations, property);\n }\n\n /**\n * @category Utility\n */\n units = units;\n\n /**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n getPath(obj: Record, path = \"\"): any {\n return getPath(obj, path);\n }\n\n /**\n * Returns a copy of the client state. Accepts a dot-separated path argument\n * (same as for `getPath`) to allow for selecting specific properties.\n * Examples:\n * ```js\n * client.getState(); // -> the entire state object\n * client.getState(\"serverUrl\"); // -> the URL we are connected to\n * client.getState(\"tokenResponse.patient\"); // -> The selected patient ID (if any)\n * ```\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\n getState(path = \"\") {\n return getPath({ ...this.state }, path);\n }\n\n /**\n * Returns a promise that will be resolved with the fhir version as defined\n * in the CapabilityStatement.\n */\n getFhirVersion(): Promise {\n return fetchConformanceStatement(this.state.serverUrl)\n .then((metadata) => metadata.fhirVersion);\n }\n\n /**\n * Returns a promise that will be resolved with the numeric fhir version\n * - 2 for DSTU2\n * - 3 for STU3\n * - 4 for R4\n * - 0 if the version is not known\n */\n getFhirRelease(): Promise {\n return this.getFhirVersion().then(v => (fhirVersions as any)[v] ?? 0);\n }\n}\n","import { fhirclient } from \"./types\";\n\n\nexport default class HttpError extends Error\n{\n /**\n * The HTTP status code for this error\n */\n statusCode: number;\n\n /**\n * The HTTP status code for this error.\n * Note that this is the same as `status`, i.e. the code is available\n * through any of these.\n */\n status: number;\n\n /**\n * The HTTP status text corresponding to this error\n */\n statusText: string;\n\n /**\n * Reference to the HTTP Response object\n */\n response: Response;\n\n constructor(response: Response) {\n super(`${response.status} ${response.statusText}\\nURL: ${response.url}`);\n this.name = \"HttpError\";\n this.response = response;\n this.statusCode = response.status;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n\n async parse()\n {\n if (!this.response.bodyUsed) {\n try {\n const type = this.response.headers.get(\"content-type\") || \"text/plain\";\n if (type.match(/\\bjson\\b/i)) {\n let body = await this.response.json();\n if (body.error) {\n this.message += \"\\n\" + body.error;\n if (body.error_description) {\n this.message += \": \" + body.error_description;\n }\n }\n else {\n this.message += \"\\n\\n\" + JSON.stringify(body, null, 4);\n }\n }\n else if (type.match(/^text\\//i)) {\n let body = await this.response.text();\n if (body) {\n this.message += \"\\n\\n\" + body;\n }\n }\n } catch {\n // ignore\n }\n }\n\n return this;\n }\n\n toJSON() {\n return {\n name : this.name,\n statusCode: this.statusCode,\n status : this.status,\n statusText: this.statusText,\n message : this.message\n };\n }\n}\n","import { ready, authorize, init } from \"../smart\";\nimport Client from \"../Client\";\nimport BrowserStorage from \"../storage/BrowserStorage\";\nimport { fhirclient } from \"../types\";\nimport * as security from \"../security/browser\"\nimport { encodeURL, decode, fromUint8Array } from \"js-base64\"\n\n/**\n * Browser Adapter\n */\nexport default class BrowserAdapter implements fhirclient.Adapter\n{\n /**\n * Stores the URL instance associated with this adapter\n */\n private _url: URL | null = null;\n\n /**\n * Holds the Storage instance associated with this instance\n */\n private _storage: fhirclient.Storage | null = null;\n\n /**\n * Environment-specific options\n */\n options: fhirclient.BrowserFHIRSettings;\n\n security = security;\n\n /**\n * @param options Environment-specific options\n */\n constructor(options: fhirclient.BrowserFHIRSettings = {})\n {\n this.options = {\n // Replaces the browser's current URL\n // using window.history.replaceState API or by reloading.\n replaceBrowserHistory: true,\n\n // When set to true, this variable will fully utilize\n // HTML5 sessionStorage API.\n // This variable can be overridden to false by setting\n // FHIR.oauth2.settings.fullSessionStorageSupport = false.\n // When set to false, the sessionStorage will be keyed\n // by a state variable. This is to allow the embedded IE browser\n // instances instantiated on a single thread to continue to\n // function without having sessionStorage data shared\n // across the embedded IE instances.\n fullSessionStorageSupport: true,\n\n // Do we want to send cookies while making a request to the token\n // endpoint in order to obtain new access token using existing\n // refresh token. In rare cases the auth server might require the\n // client to send cookies along with those requests. In this case\n // developers will have to change this before initializing the app\n // like so:\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"include\";`\n // or\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"same-origin\";`\n // Can be one of:\n // \"include\" - always send cookies\n // \"same-origin\" - only send cookies if we are on the same domain (default)\n // \"omit\" - do not send cookies\n refreshTokenWithCredentials: \"same-origin\",\n\n ...options\n };\n }\n\n /**\n * Given a relative path, returns an absolute url using the instance base URL\n */\n relative(path: string): string\n {\n return new URL(path, this.getUrl().href).href;\n }\n\n /**\n * In browsers we need to be able to (dynamically) check if fhir.js is\n * included in the page. If it is, it should have created a \"fhir\" variable\n * in the global scope.\n */\n get fhir()\n {\n // @ts-ignore\n return typeof fhir === \"function\" ? fhir : null;\n }\n\n /**\n * Given the current environment, this method must return the current url\n * as URL instance\n */\n getUrl(): URL\n {\n if (!this._url) {\n this._url = new URL(location + \"\");\n }\n return this._url;\n }\n\n /**\n * Given the current environment, this method must redirect to the given\n * path\n */\n redirect(to: string): void\n {\n location.href = to;\n }\n\n /**\n * Returns a BrowserStorage object which is just a wrapper around\n * sessionStorage\n */\n getStorage(): BrowserStorage\n {\n if (!this._storage) {\n this._storage = new BrowserStorage();\n }\n return this._storage;\n }\n\n /**\n * Returns a reference to the AbortController constructor. In browsers,\n * AbortController will always be available as global (native or polyfilled)\n */\n getAbortController()\n {\n return AbortController;\n }\n\n /**\n * ASCII string to Base64\n */\n atob(str: string): string\n {\n return window.atob(str);\n }\n\n /**\n * Base64 to ASCII string\n */\n btoa(str: string): string\n {\n return window.btoa(str);\n }\n\n base64urlencode(input: string | Uint8Array)\n {\n if (typeof input == \"string\") {\n return encodeURL(input)\n }\n return fromUint8Array(input, true)\n }\n\n base64urldecode(input: string)\n {\n return decode(input)\n }\n\n /**\n * Creates and returns adapter-aware SMART api. Not that while the shape of\n * the returned object is well known, the arguments to this function are not.\n * Those who override this method are free to require any environment-specific\n * arguments. For example in node we will need a request, a response and\n * optionally a storage or storage factory function.\n */\n getSmartApi(): fhirclient.SMART\n {\n return {\n ready : (...args: any[]) => ready(this, ...args),\n authorize: options => authorize(this, options),\n init : options => init(this, options),\n client : (state: string | fhirclient.ClientState) => new Client(this, state),\n options : this.options,\n utils: {\n security\n }\n };\n }\n}\n","\n// Note: the following 2 imports appear as unused but they affect how tsc is\n// generating type definitions!\nimport { fhirclient } from \"../types\";\nimport Client from \"../Client\";\n\n// In Browsers we create an adapter, get the SMART api from it and build the\n// global FHIR object\nimport BrowserAdapter from \"../adapters/BrowserAdapter\";\n\nconst adapter = new BrowserAdapter();\nconst { ready, authorize, init, client, options, utils } = adapter.getSmartApi();\n\n// We have two kinds of browser builds - \"pure\" for new browsers and \"legacy\"\n// for old ones. In pure builds we assume that the browser supports everything\n// we need. In legacy mode, the library also acts as a polyfill. Babel will\n// automatically polyfill everything except \"fetch\", which we have to handle\n// manually.\n// @ts-ignore\nif (typeof FHIRCLIENT_PURE == \"undefined\") {\n const fetch = require(\"cross-fetch\");\n require(\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\");\n if (!window.fetch) {\n window.fetch = fetch.default;\n window.Headers = fetch.Headers;\n window.Request = fetch.Request;\n window.Response = fetch.Response;\n }\n}\n\n// $lab:coverage:off$\nconst FHIR = {\n AbortController: window.AbortController,\n client,\n utils,\n oauth2: {\n settings: options,\n ready,\n authorize,\n init\n }\n};\n\nexport = FHIR;\n// $lab:coverage:on$\n","/*\n * This file contains some shared functions. They are used by other modules, but\n * are defined here so that tests can import this library and test them.\n */\n\nimport HttpError from \"./HttpError\";\nimport { patientParams } from \"./settings\";\nimport { fhirclient } from \"./types\";\nconst debug = require(\"debug\");\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { fetch } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst _debug = debug(\"FHIR\");\nexport { _debug as debug };\n\n/**\n * The cache for the `getAndCache` function\n */\nconst cache: Record = {};\n\n/**\n * A namespace with functions for converting between different measurement units\n */\nexport const units = {\n cm({ code, value }: fhirclient.CodeValue) {\n ensureNumerical({ code, value });\n if (code == \"cm\" ) return value;\n if (code == \"m\" ) return value * 100;\n if (code == \"in\" ) return value * 2.54;\n if (code == \"[in_us]\") return value * 2.54;\n if (code == \"[in_i]\" ) return value * 2.54;\n if (code == \"ft\" ) return value * 30.48;\n if (code == \"[ft_us]\") return value * 30.48;\n throw new Error(\"Unrecognized length unit: \" + code);\n },\n kg({ code, value }: fhirclient.CodeValue){\n ensureNumerical({ code, value });\n if (code == \"kg\" ) return value;\n if (code == \"g\" ) return value / 1000;\n if (code.match(/lb/)) return value / 2.20462;\n if (code.match(/oz/)) return value / 35.274;\n throw new Error(\"Unrecognized weight unit: \" + code);\n },\n any(pq: fhirclient.CodeValue){\n ensureNumerical(pq);\n return pq.value;\n }\n};\n\n/**\n * Assertion function to guard arguments for `units` functions\n */\nfunction ensureNumerical({ value, code }: fhirclient.CodeValue) {\n if (typeof value !== \"number\") {\n throw new Error(\"Found a non-numerical unit: \" + value + \" \" + code);\n }\n}\n\n/**\n * Used in fetch Promise chains to reject if the \"ok\" property is not true\n */\nexport async function checkResponse(resp: Response): Promise {\n if (!resp.ok) {\n const error = new HttpError(resp);\n await error.parse();\n throw error;\n }\n return resp;\n}\n\n/**\n * Used in fetch Promise chains to return the JSON version of the response.\n * Note that `resp.json()` will throw on empty body so we use resp.text()\n * instead.\n */\nexport function responseToJSON(resp: Response): Promise {\n return resp.text().then(text => text.length ? JSON.parse(text) : \"\");\n}\n\nexport function loweCaseKeys | any[] | undefined>(obj: T): T {\n \n // Can be undefined to signal that this key should be removed\n if (!obj) {\n return obj as T\n }\n\n // Arrays are valid values in case of recursive calls\n if (Array.isArray(obj)) {\n return obj.map(v => v && typeof v === \"object\" ? loweCaseKeys(v) : v) as unknown as T;\n }\n\n // Plain object\n let out: Record = {};\n Object.keys(obj).forEach(key => {\n const lowerKey = key.toLowerCase()\n const v = (obj as Record)[key]\n out[lowerKey] = v && typeof v == \"object\" ? loweCaseKeys(v) : v;\n });\n return out as T;\n}\n\n/**\n * This is our built-in request function. It does a few things by default\n * (unless told otherwise):\n * - Makes CORS requests\n * - Sets accept header to \"application/json\"\n * - Handles errors\n * - If the response is json return the json object\n * - If the response is text return the result text\n * - Otherwise return the response object on which we call stuff like `.blob()`\n */\nexport function request(\n url: string | Request,\n requestOptions: fhirclient.FetchOptions = {}\n): Promise\n{\n const { includeResponse, ...options } = requestOptions;\n return fetch(url, {\n mode: \"cors\",\n ...options,\n headers: {\n accept: \"application/json\",\n ...loweCaseKeys(options.headers)\n }\n })\n .then(checkResponse)\n .then((res: Response) => {\n const type = res.headers.get(\"content-type\") + \"\";\n if (type.match(/\\bjson\\b/i)) {\n return responseToJSON(res).then(body => ({ res, body }));\n }\n if (type.match(/^text\\//i)) {\n return res.text().then(body => ({ res, body }));\n }\n return { res };\n })\n .then(({res, body}: {res:Response, body?:fhirclient.JsonObject|string}) => {\n\n // Some servers will reply after CREATE with json content type but with\n // empty body. In this case check if a location header is received and\n // fetch that to use it as the final result.\n if (!body && res.status == 201) {\n const location = res.headers.get(\"location\");\n if (location) {\n return request(location, { ...options, method: \"GET\", body: null, includeResponse });\n }\n }\n\n if (includeResponse) {\n return { body, response: res };\n }\n\n // For any non-text and non-json response return the Response object.\n // This to let users decide if they want to call text(), blob() or\n // something else on it\n if (body === undefined) {\n return res;\n }\n\n // Otherwise just return the parsed body (can also be \"\" or null)\n return body;\n });\n}\n\n/**\n * Makes a request using `fetch` and stores the result in internal memory cache.\n * The cache is cleared when the page is unloaded.\n * @param url The URL to request\n * @param requestOptions Request options\n * @param force If true, reload from source and update the cache, even if it has\n * already been cached.\n */\nexport function getAndCache(url: string, requestOptions?: RequestInit, force: boolean = process.env.NODE_ENV === \"test\"): Promise {\n if (force || !cache[url]) {\n cache[url] = request(url, requestOptions);\n return cache[url];\n }\n return Promise.resolve(cache[url]);\n}\n\n/**\n * Fetches the conformance statement from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n * @param [requestOptions] Any options passed to the fetch call\n */\nexport function fetchConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \"metadata\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(\n `Failed to fetch the conformance statement from \"${url}\". ${ex}`\n );\n });\n}\n\n\n/**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\nexport function getPath(obj: Record, path = \"\"): any {\n path = path.trim();\n if (!path) {\n return obj;\n }\n\n let segments = path.split(\".\");\n let result = obj;\n\n while (result && segments.length) {\n const key = segments.shift();\n if (!key && Array.isArray(result)) {\n return result.map(o => getPath(o, segments.join(\".\")));\n } else {\n result = result[key as string];\n }\n }\n\n return result;\n}\n\n/**\n * Like getPath, but if the node is found, its value is set to @value\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @param value The value to set\n * @param createEmpty If true, create missing intermediate objects or arrays\n * @returns The modified object\n */\nexport function setPath(obj: Record, path: string, value: any, createEmpty = false): Record {\n path.trim().split(\".\").reduce(\n (out, key, idx, arr) => {\n if (out && idx === arr.length - 1) {\n out[key] = value;\n }\n else {\n if (out && out[key] === undefined && createEmpty) {\n out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {};\n }\n return out ? out[key] : undefined;\n }\n },\n obj\n );\n return obj;\n}\n\n/**\n * If the argument is an array returns it as is. Otherwise puts it in an array\n * (`[arg]`) and returns the result\n * @param arg The element to test and possibly convert to array\n * @category Utility\n */\nexport function makeArray(arg: any): T[] {\n if (Array.isArray(arg)) {\n return arg;\n }\n return [arg];\n}\n\n/**\n * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl\n * is not provided, the result would be a rooted path (one that starts with `/`).\n * @param path The path to convert\n * @param baseUrl The base URL\n */\nexport function absolute(path: string, baseUrl?: string): string\n{\n if (path.match(/^http/)) return path;\n if (path.match(/^urn/)) return path;\n return String(baseUrl || \"\").replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n}\n\n/**\n * Generates random strings. By default this returns random 8 characters long\n * alphanumeric strings.\n * @param strLength The length of the output string. Defaults to 8.\n * @param charSet A string containing all the possible characters.\n * Defaults to all the upper and lower-case letters plus digits.\n * @category Utility\n */\nexport function randomString(\n strLength = 8,\n charSet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n): string\n{\n const result = [];\n const len = charSet.length;\n while (strLength--) {\n result.push(charSet.charAt(Math.floor(Math.random() * len)));\n }\n return result.join(\"\");\n}\n\n/**\n * Decodes a JWT token and returns it's body.\n * @param token The token to read\n * @param env An `Adapter` or any other object that has an `atob` method\n * @category Utility\n */\nexport function jwtDecode(token: string, env: fhirclient.Adapter): Record | null\n{\n const payload = token.split(\".\")[1];\n return payload ? JSON.parse(env.atob(payload)) : null;\n}\n\n/**\n * Add a supplied number of seconds to the supplied Date, returning\n * an integer number of seconds since the epoch\n * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds)\n * @param from Initial time (defaults to current time)\n */\nexport function getTimeInFuture(secondsAhead: number = 120, from?: Date | number): number {\n return Math.floor(+(from || new Date()) / 1000 + secondsAhead) \n}\n\n/**\n * Given a token response, computes and returns the expiresAt timestamp.\n * Note that this should only be used immediately after an access token is\n * received, otherwise the computed timestamp will be incorrect.\n * @param tokenResponse \n * @param env \n */\nexport function getAccessTokenExpiration(tokenResponse: fhirclient.TokenResponse, env: fhirclient.Adapter): number\n{\n const now = Math.floor(Date.now() / 1000);\n\n // Option 1 - using the expires_in property of the token response\n if (tokenResponse.expires_in) {\n return now + tokenResponse.expires_in;\n }\n\n // Option 2 - using the exp property of JWT tokens (must not assume JWT!)\n if (tokenResponse.access_token) {\n let tokenBody = jwtDecode(tokenResponse.access_token, env);\n if (tokenBody && tokenBody.exp) {\n return tokenBody.exp;\n }\n }\n\n // Option 3 - if none of the above worked set this to 5 minutes after now\n return now + 300;\n}\n\n/**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): fhirclient.ObservationMap\n{\n const ret: fhirclient.ObservationMap = {};\n\n function handleCodeableConcept(concept: fhirclient.FHIR.CodeableConcept, observation: fhirclient.FHIR.Observation) {\n if (concept && Array.isArray(concept.coding)) {\n concept.coding.forEach(({ code }) => {\n if (code) {\n ret[code] = ret[code] || [] as fhirclient.FHIR.Observation[];\n ret[code].push(observation);\n }\n });\n }\n }\n\n makeArray(observations).forEach(o => {\n if (o.resourceType === \"Observation\" && o[property]) {\n if (Array.isArray(o[property])) {\n o[property].forEach((concept: fhirclient.FHIR.CodeableConcept) => handleCodeableConcept(concept, o));\n } else {\n handleCodeableConcept(o[property], o);\n }\n }\n });\n\n return ret;\n}\n\n/**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): (...codes: string[]) => any[]\n{\n const bank = byCode(observations, property);\n return (...codes) => codes\n .filter(code => (code + \"\") in bank)\n .reduce(\n (prev, code) => prev.concat(bank[code + \"\"]),\n [] as fhirclient.FHIR.Observation[]\n );\n}\n\n/**\n * Given a conformance statement and a resource type, returns the name of the\n * URL parameter that can be used to scope the resource type by patient ID.\n */\nexport function getPatientParam(conformance: fhirclient.FHIR.CapabilityStatement, resourceType: string): string\n{\n // Find what resources are supported by this server\n const resources = getPath(conformance, \"rest.0.resource\") || [];\n\n // Check if this resource is supported\n const meta = resources.find((r: any) => r.type === resourceType);\n if (!meta) {\n throw new Error(`Resource \"${resourceType}\" is not supported by this FHIR server`);\n }\n\n // Check if any search parameters are available for this resource\n if (!Array.isArray(meta.searchParam)) {\n throw new Error(`No search parameters supported for \"${resourceType}\" on this FHIR server`);\n }\n\n // This is a rare case but could happen in generic workflows\n if (resourceType == \"Patient\" && meta.searchParam.find((x: any) => x.name == \"_id\")) {\n return \"_id\";\n }\n\n // Now find the first possible parameter name\n const out = patientParams.find(p => meta.searchParam.find((x: any) => x.name == p));\n\n // If there is no match\n if (!out) {\n throw new Error(\"I don't know what param to use for \" + resourceType);\n }\n\n return out;\n}\n\n/**\n * Resolves a reference to target window. It may also open new window or tab if\n * the `target = \"popup\"` or `target = \"_blank\"`.\n * @param target\n * @param width Only used when `target = \"popup\"`\n * @param height Only used when `target = \"popup\"`\n */\nexport async function getTargetWindow(target: fhirclient.WindowTarget, width: number = 800, height: number = 720): Promise\n{\n // The target can be a function that returns the target. This can be\n // used to open a layer pop-up with an iframe and then return a reference\n // to that iframe (or its name)\n if (typeof target == \"function\") {\n target = await target();\n }\n\n // The target can be a window reference\n if (target && typeof target == \"object\") {\n return target;\n }\n\n // At this point target must be a string\n if (typeof target != \"string\") {\n _debug(\"Invalid target type '%s'. Failing back to '_self'.\", typeof target);\n return self;\n }\n\n // Current window\n if (target == \"_self\") {\n return self;\n }\n\n // The parent frame\n if (target == \"_parent\") {\n return parent;\n }\n\n // The top window\n if (target == \"_top\") {\n return top || self;\n }\n\n // New tab or window\n if (target == \"_blank\") {\n let error, targetWindow: Window | null = null;\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\");\n if (!targetWindow) {\n throw new Error(\"Perhaps window.open was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Popup window\n if (target == \"popup\") {\n let error, targetWindow: Window | null = null;\n // if (!targetWindow || targetWindow.closed) {\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\", [\n \"height=\" + height,\n \"width=\" + width,\n \"menubar=0\",\n \"resizable=1\",\n \"status=0\",\n \"top=\" + (screen.height - height) / 2,\n \"left=\" + (screen.width - width) / 2\n ].join(\",\"));\n if (!targetWindow) {\n throw new Error(\"Perhaps the popup window was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Frame or window by name\n const winOrFrame: Window = frames[target as any];\n if (winOrFrame) {\n return winOrFrame;\n }\n\n _debug(\"Unknown target '%s'. Failing back to '_self'.\", target);\n return self;\n}\n\nexport function assert(condition: any, message: string): asserts condition {\n if (!(condition)) {\n throw new Error(message)\n }\n}\n\nexport function assertJsonPatch(patch: fhirclient.JsonPatch): asserts patch {\n assert(Array.isArray(patch), \"The JSON patch must be an array\")\n assert(patch.length > 0, \"The JSON patch array should not be empty\")\n patch.forEach((operation: fhirclient.JsonPatchOperation) => {\n assert(\n [\"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"].indexOf(operation.op) > -1,\n 'Each patch operation must have an \"op\" property which must be one of: \"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"'\n )\n assert(operation.path && typeof operation.path, `Invalid \"${operation.op}\" operation. Missing \"path\" property`)\n \n if (operation.op == \"add\" || operation.op == \"replace\" || operation.op == \"test\") {\n assert(\"value\" in operation, `Invalid \"${operation.op}\" operation. Missing \"value\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else if (operation.op == \"move\" || operation.op == \"copy\") {\n assert(typeof operation.from == \"string\", `Invalid \"${operation.op}\" operation. Requires a string \"from\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else {\n assert(Object.keys(operation).length == 2, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n })\n}\n","import { encodeURL, fromUint8Array } from \"js-base64\"\nimport { fhirclient } from \"../types\"\n\n\nconst crypto: Crypto = typeof globalThis === \"object\" && globalThis.crypto ?\n globalThis.crypto :\n require(\"isomorphic-webcrypto\").default;\n\nconst subtle = () => {\n if (!crypto.subtle) {\n if (!globalThis.isSecureContext) {\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available unless you run this app in secure context (using \" +\n \"HTTPS or running locally). See \" +\n \"https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n )\n }\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available in the current environment (no crypto.subtle)\"\n )\n }\n return crypto.subtle\n}\n\n\ninterface PkcePair {\n codeChallenge: string\n codeVerifier: string\n}\n\nconst ALGS = {\n ES384: {\n name: \"ECDSA\",\n namedCurve: \"P-384\"\n } as EcKeyGenParams,\n RS384: {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 4096,\n publicExponent: new Uint8Array([1, 0, 1]),\n hash: {\n name: 'SHA-384'\n }\n } as RsaHashedKeyGenParams\n};\n\nexport function randomBytes(count: number): Uint8Array {\n return crypto.getRandomValues(new Uint8Array(count));\n}\n\nexport async function digestSha256(payload: string): Promise {\n const prepared = new TextEncoder().encode(payload);\n const hash = await subtle().digest('SHA-256', prepared);\n return new Uint8Array(hash);\n}\n\nexport const generatePKCEChallenge = async (entropy = 96): Promise => {\n const inputBytes = randomBytes(entropy)\n const codeVerifier = fromUint8Array(inputBytes, true)\n const codeChallenge = fromUint8Array(await digestSha256(codeVerifier), true)\n return { codeChallenge, codeVerifier }\n}\n\nexport async function importJWK(jwk: fhirclient.JWK): Promise {\n // alg is optional in JWK but we need it here!\n if (!jwk.alg) {\n throw new Error('The \"alg\" property of the JWK must be set to \"ES384\" or \"RS384\"')\n }\n\n // Use of the \"key_ops\" member is OPTIONAL, unless the application requires its presence.\n // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3\n // \n // In our case the app will only import private keys so we can assume \"sign\"\n if (!Array.isArray(jwk.key_ops)) {\n jwk.key_ops = [\"sign\"]\n }\n\n // In this case the JWK has a \"key_ops\" array and \"sign\" is not listed\n if (!jwk.key_ops.includes(\"sign\")) {\n throw new Error('The \"key_ops\" property of the JWK does not contain \"sign\"')\n }\n\n try {\n return await subtle().importKey(\n \"jwk\",\n jwk,\n ALGS[jwk.alg],\n jwk.ext === true,\n jwk.key_ops// || ['sign']\n )\n } catch (e) {\n throw new Error(`The ${jwk.alg} is not supported by this browser: ${e}`)\n }\n}\n\nexport async function signCompactJws(alg: keyof typeof ALGS, privateKey: CryptoKey, header: any, payload: any): Promise {\n\n const jwtHeader = JSON.stringify({ ...header, alg });\n const jwtPayload = JSON.stringify(payload);\n const jwtAuthenticatedContent = `${encodeURL(jwtHeader)}.${encodeURL(jwtPayload)}`;\n\n const signature = await subtle().sign(\n { ...privateKey.algorithm, hash: 'SHA-384' },\n privateKey,\n new TextEncoder().encode(jwtAuthenticatedContent)\n );\n\n return `${jwtAuthenticatedContent}.${fromUint8Array(new Uint8Array(signature), true)}`\n}\n","/**\n * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4\n */\nexport const patientCompartment = [\n \"Account\",\n \"AdverseEvent\",\n \"AllergyIntolerance\",\n \"Appointment\",\n \"AppointmentResponse\",\n \"AuditEvent\",\n \"Basic\",\n \"BodySite\",\n \"BodyStructure\",\n \"CarePlan\",\n \"CareTeam\",\n \"ChargeItem\",\n \"Claim\",\n \"ClaimResponse\",\n \"ClinicalImpression\",\n \"Communication\",\n \"CommunicationRequest\",\n \"Composition\",\n \"Condition\",\n \"Consent\",\n \"Coverage\",\n \"CoverageEligibilityRequest\",\n \"CoverageEligibilityResponse\",\n \"DetectedIssue\",\n \"DeviceRequest\",\n \"DeviceUseRequest\",\n \"DeviceUseStatement\",\n \"DiagnosticOrder\",\n \"DiagnosticReport\",\n \"DocumentManifest\",\n \"DocumentReference\",\n \"EligibilityRequest\",\n \"Encounter\",\n \"EnrollmentRequest\",\n \"EpisodeOfCare\",\n \"ExplanationOfBenefit\",\n \"FamilyMemberHistory\",\n \"Flag\",\n \"Goal\",\n \"Group\",\n \"ImagingManifest\",\n \"ImagingObjectSelection\",\n \"ImagingStudy\",\n \"Immunization\",\n \"ImmunizationEvaluation\",\n \"ImmunizationRecommendation\",\n \"Invoice\",\n \"List\",\n \"MeasureReport\",\n \"Media\",\n \"MedicationAdministration\",\n \"MedicationDispense\",\n \"MedicationOrder\",\n \"MedicationRequest\",\n \"MedicationStatement\",\n \"MolecularSequence\",\n \"NutritionOrder\",\n \"Observation\",\n \"Order\",\n \"Patient\",\n \"Person\",\n \"Procedure\",\n \"ProcedureRequest\",\n \"Provenance\",\n \"QuestionnaireResponse\",\n \"ReferralRequest\",\n \"RelatedPerson\",\n \"RequestGroup\",\n \"ResearchSubject\",\n \"RiskAssessment\",\n \"Schedule\",\n \"ServiceRequest\",\n \"Specimen\",\n \"SupplyDelivery\",\n \"SupplyRequest\",\n \"VisionPrescription\"\n];\n\n/**\n * Map of FHIR releases and their abstract version as number\n */\nexport const fhirVersions = {\n \"0.4.0\": 2,\n \"0.5.0\": 2,\n \"1.0.0\": 2,\n \"1.0.1\": 2,\n \"1.0.2\": 2,\n \"1.1.0\": 3,\n \"1.4.0\": 3,\n \"1.6.0\": 3,\n \"1.8.0\": 3,\n \"3.0.0\": 3,\n \"3.0.1\": 3,\n \"3.3.0\": 4,\n \"3.5.0\": 4,\n \"4.0.0\": 4,\n \"4.0.1\": 4\n};\n\n/**\n * Combined (FHIR R2-R4) list of search parameters that can be used to scope\n * a request by patient ID.\n */\nexport const patientParams = [\n \"patient\",\n \"subject\",\n \"requester\",\n \"member\",\n \"actor\",\n \"beneficiary\"\n];\n\n/**\n * The name of the sessionStorage entry that contains the current key\n */\nexport const SMART_KEY = \"SMART_KEY\";\n","/* global window */\nimport {\n debug as _debug,\n request,\n getPath,\n getTimeInFuture,\n randomString,\n getAndCache,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n getTargetWindow,\n assert\n} from \"./lib\";\nimport Client from \"./Client\";\nimport { SMART_KEY } from \"./settings\";\nimport { fhirclient } from \"./types\";\n\nconst debug = _debug.extend(\"oauth2\");\n\nexport { SMART_KEY as KEY };\n\nfunction isBrowser() {\n return typeof window === \"object\";\n}\n\n/**\n * Fetches the well-known json file from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n */\nexport function fetchWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \".well-known/smart-configuration\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(`Failed to fetch the well-known json \"${url}\". ${ex.message}`);\n });\n}\n\n/**\n * Fetch a \"WellKnownJson\" and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchWellKnownJson(baseUrl, requestOptions).then(meta => {\n if (!meta.authorization_endpoint || !meta.token_endpoint) {\n throw new Error(\"Invalid wellKnownJson\");\n }\n return {\n registrationUri : meta.registration_endpoint || \"\",\n authorizeUri : meta.authorization_endpoint,\n tokenUri : meta.token_endpoint,\n codeChallengeMethods: meta.code_challenge_methods_supported || []\n };\n });\n}\n\n/**\n * Fetch a `CapabilityStatement` and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchConformanceStatement(baseUrl, requestOptions).then(meta => {\n const nsUri = \"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris\";\n const extensions = ((getPath(meta || {}, \"rest.0.security.extension\") || []) as Array>)\n .filter(e => e.url === nsUri)\n .map(o => o.extension)[0];\n\n const out:fhirclient.OAuthSecurityExtensions = {\n registrationUri : \"\",\n authorizeUri : \"\",\n tokenUri : \"\",\n codeChallengeMethods: [],\n };\n\n if (extensions) {\n extensions.forEach(ext => {\n if (ext.url === \"register\") {\n out.registrationUri = ext.valueUri;\n }\n if (ext.url === \"authorize\") {\n out.authorizeUri = ext.valueUri;\n }\n if (ext.url === \"token\") {\n out.tokenUri = ext.valueUri;\n }\n });\n }\n\n return out;\n });\n}\n\n\n/**\n * Given a FHIR server, returns an object with it's Oauth security endpoints\n * that we are interested in. This will try to find the info in both the\n * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever\n * Arrives first will be used and the other request will be aborted.\n * @param [baseUrl = \"/\"] Fhir server base URL\n */\nexport function getSecurityExtensions(baseUrl = \"/\"): Promise\n{\n return getSecurityExtensionsFromWellKnownJson(baseUrl)\n .catch(() => getSecurityExtensionsFromConformanceStatement(baseUrl));\n}\n\n/**\n * Starts the SMART Launch Sequence.\n * > **IMPORTANT**:\n * `authorize()` will end up redirecting you to the authorization server.\n * This means that you should not add anything to the returned promise chain.\n * Any code written directly after the authorize() call might not be executed\n * due to that redirect!\n * @param env\n * @param [params]\n */\nexport async function authorize(\n env: fhirclient.Adapter,\n params: fhirclient.AuthorizeParams | fhirclient.AuthorizeParams[] = {}\n): Promise\n{\n const url = env.getUrl();\n\n // Multiple config for EHR launches ---------------------------------------\n if (Array.isArray(params)) {\n const urlISS = url.searchParams.get(\"iss\") || url.searchParams.get(\"fhirServiceUrl\");\n if (!urlISS) {\n throw new Error(\n 'Passing in an \"iss\" url parameter is required if authorize ' +\n 'uses multiple configurations'\n );\n }\n // pick the right config\n const cfg = params.find(x => {\n if (x.issMatch) {\n if (typeof x.issMatch === \"function\") {\n return !!x.issMatch(urlISS);\n }\n if (typeof x.issMatch === \"string\") {\n return x.issMatch === urlISS;\n }\n if (x.issMatch instanceof RegExp) {\n return x.issMatch.test(urlISS);\n }\n }\n return false;\n });\n assert(cfg, `No configuration found matching the current \"iss\" parameter \"${urlISS}\"`);\n return await authorize(env, cfg);\n }\n // ------------------------------------------------------------------------\n\n // Obtain input\n const {\n clientSecret,\n fakeTokenResponse,\n encounterId,\n target,\n width,\n height,\n pkceMode,\n clientPublicKeySetUrl,\n // Two deprecated values to use as fall-back values later\n redirect_uri,\n client_id,\n } = params;\n \n let {\n iss,\n launch,\n patientId,\n fhirServiceUrl,\n redirectUri,\n noRedirect,\n scope = \"\",\n clientId,\n completeInTarget,\n clientPrivateJwk\n } = params;\n\n const storage = env.getStorage();\n\n // For these, a url param takes precedence over inline option\n iss = url.searchParams.get(\"iss\") || iss;\n fhirServiceUrl = url.searchParams.get(\"fhirServiceUrl\") || fhirServiceUrl;\n launch = url.searchParams.get(\"launch\") || launch;\n patientId = url.searchParams.get(\"patientId\") || patientId;\n clientId = url.searchParams.get(\"clientId\") || clientId;\n\n // If there's still no clientId or redirectUri, check deprecated params \n if (!clientId) {\n clientId = client_id;\n }\n if (!redirectUri) {\n redirectUri = redirect_uri;\n }\n\n if (!redirectUri) {\n redirectUri = env.relative(\".\");\n } else if (!redirectUri.match(/^https?\\:\\/\\//)) {\n redirectUri = env.relative(redirectUri);\n }\n\n const serverUrl = String(iss || fhirServiceUrl || \"\");\n\n // Validate input\n if (!serverUrl) {\n throw new Error(\n \"No server url found. It must be specified as `iss` or as \" +\n \"`fhirServiceUrl` parameter\"\n );\n }\n\n if (iss) {\n debug(\"Making %s launch...\", launch ? \"EHR\" : \"standalone\");\n }\n\n // append launch scope if needed\n if (launch && !scope.match(/launch/)) {\n scope += \" launch\";\n }\n\n if (isBrowser()) {\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) {\n \n // completeInTarget will default to true if authorize is called from\n // within an iframe. This is to avoid issues when the entire app\n // happens to be rendered in an iframe (including in some EHRs),\n // even though that was not how the app developer's intention.\n completeInTarget = inFrame;\n\n // In this case we can't always make the best decision so ask devs\n // to be explicit in their configuration.\n console.warn(\n 'Your app is being authorized from within an iframe or popup ' +\n 'window. Please be explicit and provide a \"completeInTarget\" ' +\n 'option. Use \"true\" to complete the authorization in the ' +\n 'same window, or \"false\" to try to complete it in the parent ' +\n 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html'\n );\n }\n }\n\n // If `authorize` is called, make sure we clear any previous state (in case\n // this is a re-authorize)\n const oldKey = await storage.get(SMART_KEY);\n await storage.unset(oldKey);\n\n // create initial state\n const stateKey = randomString(16);\n const state: fhirclient.ClientState = {\n clientId,\n scope,\n redirectUri,\n serverUrl,\n clientSecret,\n clientPrivateJwk,\n tokenResponse: {},\n key: stateKey,\n completeInTarget,\n clientPublicKeySetUrl\n };\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n if (fullSessionStorageSupport) {\n await storage.set(SMART_KEY, stateKey);\n }\n\n // fakeTokenResponse to override stuff (useful in development)\n if (fakeTokenResponse) {\n Object.assign(state.tokenResponse!, fakeTokenResponse);\n }\n\n // Fixed patientId (useful in development)\n if (patientId) {\n Object.assign(state.tokenResponse!, { patient: patientId });\n }\n\n // Fixed encounterId (useful in development)\n if (encounterId) {\n Object.assign(state.tokenResponse!, { encounter: encounterId });\n }\n\n let redirectUrl = redirectUri + \"?state=\" + encodeURIComponent(stateKey);\n\n // bypass oauth if fhirServiceUrl is used (but iss takes precedence)\n if (fhirServiceUrl && !iss) {\n debug(\"Making fake launch...\");\n await storage.set(stateKey, state);\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // Get oauth endpoints and add them to the state\n const extensions = await getSecurityExtensions(serverUrl);\n Object.assign(state, extensions);\n await storage.set(stateKey, state);\n\n // If this happens to be an open server and there is no authorizeUri\n if (!state.authorizeUri) {\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // build the redirect uri\n const redirectParams = [\n \"response_type=code\",\n \"client_id=\" + encodeURIComponent(clientId || \"\"),\n \"scope=\" + encodeURIComponent(scope),\n \"redirect_uri=\" + encodeURIComponent(redirectUri),\n \"aud=\" + encodeURIComponent(serverUrl),\n \"state=\" + encodeURIComponent(stateKey)\n ];\n\n // also pass this in case of EHR launch\n if (launch) {\n redirectParams.push(\"launch=\" + encodeURIComponent(launch));\n }\n\n if (shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) {\n let codes = await env.security.generatePKCEChallenge()\n Object.assign(state, codes);\n await storage.set(stateKey, state);\n redirectParams.push(\"code_challenge=\" + state.codeChallenge);// note that the challenge is ALREADY encoded properly\n redirectParams.push(\"code_challenge_method=S256\");\n }\n \n redirectUrl = state.authorizeUri + \"?\" + redirectParams.join(\"&\");\n\n if (noRedirect) {\n return redirectUrl;\n }\n\n if (target && isBrowser()) {\n let win: Window;\n\n win = await getTargetWindow(target, width, height);\n\n if (win !== self) {\n try {\n // Also remove any old state from the target window and then\n // transfer the current state there\n win.sessionStorage.removeItem(oldKey);\n win.sessionStorage.setItem(stateKey, JSON.stringify(state));\n } catch (ex) {\n _debug(`Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n win = self;\n }\n }\n\n if (win !== self) {\n try {\n win.location.href = redirectUrl;\n self.addEventListener(\"message\", onMessage);\n } catch (ex) {\n _debug(`Failed to modify window.location. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n self.location.href = redirectUrl;\n }\n } else {\n self.location.href = redirectUrl;\n }\n\n return;\n }\n else {\n return await env.redirect(redirectUrl);\n }\n}\n\nfunction shouldIncludeChallenge(S256supported: boolean, pkceMode?: string) {\n if (pkceMode === \"disabled\") {\n return false;\n }\n if (pkceMode === \"unsafeV1\") {\n return true;\n }\n if (pkceMode === \"required\") {\n if (!S256supported) {\n throw new Error(\"Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration.\");\n }\n return true;\n }\n return S256supported;\n}\n\n/**\n * Checks if called within a frame. Only works in browsers!\n * If the current window has a `parent` or `top` properties that refer to\n * another window, returns true. If trying to access `top` or `parent` throws an\n * error, returns true. Otherwise returns `false`.\n */\nexport function isInFrame() {\n try {\n return self !== top && parent !== self;\n } catch (e) {\n return true;\n }\n}\n\n/**\n * Checks if called within another window (popup or tab). Only works in browsers!\n * To consider itself called in a new window, this function verifies that:\n * 1. `self === top` (not in frame)\n * 2. `!!opener && opener !== self` The window has an opener\n * 3. `!!window.name` The window has a `name` set\n */\nexport function isInPopUp() {\n try {\n return self === top &&\n !!opener &&\n opener !== self &&\n !!window.name;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Another window can send a \"completeAuth\" message to this one, making it to\n * navigate to e.data.url\n * @param e The message event\n */\nexport function onMessage(e: MessageEvent) {\n if (e.data.type == \"completeAuth\" && e.origin === new URL(self.location.href).origin) {\n window.removeEventListener(\"message\", onMessage);\n window.location.href = e.data.url;\n }\n}\n\n/**\n * The ready function should only be called on the page that represents\n * the redirectUri. We typically land there after a redirect from the\n * authorization server, but this code will also be executed upon subsequent\n * navigation or page refresh.\n */\nexport async function ready(env: fhirclient.Adapter, options: fhirclient.ReadyOptions = {}): Promise\n{\n const url = env.getUrl();\n const Storage = env.getStorage();\n const params = url.searchParams;\n\n let key = params.get(\"state\");\n const code = params.get(\"code\");\n const authError = params.get(\"error\");\n const authErrorDescription = params.get(\"error_description\");\n\n if (!key) {\n key = await Storage.get(SMART_KEY);\n }\n\n // Start by checking the url for `error` and `error_description` parameters.\n // This happens when the auth server rejects our authorization attempt. In\n // this case it has no other way to tell us what the error was, other than\n // appending these parameters to the redirect url.\n // From client's point of view, this is not very reliable (because we can't\n // know how we have landed on this page - was it a redirect or was it loaded\n // manually). However, if `ready()` is being called, we can assume\n // that the url comes from the auth server (otherwise the app won't work\n // anyway).\n if (authError || authErrorDescription) {\n throw new Error([\n authError,\n authErrorDescription\n ].filter(Boolean).join(\": \"));\n }\n\n debug(\"key: %s, code: %s\", key, code);\n\n // key might be coming from the page url so it might be empty or missing\n assert(key, \"No 'state' parameter found. Please (re)launch the app.\");\n\n // Check if we have a previous state\n let state = (await Storage.get(key)) as fhirclient.ClientState;\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n // If we are in a popup window or an iframe and the authorization is\n // complete, send the location back to our opener and exit.\n if (isBrowser() && state && !state.completeInTarget) {\n\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n // we are about to return to the opener/parent where completeAuth will\n // be called again. In rare cases the opener or parent might also be\n // a frame or popup. Then inFrame or inPopUp will be true but we still\n // have to stop going up the chain. To guard against that weird form of\n // recursion we pass one additional parameter to the url which we later\n // remove.\n if ((inFrame || inPopUp) && !url.searchParams.get(\"complete\")) {\n url.searchParams.set(\"complete\", \"1\");\n const { href, origin } = url;\n if (inFrame) {\n parent.postMessage({ type: \"completeAuth\", url: href }, origin);\n }\n if (inPopUp) {\n opener.postMessage({ type: \"completeAuth\", url: href }, origin);\n window.close();\n }\n\n return new Promise(() => { /* leave it pending!!! */ });\n }\n }\n\n url.searchParams.delete(\"complete\");\n\n // Do we have to remove the `code` and `state` params from the URL?\n const hasState = params.has(\"state\");\n\n if (isBrowser() && getPath(env, \"options.replaceBrowserHistory\") && (code || hasState)) {\n // `code` is the flag that tell us to request an access token.\n // We have to remove it, otherwise the page will authorize on\n // every load!\n if (code) {\n params.delete(\"code\");\n debug(\"Removed code parameter from the url.\");\n }\n\n // If we have `fullSessionStorageSupport` it means we no longer\n // need the `state` key. It will be stored to a well know\n // location - sessionStorage[SMART_KEY]. However, no\n // fullSessionStorageSupport means that this \"well know location\"\n // might be shared between windows and tabs. In this case we\n // MUST keep the `state` url parameter.\n if (hasState && fullSessionStorageSupport) {\n params.delete(\"state\");\n debug(\"Removed state parameter from the url.\");\n }\n\n // If the browser does not support the replaceState method for the\n // History Web API, the \"code\" parameter cannot be removed. As a\n // consequence, the page will (re)authorize on every load. The\n // workaround is to reload the page to new location without those\n // parameters. If that is not acceptable replaceBrowserHistory\n // should be set to false.\n if (window.history.replaceState) {\n window.history.replaceState({}, \"\", url.href);\n }\n }\n\n // If the state does not exist, it means the page has been loaded directly.\n assert(state, \"No state found! Please (re)launch the app.\");\n\n // Assume the client has already completed a token exchange when\n // there is no code (but we have a state) or access token is found in state\n const authorized = !code || state.tokenResponse?.access_token;\n\n // If we are authorized already, then this is just a reload.\n // Otherwise, we have to complete the code flow\n if (!authorized && state.tokenUri) {\n\n assert(code, \"'code' url parameter is required\");\n\n debug(\"Preparing to exchange the code for access token...\");\n const requestOptions = await buildTokenRequest(env, {\n code,\n state,\n clientPublicKeySetUrl: options.clientPublicKeySetUrl,\n privateKey: options.privateKey || state.clientPrivateJwk\n });\n debug(\"Token request options: %O\", requestOptions);\n\n // The EHR authorization server SHALL return a JSON structure that\n // includes an access token or a message indicating that the\n // authorization request has been denied.\n const tokenResponse = await request(state.tokenUri, requestOptions);\n debug(\"Token response: %O\", tokenResponse);\n assert(tokenResponse.access_token, \"Failed to obtain access token.\");\n\n // Now we need to determine when is this authorization going to expire\n state.expiresAt = getAccessTokenExpiration(tokenResponse, env);\n\n // save the tokenResponse so that we don't have to re-authorize on\n // every page reload\n state = { ...state, tokenResponse };\n await Storage.set(key, state);\n debug(\"Authorization successful!\");\n }\n else {\n debug(state.tokenResponse?.access_token ?\n \"Already authorized\" :\n \"No authorization needed\"\n );\n }\n\n if (fullSessionStorageSupport) {\n await Storage.set(SMART_KEY, key);\n }\n\n const client = new Client(env, state);\n debug(\"Created client instance: %O\", client);\n return client;\n}\n\n/**\n * Builds the token request options. Does not make the request, just\n * creates it's configuration and returns it in a Promise.\n */\nexport async function buildTokenRequest(\n env: fhirclient.Adapter,\n {\n code,\n state,\n clientPublicKeySetUrl,\n privateKey\n }: {\n /**\n * The `code` URL parameter received from the auth redirect\n */\n code: string,\n \n /**\n * The app state\n */\n state: fhirclient.ClientState\n\n /**\n * If provided overrides the `clientPublicKeySetUrl` from the authorize\n * options (if any). Used for `jku` token header in case of asymmetric auth.\n */\n clientPublicKeySetUrl?: string\n\n /**\n * Can be a private JWK, or an object with alg, kid and key properties,\n * where `key` is an un-extractable private CryptoKey object.\n */\n privateKey?: fhirclient.JWK | {\n key: CryptoKey\n alg: \"RS384\" | \"ES384\"\n kid: string\n }\n }\n): Promise\n{\n const { redirectUri, clientSecret, tokenUri, clientId, codeVerifier } = state;\n\n assert(redirectUri, \"Missing state.redirectUri\");\n assert(tokenUri, \"Missing state.tokenUri\");\n assert(clientId, \"Missing state.clientId\");\n\n const requestOptions: Record = {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: `code=${code}&grant_type=authorization_code&redirect_uri=${\n encodeURIComponent(redirectUri)}`\n };\n\n // For public apps, authentication is not possible (and thus not required),\n // since a client with no secret cannot prove its identity when it issues a\n // call. (The end-to-end system can still be secure because the client comes\n // from a known, https protected endpoint specified and enforced by the\n // redirect uri.) For confidential apps, an Authorization header using HTTP\n // Basic authentication is required, where the username is the app’s\n // client_id and the password is the app’s client_secret (see example).\n if (clientSecret) {\n requestOptions.headers.authorization = \"Basic \" + env.btoa(\n clientId + \":\" + clientSecret\n );\n debug(\n \"Using state.clientSecret to construct the authorization header: %s\",\n requestOptions.headers.authorization\n );\n }\n \n // Asymmetric auth\n else if (privateKey) {\n\n const pk = \"key\" in privateKey ?\n privateKey.key as CryptoKey:\n await env.security.importJWK(privateKey as fhirclient.JWK)\n\n const jwtHeaders = {\n typ: \"JWT\",\n kid: privateKey.kid,\n jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl\n };\n\n const jwtClaims = {\n iss: clientId,\n sub: clientId,\n aud: tokenUri,\n jti: env.base64urlencode(env.security.randomBytes(32)),\n exp: getTimeInFuture(120) // two minutes in the future\n };\n \n const clientAssertion = await env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims);\n requestOptions.body += `&client_assertion_type=${encodeURIComponent(\"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\")}`;\n requestOptions.body += `&client_assertion=${encodeURIComponent(clientAssertion)}`;\n debug(\"Using state.clientPrivateJwk to add a client_assertion to the POST body\")\n }\n \n // Public client\n else {\n debug(\"Public client detected; adding state.clientId to the POST body\");\n requestOptions.body += `&client_id=${encodeURIComponent(clientId)}`;\n }\n\n if (codeVerifier) {\n debug(\"Found state.codeVerifier, adding to the POST body\")\n // Note that the codeVerifier is ALREADY encoded properly \n requestOptions.body += \"&code_verifier=\" + codeVerifier;\n }\n \n return requestOptions as RequestInit;\n}\n\n/**\n * This function can be used when you want to handle everything in one page\n * (no launch endpoint needed). You can think of it as if it does:\n * ```js\n * authorize(options).then(ready)\n * ```\n *\n * **Be careful with init()!** There are some details you need to be aware of:\n *\n * 1. It will only work if your launch_uri is the same as your redirect_uri.\n * While this should be valid, we can’t promise that every EHR will allow you\n * to register client with such settings.\n * 2. Internally, `init()` will be called twice. First it will redirect to the\n * EHR, then the EHR will redirect back to the page where init() will be\n * called again to complete the authorization. This is generally fine,\n * because the returned promise will only be resolved once, after the second\n * execution, but please also consider the following:\n * - You should wrap all your app’s code in a function that is only executed\n * after `init()` resolves!\n * - Since the page will be loaded twice, you must be careful if your code\n * has global side effects that can persist between page reloads\n * (for example writing to localStorage).\n * 3. For standalone launch, only use init in combination with offline_access\n * scope. Once the access_token expires, if you don’t have a refresh_token\n * there is no way to re-authorize properly. We detect that and delete the\n * expired access token, but it still means that the user will have to\n * refresh the page twice to re-authorize.\n * @param env The adapter\n * @param authorizeOptions The authorize options\n */\nexport async function init(\n env: fhirclient.Adapter,\n authorizeOptions: fhirclient.AuthorizeParams,\n readyOptions?: fhirclient.ReadyOptions\n): Promise\n{\n const url = env.getUrl();\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n // if `code` and `state` params are present we need to complete the auth flow\n if (code && state) {\n return ready(env, readyOptions);\n }\n\n // Check for existing client state. If state is found, it means a client\n // instance have already been created in this session and we should try to\n // \"revive\" it.\n const storage = env.getStorage();\n const key = state || await storage.get(SMART_KEY);\n const cached = await storage.get(key);\n if (cached) {\n return new Client(env, cached);\n }\n\n // Otherwise try to launch\n return authorize(env, authorizeOptions).then(() => {\n // `init` promises a Client but that cannot happen in this case. The\n // browser will be redirected (unload the page and be redirected back\n // to it later and the same init function will be called again). On\n // success, authorize will resolve with the redirect url but we don't\n // want to return that from this promise chain because it is not a\n // Client instance. At the same time, if authorize fails, we do want to\n // pass the error to those waiting for a client instance.\n return new Promise(() => { /* leave it pending!!! */ });\n });\n}\n","export default class Storage\n{\n /**\n * Gets the value at `key`. Returns a promise that will be resolved\n * with that value (or undefined for missing keys).\n */\n async get(key: string): Promise\n {\n const value = sessionStorage[key];\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /**\n * Sets the `value` on `key` and returns a promise that will be resolved\n * with the value that was set.\n */\n async set(key: string, value: any): Promise\n {\n sessionStorage[key] = JSON.stringify(value);\n return value;\n }\n\n /**\n * Deletes the value at `key`. Returns a promise that will be resolved\n * with true if the key was deleted or with false if it was not (eg. if\n * did not exist).\n */\n async unset(key: string): Promise\n {\n if (key in sessionStorage) {\n delete sessionStorage[key];\n return true;\n }\n return false;\n }\n\n}\n","// This map contains reusable debug messages (only those used in multiple places)\nexport default {\n expired : \"Session expired! Please re-launch the app\",\n noScopeForId : \"Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.\",\n noIfNoAuth : \"You are trying to get %s but the app is not authorized yet.\",\n noFreeContext: \"Please don't use open fhir servers if you need to access launch context items like the %S.\"\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.7';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = typeof btoa === 'function' ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = typeof atob === 'function' ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","import './webcrypto-shim.mjs'\nexport default window.crypto\n","/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov \n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empy input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empy input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n\n export default {} // section modified by isomorphic-webcrypto build \n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/entry/browser.ts\");\n",""],"names":["lib_1","require","strings_1","settings_1","Response","FHIRCLIENT_PURE","window","debug","extend","contextualize","requestOptions","client","base","absolute","state","serverUrl","contextualURL","_url","resourceType","pathname","split","pop","assert","patientCompartment","indexOf","conformance","fetchConformanceStatement","searchParam","getPatientParam","searchParams","set","patient","id","href","URL","url","getRef","refId","cache","signal","headers","request","then","res","error","Promise","resolve","resolveRef","obj","path","graph","node","getPath","isArray","Array","all","makeArray","filter","Boolean","map","item","i","ref","reference","sub","setPath","replace","catch","ex","status","resolveRefs","fhirOptions","paths","resolveReferences","String","trim","p","index","length","groups","forEach","len","push","task","Object","keys","sort","group","Client","constructor","environment","units","_state","match","_refreshTask","getPatientId","read","reject","Error","options","encounter","getEncounterId","user","fhirUser","getFhirUser","getUserId","getUserType","connect","fhir","fhirJs","baseUrl","accessToken","getState","auth","token","username","password","pass","api","patientId","tokenResponse","scope","default","noScopeForId","authorizeUri","noIfNoAuth","noFreeContext","getIdToken","idToken","id_token","hasOpenid","hasProfile","hasFhirUser","jwtDecode","slice","join","profile","getAuthorizationHeader","btoa","_clearState","storage","getStorage","key","get","SMART_KEY","unset","create","resource","method","body","JSON","stringify","update","delete","patch","assertJsonPatch","_resolvedRefs","debugRequest","flat","pageLimit","_a","useRefreshToken","onPage","undefined","job","refreshIfNeeded","response","authHeader","authorization","result","includeResponse","message","expired","data","_data","entry","links","link","next","find","l","relation","nextPage","assign","references","concat","refreshToken","expiresAt","Date","now","refresh","debugRefresh","_b","refresh_token","tokenUri","scopes","hasOfflineAccess","search","hasOnlineAccess","refreshRequestOptions","credentials","refreshTokenWithCredentials","mode","encodeURIComponent","clientSecret","clientId","access_token","getAccessTokenExpiration","finally","byCode","observations","property","byCodes","getFhirVersion","metadata","fhirVersion","getFhirRelease","v","fhirVersions","exports","HttpError","statusText","name","statusCode","parse","bodyUsed","type","json","error_description","text","toJSON","smart_1","Client_1","BrowserStorage_1","security","js_base64_1","BrowserAdapter","_storage","replaceBrowserHistory","fullSessionStorageSupport","relative","getUrl","location","redirect","to","getAbortController","AbortController","atob","str","base64urlencode","input","encodeURL","fromUint8Array","base64urldecode","decode","getSmartApi","ready","args","authorize","init","utils","BrowserAdapter_1","adapter","fetch","Headers","Request","FHIR","oauth2","settings","module","HttpError_1","_debug","cm","code","value","ensureNumerical","kg","any","pq","checkResponse","resp","ok","responseToJSON","loweCaseKeys","out","lowerKey","toLowerCase","accept","getAndCache","force","process","env","NODE_ENV","segments","shift","o","createEmpty","reduce","idx","arr","arg","randomString","strLength","charSet","charAt","Math","floor","random","payload","getTimeInFuture","secondsAhead","from","expires_in","tokenBody","exp","ret","handleCodeableConcept","concept","observation","coding","bank","codes","prev","resources","meta","r","x","patientParams","getTargetWindow","target","width","height","self","parent","top","targetWindow","open","e","screen","winOrFrame","frames","condition","operation","op","crypto","globalThis","subtle","isSecureContext","ALGS","ES384","namedCurve","RS384","modulusLength","publicExponent","Uint8Array","hash","randomBytes","count","getRandomValues","digestSha256","prepared","TextEncoder","encode","digest","generatePKCEChallenge","entropy","inputBytes","codeVerifier","codeChallenge","importJWK","jwk","alg","key_ops","includes","importKey","ext","signCompactJws","privateKey","header","jwtHeader","jwtPayload","jwtAuthenticatedContent","signature","sign","algorithm","defineProperty","enumerable","isBrowser","fetchWellKnownJson","getSecurityExtensionsFromWellKnownJson","authorization_endpoint","token_endpoint","registrationUri","registration_endpoint","codeChallengeMethods","code_challenge_methods_supported","getSecurityExtensionsFromConformanceStatement","nsUri","extensions","extension","valueUri","getSecurityExtensions","params","urlISS","cfg","issMatch","RegExp","test","fakeTokenResponse","encounterId","pkceMode","clientPublicKeySetUrl","redirect_uri","client_id","iss","launch","fhirServiceUrl","redirectUri","noRedirect","completeInTarget","clientPrivateJwk","inFrame","isInFrame","inPopUp","isInPopUp","console","warn","oldKey","stateKey","redirectUrl","redirectParams","shouldIncludeChallenge","win","sessionStorage","removeItem","setItem","addEventListener","onMessage","S256supported","opener","origin","removeEventListener","Storage","authError","authErrorDescription","postMessage","close","hasState","has","history","replaceState","authorized","buildTokenRequest","pk","jwtHeaders","typ","kid","jku","jwtClaims","aud","jti","clientAssertion","authorizeOptions","readyOptions","cached"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/build/fhir-client.pure.min.js b/dist/build/fhir-client.pure.min.js new file mode 100644 index 00000000..cfe5a0ab --- /dev/null +++ b/dist/build/fhir-client.pure.min.js @@ -0,0 +1,3 @@ +/*! For license information please see fhir-client.pure.min.js.LICENSE.txt */ +(()=>{var e={804:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(116),o=r(725),s=r(170),{Response:i}=window,a=n.debug.extend("client");function c(e,t,r,o,s){let i=(0,n.makeArray)(t.resolveReferences).filter(Boolean).map((e=>String(e).trim())).filter(Boolean);if(i=i.filter(((e,t)=>!(i.indexOf(e,t+1)>-1&&(a('Duplicated reference path "%s"',e),1)))),!i.length)return Promise.resolve();const c={};i.forEach((e=>{const t=e.split(".").length;c[t]||(c[t]=[]),c[t].push(e)}));let u=Promise.resolve();return Object.keys(c).sort().forEach((i=>{const a=c[i];u=u.then((()=>Promise.all(a.map((i=>function(e,t,r,o,s,i){const a=(0,n.getPath)(e,t);if(a){const c=Array.isArray(a);return Promise.all((0,n.makeArray)(a).filter(Boolean).map(((a,u)=>{const l=a.reference;if(l)return function(e,t,r,n){if(!t[e]){const{signal:o,headers:s}=n;t[e]=r.request({url:e,headers:s,signal:o}).then((r=>(t[e]=r,r)),(r=>{throw delete t[e],r}))}return Promise.resolve(t[e])}(l,o,s,i).then((o=>{r&&(c?t.indexOf("..")>-1?(0,n.setPath)(e,`${t.replace("..",`.${u}.`)}`,o):(0,n.setPath)(e,`${t}.${u}`,o):(0,n.setPath)(e,t,o))})).catch((e=>{if(404!==e.status)throw e}))})))}}(e,i,!!t.graph,r,o,s))))))})),u}t.default=class{constructor(e,t){this.units=n.units;const r="string"==typeof t?{serverUrl:t}:t;(0,n.assert)(r.serverUrl&&r.serverUrl.match(/https?:\/\/.+/),'A "serverUrl" option is required and must begin with "http(s)"'),this.state=r,this.environment=e,this._refreshTask=null;const o=this;this.patient={get id(){return o.getPatientId()},read:e=>{const t=this.patient.id;return t?this.request({...e,url:`Patient/${t}`}):Promise.reject(new Error("Patient is not available"))},request:(e,t={})=>this.patient.id?(async()=>{const r=await async function(e,t){const r=(0,n.absolute)("/",t.state.serverUrl);async function o(e){const r=e.pathname.split("/").pop();(0,n.assert)(r,`Invalid url "${e}"`),(0,n.assert)(s.patientCompartment.indexOf(r)>-1,`Cannot filter "${r}" resources by patient`);const o=await(0,n.fetchConformanceStatement)(t.state.serverUrl),i=(0,n.getPatientParam)(o,r);return e.searchParams.set(i,t.patient.id),e.href}return"string"==typeof e||e instanceof URL?{url:await o(new URL(e+"",r))}:(e.url=await o(new URL(e.url+"",r)),e)}(e,this);return this.request(r,t)})():Promise.reject(new Error("Patient is not available"))},this.encounter={get id(){return o.getEncounterId()},read:e=>{const t=this.encounter.id;return t?this.request({...e,url:`Encounter/${t}`}):Promise.reject(new Error("Encounter is not available"))}},this.user={get fhirUser(){return o.getFhirUser()},get id(){return o.getUserId()},get resourceType(){return o.getUserType()},read:e=>{const t=this.user.fhirUser;return t?this.request({...e,url:t}):Promise.reject(new Error("User is not available"))}},this.connect(e.fhir)}connect(e){if("function"==typeof e){const t={baseUrl:this.state.serverUrl.replace(/\/$/,"")},r=this.getState("tokenResponse.access_token");if(r)t.auth={token:r};else{const{username:e,password:r}=this.state;e&&r&&(t.auth={user:e,pass:r})}this.api=e(t);const n=this.getState("tokenResponse.patient");n&&(this.patient.api=e({...t,patient:n}))}return this}getPatientId(){const e=this.state.tokenResponse;return e?e.patient?e.patient:((this.state.scope||"").match(/\blaunch(\/patient)?\b/)?a("The ID of the selected patient is not available. Please check if your server supports that."):a(o.default.noScopeForId,"patient","patient"),null):(this.state.authorizeUri?a(o.default.noIfNoAuth,"the ID of the selected patient"):a(o.default.noFreeContext,"selected patient"),null)}getEncounterId(){const e=this.state.tokenResponse;return e?e.encounter?e.encounter:((this.state.scope||"").match(/\blaunch(\/encounter)?\b/)?a("The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters."):a(o.default.noScopeForId,"encounter","encounter"),null):(this.state.authorizeUri?a(o.default.noIfNoAuth,"the ID of the selected encounter"):a(o.default.noFreeContext,"selected encounter"),null)}getIdToken(){const e=this.state.tokenResponse;if(e){const t=e.id_token,r=this.state.scope||"";if(!t){const e=r.match(/\bopenid\b/),t=r.match(/\bprofile\b/),n=r.match(/\bfhirUser\b/);return a(e&&(n||t)?"The id_token is not available. Please check if your server supports that.":"You are trying to get the id_token but you are not using the right scopes. Please add 'openid' and 'fhirUser' or 'profile' to the scopes you are requesting."),null}return(0,n.jwtDecode)(t,this.environment)}return this.state.authorizeUri?a(o.default.noIfNoAuth,"the id_token"):a(o.default.noFreeContext,"id_token"),null}getFhirUser(){const e=this.getIdToken();return e?e.fhirUser?e.fhirUser.split("/").slice(-2).join("/"):e.profile:null}getUserId(){const e=this.getFhirUser();return e?e.split("/")[1]:null}getUserType(){const e=this.getFhirUser();return e?e.split("/")[0]:null}getAuthorizationHeader(){const e=this.getState("tokenResponse.access_token");if(e)return"Bearer "+e;const{username:t,password:r}=this.state;return t&&r?"Basic "+this.environment.btoa(t+":"+r):null}async _clearState(){const e=this.environment.getStorage(),t=await e.get(s.SMART_KEY);t&&await e.unset(t),await e.unset(s.SMART_KEY),this.state.tokenResponse={}}create(e,t){return this.request({...t,url:`${e.resourceType}`,method:"POST",body:JSON.stringify(e),headers:{"content-type":"application/json",...(t||{}).headers}})}update(e,t){return this.request({...t,url:`${e.resourceType}/${e.id}`,method:"PUT",body:JSON.stringify(e),headers:{"content-type":"application/json",...(t||{}).headers}})}delete(e,t={}){return this.request({...t,url:e,method:"DELETE"})}async patch(e,t,r={}){return(0,n.assertJsonPatch)(t),this.request({...r,url:e,method:"PATCH",body:JSON.stringify(t),headers:{prefer:"return=presentation","content-type":"application/json-patch+json; charset=UTF-8",...r.headers}})}async request(e,t={},r={}){var s;const a=n.debug.extend("client:request");let u;(0,n.assert)(e,"request requires an url or request options as argument"),"string"==typeof e||e instanceof URL?(u=String(e),e={}):u=String(e.url),u=(0,n.absolute)(u,this.state.serverUrl);const l={graph:!1!==t.graph,flat:!!t.flat,pageLimit:null!==(s=t.pageLimit)&&void 0!==s?s:1,resolveReferences:t.resolveReferences||[],useRefreshToken:!1!==t.useRefreshToken,onPage:"function"==typeof t.onPage?t.onPage:void 0},h=e.signal||void 0;let f;return(l.useRefreshToken?this.refreshIfNeeded({signal:h}).then((()=>e)):Promise.resolve(e)).then((e=>{const t=this.getAuthorizationHeader();return t&&(e.headers={...e.headers,authorization:t}),e})).then((e=>(a("%s, options: %O, fhirOptions: %O",u,e,l),(0,n.request)(u,e).then((t=>e.includeResponse?(f=t.response,t.body):t))))).catch((async e=>{if(401==e.status){if(!this.getState("tokenResponse.access_token"))throw e.message+="\nThis app cannot be accessed directly. Please launch it as SMART app!",e;if(!l.useRefreshToken)throw a("Your session has expired and the useRefreshToken option is set to false. Please re-launch the app."),await this._clearState(),e.message+="\n"+o.default.expired,e;throw a("Auto-refresh failed! Please re-launch the app."),await this._clearState(),e.message+="\n"+o.default.expired,e}throw e})).catch((e=>{throw 403==e.status&&a("Permission denied! Please make sure that you have requested the proper scopes."),e})).then((t=>!t||"string"==typeof t||t instanceof i?e.includeResponse?{body:t,response:f}:t:(async t=>("Bundle"==t.resourceType?await Promise.all((t.entry||[]).map((t=>c(t.resource,l,r,this,e)))):await c(t,l,r,this,e),t))(t).then((async e=>{if(e&&"Bundle"==e.resourceType){const t=e.link||[];if(l.flat&&(e=(e.entry||[]).map((e=>e.resource))),l.onPage&&await l.onPage(e,{...r}),--l.pageLimit){const o=t.find((e=>"next"==e.relation));if(e=(0,n.makeArray)(e),o&&o.url){const t=await this.request({url:o.url,signal:h},l,r);return l.onPage?null:l.resolveReferences.length?(Object.assign(r,t.references),e.concat((0,n.makeArray)(t.data||t))):e.concat((0,n.makeArray)(t))}}}return e})).then((e=>{if(l.graph)r={};else if(!l.onPage&&l.resolveReferences.length)return{data:e,references:r};return e})).then((t=>e.includeResponse?{body:t,response:f}:t))))}refreshIfNeeded(e={}){const t=this.getState("tokenResponse.access_token"),r=this.getState("tokenResponse.refresh_token"),n=this.state.expiresAt||0;return t&&r&&n-10-1,u=a.search(/\bonline_access\b/)>-1;if((0,n.assert)(c||u,"Unable to refresh. No offline_access or online_access scope found."),!this._refreshTask){const t={credentials:this.environment.options.refreshTokenWithCredentials||"same-origin",...e,method:"POST",mode:"cors",headers:{...e.headers||{},"content-type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${encodeURIComponent(s)}`};if(!("authorization"in t.headers)){const{clientSecret:e,clientId:r}=this.state;e&&(t.headers.authorization="Basic "+this.environment.btoa(r+":"+e))}this._refreshTask=(0,n.request)(i,t).then((e=>((0,n.assert)(e.access_token,"No access token received"),o("Received new access token response %O",e),this.state.tokenResponse={...this.state.tokenResponse,...e},this.state.expiresAt=(0,n.getAccessTokenExpiration)(e,this.environment),this.state))).catch((e=>{var t,r;throw(null===(r=null===(t=this.state)||void 0===t?void 0:t.tokenResponse)||void 0===r?void 0:r.refresh_token)&&(o("Deleting the expired or invalid refresh token."),delete this.state.tokenResponse.refresh_token),e})).finally((()=>{this._refreshTask=null;const e=this.state.key;e?this.environment.getStorage().set(e,this.state):o("No 'key' found in Clint.state. Cannot persist the instance.")}))}return this._refreshTask}byCode(e,t){return(0,n.byCode)(e,t)}byCodes(e,t){return(0,n.byCodes)(e,t)}getPath(e,t=""){return(0,n.getPath)(e,t)}getState(e=""){return(0,n.getPath)({...this.state},e)}getFhirVersion(){return(0,n.fetchConformanceStatement)(this.state.serverUrl).then((e=>e.fhirVersion))}getFhirRelease(){return this.getFhirVersion().then((e=>{var t;return null!==(t=s.fhirVersions[e])&&void 0!==t?t:0}))}}},273:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r extends Error{constructor(e){super(`${e.status} ${e.statusText}\nURL: ${e.url}`),this.name="HttpError",this.response=e,this.statusCode=e.status,this.status=e.status,this.statusText=e.statusText}async parse(){if(!this.response.bodyUsed)try{const e=this.response.headers.get("content-type")||"text/plain";if(e.match(/\bjson\b/i)){let e=await this.response.json();e.error?(this.message+="\n"+e.error,e.error_description&&(this.message+=": "+e.error_description)):this.message+="\n\n"+JSON.stringify(e,null,4)}else if(e.match(/^text\//i)){let e=await this.response.text();e&&(this.message+="\n\n"+e)}}catch{}return this}toJSON(){return{name:this.name,statusCode:this.statusCode,status:this.status,statusText:this.statusText,message:this.message}}}t.default=r},901:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(922),o=r(804),s=r(188),i=r(662),a=r(127);t.default=class{constructor(e={}){this._url=null,this._storage=null,this.security=i,this.options={replaceBrowserHistory:!0,fullSessionStorageSupport:!0,refreshTokenWithCredentials:"same-origin",...e}}relative(e){return new URL(e,this.getUrl().href).href}get fhir(){return"function"==typeof fhir?fhir:null}getUrl(){return this._url||(this._url=new URL(location+"")),this._url}redirect(e){location.href=e}getStorage(){return this._storage||(this._storage=new s.default),this._storage}getAbortController(){return AbortController}atob(e){return window.atob(e)}btoa(e){return window.btoa(e)}base64urlencode(e){return"string"==typeof e?(0,a.encodeURL)(e):(0,a.fromUint8Array)(e,!0)}base64urldecode(e){return(0,a.decode)(e)}getSmartApi(){return{ready:(...e)=>(0,n.ready)(this,...e),authorize:e=>(0,n.authorize)(this,e),init:e=>(0,n.init)(this,e),client:e=>new o.default(this,e),options:this.options,utils:{security:i}}}}},952:(e,t,r)=>{"use strict";const n=new(r(901).default),{ready:o,authorize:s,init:i,client:a,options:c,utils:u}=n.getSmartApi(),l={AbortController:window.AbortController,client:a,utils:u,oauth2:{settings:c,ready:o,authorize:s,init:i}};e.exports=l},116:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assertJsonPatch=t.assert=t.getTargetWindow=t.getPatientParam=t.byCodes=t.byCode=t.getAccessTokenExpiration=t.getTimeInFuture=t.jwtDecode=t.randomString=t.absolute=t.makeArray=t.setPath=t.getPath=t.fetchConformanceStatement=t.getAndCache=t.request=t.loweCaseKeys=t.responseToJSON=t.checkResponse=t.units=t.debug=void 0;const n=r(273),o=r(170),s=r(833),{fetch:i}=window,a=s("FHIR");t.debug=a;const c={};function u({value:e,code:t}){if("number"!=typeof e)throw new Error("Found a non-numerical unit: "+e+" "+t)}async function l(e){if(!e.ok){const t=new n.default(e);throw await t.parse(),t}return e}function h(e){return e.text().then((e=>e.length?JSON.parse(e):""))}function f(e){if(!e)return e;if(Array.isArray(e))return e.map((e=>e&&"object"==typeof e?f(e):e));let t={};return Object.keys(e).forEach((r=>{const n=r.toLowerCase(),o=e[r];t[n]=o&&"object"==typeof o?f(o):o})),t}function p(e,t={}){const{includeResponse:r,...n}=t;return i(e,{mode:"cors",...n,headers:{accept:"application/json",...f(n.headers)}}).then(l).then((e=>{const t=e.headers.get("content-type")+"";return t.match(/\bjson\b/i)?h(e).then((t=>({res:e,body:t}))):t.match(/^text\//i)?e.text().then((t=>({res:e,body:t}))):{res:e}})).then((({res:e,body:t})=>{if(!t&&201==e.status){const t=e.headers.get("location");if(t)return p(t,{...n,method:"GET",body:null,includeResponse:r})}return r?{body:t,response:e}:void 0===t?e:t}))}function d(e,t,r=!1){return r||!c[e]?(c[e]=p(e,t),c[e]):Promise.resolve(c[e])}function g(e,t=""){if(!(t=t.trim()))return e;let r=t.split("."),n=e;for(;n&&r.length;){const e=r.shift();if(!e&&Array.isArray(n))return n.map((e=>g(e,r.join("."))));n=n[e]}return n}function y(e){return Array.isArray(e)?e:[e]}function m(e,t){const r=e.split(".")[1];return r?JSON.parse(t.atob(r)):null}function w(e,t){const r={};function n(e,t){e&&Array.isArray(e.coding)&&e.coding.forEach((({code:e})=>{e&&(r[e]=r[e]||[],r[e].push(t))}))}return y(e).forEach((e=>{"Observation"===e.resourceType&&e[t]&&(Array.isArray(e[t])?e[t].forEach((t=>n(t,e))):n(e[t],e))})),r}function b(e,t){if(!e)throw new Error(t)}t.units={cm({code:e,value:t}){if(u({code:e,value:t}),"cm"==e)return t;if("m"==e)return 100*t;if("in"==e)return 2.54*t;if("[in_us]"==e)return 2.54*t;if("[in_i]"==e)return 2.54*t;if("ft"==e)return 30.48*t;if("[ft_us]"==e)return 30.48*t;throw new Error("Unrecognized length unit: "+e)},kg({code:e,value:t}){if(u({code:e,value:t}),"kg"==e)return t;if("g"==e)return t/1e3;if(e.match(/lb/))return t/2.20462;if(e.match(/oz/))return t/35.274;throw new Error("Unrecognized weight unit: "+e)},any:e=>(u(e),e.value)},t.checkResponse=l,t.responseToJSON=h,t.loweCaseKeys=f,t.request=p,t.getAndCache=d,t.fetchConformanceStatement=function(e="/",t){const r=String(e).replace(/\/*$/,"/")+"metadata";return d(r,t).catch((e=>{throw new Error(`Failed to fetch the conformance statement from "${r}". ${e}`)}))},t.getPath=g,t.setPath=function(e,t,r,n=!1){return t.trim().split(".").reduce(((e,t,o,s)=>{if(!e||o!==s.length-1)return e&&void 0===e[t]&&n&&(e[t]=s[o+1].match(/^[0-9]+$/)?[]:{}),e?e[t]:void 0;e[t]=r}),e),e},t.makeArray=y,t.absolute=function(e,t){return e.match(/^http/)||e.match(/^urn/)?e:String(t||"").replace(/\/+$/,"")+"/"+e.replace(/^\/+/,"")},t.randomString=function(e=8,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"){const r=[],n=t.length;for(;e--;)r.push(t.charAt(Math.floor(Math.random()*n)));return r.join("")},t.jwtDecode=m,t.getTimeInFuture=function(e=120,t){return Math.floor(+(t||new Date)/1e3+e)},t.getAccessTokenExpiration=function(e,t){const r=Math.floor(Date.now()/1e3);if(e.expires_in)return r+e.expires_in;if(e.access_token){let r=m(e.access_token,t);if(r&&r.exp)return r.exp}return r+300},t.byCode=w,t.byCodes=function(e,t){const r=w(e,t);return(...e)=>e.filter((e=>e+""in r)).reduce(((e,t)=>e.concat(r[t+""])),[])},t.getPatientParam=function(e,t){const r=(g(e,"rest.0.resource")||[]).find((e=>e.type===t));if(!r)throw new Error(`Resource "${t}" is not supported by this FHIR server`);if(!Array.isArray(r.searchParam))throw new Error(`No search parameters supported for "${t}" on this FHIR server`);if("Patient"==t&&r.searchParam.find((e=>"_id"==e.name)))return"_id";const n=o.patientParams.find((e=>r.searchParam.find((t=>t.name==e))));if(!n)throw new Error("I don't know what param to use for "+t);return n},t.getTargetWindow=async function(e,t=800,r=720){if("function"==typeof e&&(e=await e()),e&&"object"==typeof e)return e;if("string"!=typeof e)return a("Invalid target type '%s'. Failing back to '_self'.",typeof e),self;if("_self"==e)return self;if("_parent"==e)return parent;if("_top"==e)return top||self;if("_blank"==e){let e,t=null;try{if(t=window.open("","SMARTAuthPopup"),!t)throw new Error("Perhaps window.open was blocked")}catch(t){e=t}return t||(a("Cannot open window. Failing back to '_self'. %s",e),self)}if("popup"==e){let e,n=null;try{if(n=window.open("","SMARTAuthPopup",["height="+r,"width="+t,"menubar=0","resizable=1","status=0","top="+(screen.height-r)/2,"left="+(screen.width-t)/2].join(",")),!n)throw new Error("Perhaps the popup window was blocked")}catch(t){e=t}return n||(a("Cannot open window. Failing back to '_self'. %s",e),self)}return frames[e]||(a("Unknown target '%s'. Failing back to '_self'.",e),self)},t.assert=b,t.assertJsonPatch=function(e){b(Array.isArray(e),"The JSON patch must be an array"),b(e.length>0,"The JSON patch array should not be empty"),e.forEach((e=>{b(["add","replace","test","move","copy","remove"].indexOf(e.op)>-1,'Each patch operation must have an "op" property which must be one of: "add", "replace", "test", "move", "copy", "remove"'),b(e.path&&typeof e.path,`Invalid "${e.op}" operation. Missing "path" property`),"add"==e.op||"replace"==e.op||"test"==e.op?(b("value"in e,`Invalid "${e.op}" operation. Missing "value" property`),b(3==Object.keys(e).length,`Invalid "${e.op}" operation. Contains unknown properties`)):"move"==e.op||"copy"==e.op?(b("string"==typeof e.from,`Invalid "${e.op}" operation. Requires a string "from" property`),b(3==Object.keys(e).length,`Invalid "${e.op}" operation. Contains unknown properties`)):b(2==Object.keys(e).length,`Invalid "${e.op}" operation. Contains unknown properties`)}))}},662:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.signCompactJws=t.importJWK=t.generatePKCEChallenge=t.digestSha256=t.randomBytes=void 0;const n=r(127),o="object"==typeof globalThis&&globalThis.crypto?globalThis.crypto:r(525).default,s=()=>{if(!o.subtle){if(!globalThis.isSecureContext)throw new Error("Some of the required subtle crypto functionality is not available unless you run this app in secure context (using HTTPS or running locally). See https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts");throw new Error("Some of the required subtle crypto functionality is not available in the current environment (no crypto.subtle)")}return o.subtle},i={ES384:{name:"ECDSA",namedCurve:"P-384"},RS384:{name:"RSASSA-PKCS1-v1_5",modulusLength:4096,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-384"}}};function a(e){return o.getRandomValues(new Uint8Array(e))}async function c(e){const t=(new TextEncoder).encode(e),r=await s().digest("SHA-256",t);return new Uint8Array(r)}t.randomBytes=a,t.digestSha256=c,t.generatePKCEChallenge=async(e=96)=>{const t=a(e),r=(0,n.fromUint8Array)(t,!0);return{codeChallenge:(0,n.fromUint8Array)(await c(r),!0),codeVerifier:r}},t.importJWK=async function(e){if(!e.alg)throw new Error('The "alg" property of the JWK must be set to "ES384" or "RS384"');if(Array.isArray(e.key_ops)||(e.key_ops=["sign"]),!e.key_ops.includes("sign"))throw new Error('The "key_ops" property of the JWK does not contain "sign"');try{return await s().importKey("jwk",e,i[e.alg],!0===e.ext,e.key_ops)}catch(t){throw new Error(`The ${e.alg} is not supported by this browser: ${t}`)}},t.signCompactJws=async function(e,t,r,o){const i=JSON.stringify({...r,alg:e}),a=JSON.stringify(o),c=`${(0,n.encodeURL)(i)}.${(0,n.encodeURL)(a)}`,u=await s().sign({...t.algorithm,hash:"SHA-384"},t,(new TextEncoder).encode(c));return`${c}.${(0,n.fromUint8Array)(new Uint8Array(u),!0)}`}},170:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SMART_KEY=t.patientParams=t.fhirVersions=t.patientCompartment=void 0,t.patientCompartment=["Account","AdverseEvent","AllergyIntolerance","Appointment","AppointmentResponse","AuditEvent","Basic","BodySite","BodyStructure","CarePlan","CareTeam","ChargeItem","Claim","ClaimResponse","ClinicalImpression","Communication","CommunicationRequest","Composition","Condition","Consent","Coverage","CoverageEligibilityRequest","CoverageEligibilityResponse","DetectedIssue","DeviceRequest","DeviceUseRequest","DeviceUseStatement","DiagnosticOrder","DiagnosticReport","DocumentManifest","DocumentReference","EligibilityRequest","Encounter","EnrollmentRequest","EpisodeOfCare","ExplanationOfBenefit","FamilyMemberHistory","Flag","Goal","Group","ImagingManifest","ImagingObjectSelection","ImagingStudy","Immunization","ImmunizationEvaluation","ImmunizationRecommendation","Invoice","List","MeasureReport","Media","MedicationAdministration","MedicationDispense","MedicationOrder","MedicationRequest","MedicationStatement","MolecularSequence","NutritionOrder","Observation","Order","Patient","Person","Procedure","ProcedureRequest","Provenance","QuestionnaireResponse","ReferralRequest","RelatedPerson","RequestGroup","ResearchSubject","RiskAssessment","Schedule","ServiceRequest","Specimen","SupplyDelivery","SupplyRequest","VisionPrescription"],t.fhirVersions={"0.4.0":2,"0.5.0":2,"1.0.0":2,"1.0.1":2,"1.0.2":2,"1.1.0":3,"1.4.0":3,"1.6.0":3,"1.8.0":3,"3.0.0":3,"3.0.1":3,"3.3.0":4,"3.5.0":4,"4.0.0":4,"4.0.1":4},t.patientParams=["patient","subject","requester","member","actor","beneficiary"],t.SMART_KEY="SMART_KEY"},922:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.init=t.buildTokenRequest=t.ready=t.onMessage=t.isInPopUp=t.isInFrame=t.authorize=t.getSecurityExtensions=t.fetchWellKnownJson=t.KEY=void 0;const n=r(116),o=r(804),s=r(170);Object.defineProperty(t,"KEY",{enumerable:!0,get:function(){return s.SMART_KEY}});const i=n.debug.extend("oauth2");function a(){return"object"==typeof window}function c(e="/",t){const r=String(e).replace(/\/*$/,"/")+".well-known/smart-configuration";return(0,n.getAndCache)(r,t).catch((e=>{throw new Error(`Failed to fetch the well-known json "${r}". ${e.message}`)}))}function u(e="/"){return function(e="/"){return c(e,void 0).then((e=>{if(!e.authorization_endpoint||!e.token_endpoint)throw new Error("Invalid wellKnownJson");return{registrationUri:e.registration_endpoint||"",authorizeUri:e.authorization_endpoint,tokenUri:e.token_endpoint,codeChallengeMethods:e.code_challenge_methods_supported||[]}}))}(e).catch((()=>function(e="/",t){return(0,n.fetchConformanceStatement)(e,t).then((e=>{const t=((0,n.getPath)(e||{},"rest.0.security.extension")||[]).filter((e=>"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"===e.url)).map((e=>e.extension))[0],r={registrationUri:"",authorizeUri:"",tokenUri:"",codeChallengeMethods:[]};return t&&t.forEach((e=>{"register"===e.url&&(r.registrationUri=e.valueUri),"authorize"===e.url&&(r.authorizeUri=e.valueUri),"token"===e.url&&(r.tokenUri=e.valueUri)})),r}))}(e)))}async function l(e,t={}){const r=e.getUrl();if(Array.isArray(t)){const o=r.searchParams.get("iss")||r.searchParams.get("fhirServiceUrl");if(!o)throw new Error('Passing in an "iss" url parameter is required if authorize uses multiple configurations');const s=t.find((e=>{if(e.issMatch){if("function"==typeof e.issMatch)return!!e.issMatch(o);if("string"==typeof e.issMatch)return e.issMatch===o;if(e.issMatch instanceof RegExp)return e.issMatch.test(o)}return!1}));return(0,n.assert)(s,`No configuration found matching the current "iss" parameter "${o}"`),await l(e,s)}const{clientSecret:o,fakeTokenResponse:c,encounterId:d,target:g,width:y,height:m,pkceMode:w,clientPublicKeySetUrl:b,redirect_uri:C,client_id:v}=t;let{iss:S,launch:A,patientId:k,fhirServiceUrl:P,redirectUri:R,noRedirect:U,scope:E="",clientId:_,completeInTarget:x,clientPrivateJwk:F}=t;const T=e.getStorage();S=r.searchParams.get("iss")||S,P=r.searchParams.get("fhirServiceUrl")||P,A=r.searchParams.get("launch")||A,k=r.searchParams.get("patientId")||k,_=r.searchParams.get("clientId")||_,_||(_=v),R||(R=C),R?R.match(/^https?\:\/\//)||(R=e.relative(R)):R=e.relative(".");const I=String(S||P||"");if(!I)throw new Error("No server url found. It must be specified as `iss` or as `fhirServiceUrl` parameter");if(S&&i("Making %s launch...",A?"EHR":"standalone"),A&&!E.match(/launch/)&&(E+=" launch"),a()){const e=h(),t=f();(e||t)&&!0!==x&&!1!==x&&(x=e,console.warn('Your app is being authorized from within an iframe or popup window. Please be explicit and provide a "completeInTarget" option. Use "true" to complete the authorization in the same window, or "false" to try to complete it in the parent or the opener window. See http://docs.smarthealthit.org/client-js/api.html'))}const K=await T.get(s.SMART_KEY);await T.unset(K);const j=(0,n.randomString)(16),O={clientId:_,scope:E,redirectUri:R,serverUrl:I,clientSecret:o,clientPrivateJwk:F,tokenResponse:{},key:j,completeInTarget:x,clientPublicKeySetUrl:b};(!a()||(0,n.getPath)(e,"options.fullSessionStorageSupport"))&&await T.set(s.SMART_KEY,j),c&&Object.assign(O.tokenResponse,c),k&&Object.assign(O.tokenResponse,{patient:k}),d&&Object.assign(O.tokenResponse,{encounter:d});let M=R+"?state="+encodeURIComponent(j);if(P&&!S)return i("Making fake launch..."),await T.set(j,O),U?M:await e.redirect(M);const q=await u(I);if(Object.assign(O,q),await T.set(j,O),!O.authorizeUri)return U?M:await e.redirect(M);const B=["response_type=code","client_id="+encodeURIComponent(_||""),"scope="+encodeURIComponent(E),"redirect_uri="+encodeURIComponent(R),"aud="+encodeURIComponent(I),"state="+encodeURIComponent(j)];if(A&&B.push("launch="+encodeURIComponent(A)),function(e,t){if("disabled"===t)return!1;if("unsafeV1"===t)return!0;if("required"===t){if(!e)throw new Error("Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration.");return!0}return e}(q.codeChallengeMethods.includes("S256"),w)){let t=await e.security.generatePKCEChallenge();Object.assign(O,t),await T.set(j,O),B.push("code_challenge="+O.codeChallenge),B.push("code_challenge_method=S256")}if(M=O.authorizeUri+"?"+B.join("&"),U)return M;if(!g||!a())return await e.redirect(M);{let e;if(e=await(0,n.getTargetWindow)(g,y,m),e!==self)try{e.sessionStorage.removeItem(K),e.sessionStorage.setItem(j,JSON.stringify(O))}catch(t){(0,n.debug)('Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to "_self". %s',t),e=self}if(e!==self)try{e.location.href=M,self.addEventListener("message",p)}catch(e){(0,n.debug)('Failed to modify window.location. Perhaps it is from different origin?. Failing back to "_self". %s',e),self.location.href=M}else self.location.href=M}}function h(){try{return self!==top&&parent!==self}catch(e){return!0}}function f(){try{return self===top&&!!opener&&opener!==self&&!!window.name}catch(e){return!1}}function p(e){"completeAuth"==e.data.type&&e.origin===new URL(self.location.href).origin&&(window.removeEventListener("message",p),window.location.href=e.data.url)}async function d(e,t={}){var r,c;const u=e.getUrl(),l=e.getStorage(),p=u.searchParams;let d=p.get("state");const y=p.get("code"),m=p.get("error"),w=p.get("error_description");if(d||(d=await l.get(s.SMART_KEY)),m||w)throw new Error([m,w].filter(Boolean).join(": "));i("key: %s, code: %s",d,y),(0,n.assert)(d,"No 'state' parameter found. Please (re)launch the app.");let b=await l.get(d);const C=!a()||(0,n.getPath)(e,"options.fullSessionStorageSupport");if(a()&&b&&!b.completeInTarget){const e=h(),t=f();if((e||t)&&!u.searchParams.get("complete")){u.searchParams.set("complete","1");const{href:r,origin:n}=u;return e&&parent.postMessage({type:"completeAuth",url:r},n),t&&(opener.postMessage({type:"completeAuth",url:r},n),window.close()),new Promise((()=>{}))}}u.searchParams.delete("complete");const v=p.has("state");if(a()&&(0,n.getPath)(e,"options.replaceBrowserHistory")&&(y||v)&&(y&&(p.delete("code"),i("Removed code parameter from the url.")),v&&C&&(p.delete("state"),i("Removed state parameter from the url.")),window.history.replaceState&&window.history.replaceState({},"",u.href)),(0,n.assert)(b,"No state found! Please (re)launch the app."),y&&!(null===(r=b.tokenResponse)||void 0===r?void 0:r.access_token)&&b.tokenUri){(0,n.assert)(y,"'code' url parameter is required"),i("Preparing to exchange the code for access token...");const r=await g(e,{code:y,state:b,clientPublicKeySetUrl:t.clientPublicKeySetUrl,privateKey:t.privateKey||b.clientPrivateJwk});i("Token request options: %O",r);const o=await(0,n.request)(b.tokenUri,r);i("Token response: %O",o),(0,n.assert)(o.access_token,"Failed to obtain access token."),b.expiresAt=(0,n.getAccessTokenExpiration)(o,e),b={...b,tokenResponse:o},await l.set(d,b),i("Authorization successful!")}else i((null===(c=b.tokenResponse)||void 0===c?void 0:c.access_token)?"Already authorized":"No authorization needed");C&&await l.set(s.SMART_KEY,d);const S=new o.default(e,b);return i("Created client instance: %O",S),S}async function g(e,{code:t,state:r,clientPublicKeySetUrl:o,privateKey:s}){const{redirectUri:a,clientSecret:c,tokenUri:u,clientId:l,codeVerifier:h}=r;(0,n.assert)(a,"Missing state.redirectUri"),(0,n.assert)(u,"Missing state.tokenUri"),(0,n.assert)(l,"Missing state.clientId");const f={method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:`code=${t}&grant_type=authorization_code&redirect_uri=${encodeURIComponent(a)}`};if(c)f.headers.authorization="Basic "+e.btoa(l+":"+c),i("Using state.clientSecret to construct the authorization header: %s",f.headers.authorization);else if(s){const t="key"in s?s.key:await e.security.importJWK(s),a={typ:"JWT",kid:s.kid,jku:o||r.clientPublicKeySetUrl},c={iss:l,sub:l,aud:u,jti:e.base64urlencode(e.security.randomBytes(32)),exp:(0,n.getTimeInFuture)(120)},h=await e.security.signCompactJws(s.alg,t,a,c);f.body+=`&client_assertion_type=${encodeURIComponent("urn:ietf:params:oauth:client-assertion-type:jwt-bearer")}`,f.body+=`&client_assertion=${encodeURIComponent(h)}`,i("Using state.clientPrivateJwk to add a client_assertion to the POST body")}else i("Public client detected; adding state.clientId to the POST body"),f.body+=`&client_id=${encodeURIComponent(l)}`;return h&&(i("Found state.codeVerifier, adding to the POST body"),f.body+="&code_verifier="+h),f}t.fetchWellKnownJson=c,t.getSecurityExtensions=u,t.authorize=l,t.isInFrame=h,t.isInPopUp=f,t.onMessage=p,t.ready=d,t.buildTokenRequest=g,t.init=async function(e,t,r){const n=e.getUrl(),i=n.searchParams.get("code"),a=n.searchParams.get("state");if(i&&a)return d(e,r);const c=e.getStorage(),u=a||await c.get(s.SMART_KEY),h=await c.get(u);return h?new o.default(e,h):l(e,t).then((()=>new Promise((()=>{}))))}},188:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{async get(e){const t=sessionStorage[e];return t?JSON.parse(t):null}async set(e,t){return sessionStorage[e]=JSON.stringify(t),t}async unset(e){return e in sessionStorage&&(delete sessionStorage[e],!0)}}},725:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={expired:"Session expired! Please re-launch the app",noScopeForId:"Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.",noIfNoAuth:"You are trying to get %s but the app is not authorized yet.",noFreeContext:"Please don't use open fhir servers if you need to access launch context items like the %S."}},833:(e,t,r)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(736)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},736:(e,t,r)=>{e.exports=function(e){function t(e){let r,o,s,i=null;function a(...e){if(!a.enabled)return;const n=a,o=Number(new Date),s=o-(r||o);n.diff=s,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";i++;const s=t.formatters[o];if("function"==typeof s){const t=e[i];r=s.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,s=t.enabled(e)),s),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(r=0;r{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t255||(n=e.charCodeAt(c++))>255||(o=e.charCodeAt(c++))>255)throw new TypeError("invalid character found");s+=i[(t=r<<16|n<<8|o)>>18&63]+i[t>>12&63]+i[t>>6&63]+i[63&t]}return a?s.slice(0,a-3)+"===".substring(a):s},d="function"==typeof btoa?function(e){return btoa(e)}:n?function(e){return Buffer.from(e,"binary").toString("base64")}:p,g=n?function(e){return Buffer.from(e).toString("base64")}:function(e){for(var t=[],r=0,n=e.length;r>>6)+u(128|63&t):u(224|t>>>12&15)+u(128|t>>>6&63)+u(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return u(240|t>>>18&7)+u(128|t>>>12&63)+u(128|t>>>6&63)+u(128|63&t)},w=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,b=function(e){return e.replace(w,m)},C=n?function(e){return Buffer.from(e,"utf8").toString("base64")}:s?function(e){return g(s.encode(e))}:function(e){return d(b(e))},v=function(e,t){return void 0===t&&(t=!1),t?h(C(e)):C(e)},S=function(e){return v(e,!0)},A=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,k=function(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return u(55296+(t>>>10))+u(56320+(1023&t));case 3:return u((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return u((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},P=function(e){return e.replace(A,k)},R=function(e){if(e=e.replace(/\s+/g,""),!c.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(3&e.length));for(var t,r,n,o="",s=0;s>16&255):64===n?u(t>>16&255,t>>8&255):u(t>>16&255,t>>8&255,255&t);return o},U="function"==typeof atob?function(e){return atob(f(e))}:n?function(e){return Buffer.from(e,"base64").toString("binary")}:R,E=n?function(e){return l(Buffer.from(e,"base64"))}:function(e){return l(U(e).split("").map((function(e){return e.charCodeAt(0)})))},_=function(e){return E(F(e))},x=n?function(e){return Buffer.from(e,"base64").toString("utf8")}:o?function(e){return o.decode(E(e))}:function(e){return P(U(e))},F=function(e){return f(e.replace(/[-_]/g,(function(e){return"-"==e?"+":"/"})))},T=function(e){return x(F(e))},I=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}},K=function(){var e=function(e,t){return Object.defineProperty(String.prototype,e,I(t))};e("fromBase64",(function(){return T(this)})),e("toBase64",(function(e){return v(this,e)})),e("toBase64URI",(function(){return v(this,!0)})),e("toBase64URL",(function(){return v(this,!0)})),e("toUint8Array",(function(){return _(this)}))},j=function(){var e=function(e,t){return Object.defineProperty(Uint8Array.prototype,e,I(t))};e("toBase64",(function(e){return y(this,e)})),e("toBase64URI",(function(){return y(this,!0)})),e("toBase64URL",(function(){return y(this,!0)}))},O={version:t,VERSION:r,atob:U,atobPolyfill:R,btoa:d,btoaPolyfill:p,fromBase64:T,toBase64:v,encode:v,encodeURI:S,encodeURL:S,utob:b,btou:P,decode:T,isValid:function(e){if("string"!=typeof e)return!1;var t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},fromUint8Array:y,toUint8Array:_,extendString:K,extendUint8Array:j,extendBuiltins:function(){K(),j()},Base64:{}};return Object.keys(O).forEach((function(e){return O.Base64[e]=O[e]})),O}()},585:e=>{var t=1e3,r=60*t,n=60*r,o=24*n,s=7*o;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}e.exports=function(e,a){a=a||{};var c,u,l=typeof e;if("string"===l&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var i=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(i){var a=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return a*s;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===l&&isFinite(e))return a.long?(c=e,(u=Math.abs(c))>=o?i(c,u,o,"day"):u>=n?i(c,u,n,"hour"):u>=r?i(c,u,r,"minute"):u>=t?i(c,u,t,"second"):c+" ms"):function(e){var s=Math.abs(e);return s>=o?Math.round(e/o)+"d":s>=n?Math.round(e/n)+"h":s>=r?Math.round(e/r)+"m":s>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},525:(e,t,r)=>{"use strict";r.d(t,{default:()=>n}),r(358);const n=window.crypto},358:()=>{"use strict";var e,t;e="undefined"!=typeof self?self:void 0,t=function(e){if("function"!=typeof Promise)throw"Promise support required";var t=e.crypto||e.msCrypto;if(t){var r=t.subtle||t.webkitSubtle;if(r){var n=e.Crypto||t.constructor||Object,o=e.SubtleCrypto||r.constructor||Object,s=(e.CryptoKey||e.Key,e.navigator.userAgent.indexOf("Edge/")>-1),i=!!e.msCrypto&&!s,a=!t.subtle&&!!t.webkitSubtle;if(i||a){var c={KoZIhvcNAQEB:"1.2.840.113549.1.1.1"},u={"1.2.840.113549.1.1.1":"KoZIhvcNAQEB"};if(["generateKey","importKey","unwrapKey"].forEach((function(e){var n=r[e];r[e]=function(o,s,c){var u,l,b,A,k,P=[].slice.call(arguments);switch(e){case"generateKey":u=g(o),l=s,b=c;break;case"importKey":u=g(c),l=P[3],b=P[4],"jwk"===o&&((s=m(s)).alg||(s.alg=y(u)),s.key_ops||(s.key_ops="oct"!==s.kty?"d"in s?b.filter(S):b.filter(v):b.slice()),P[1]=(A=m(s),i&&(A.extractable=A.ext,delete A.ext),p(unescape(encodeURIComponent(JSON.stringify(A)))).buffer));break;case"unwrapKey":u=P[4],l=P[5],b=P[6],P[2]=c._key}if("generateKey"===e&&"HMAC"===u.name&&u.hash)return u.length=u.length||{"SHA-1":512,"SHA-256":512,"SHA-384":1024,"SHA-512":1024}[u.hash.name],r.importKey("raw",t.getRandomValues(new Uint8Array(u.length+7>>3)),u,l,b);if(a&&"generateKey"===e&&"RSASSA-PKCS1-v1_5"===u.name&&(!u.modulusLength||u.modulusLength>=2048))return(o=g(o)).name="RSAES-PKCS1-v1_5",delete o.hash,r.generateKey(o,!0,["encrypt","decrypt"]).then((function(e){return Promise.all([r.exportKey("jwk",e.publicKey),r.exportKey("jwk",e.privateKey)])})).then((function(e){return e[0].alg=e[1].alg=y(u),e[0].key_ops=b.filter(v),e[1].key_ops=b.filter(S),Promise.all([r.importKey("jwk",e[0],u,!0,e[0].key_ops),r.importKey("jwk",e[1],u,l,e[1].key_ops)])})).then((function(e){return{publicKey:e[0],privateKey:e[1]}}));if((a||i&&"SHA-1"===(u.hash||{}).name)&&"importKey"===e&&"jwk"===o&&"HMAC"===u.name&&"oct"===s.kty)return r.importKey("raw",p(f(s.k)),c,P[3],P[4]);if(a&&"importKey"===e&&("spki"===o||"pkcs8"===o))return r.importKey("jwk",function(e){var t=w(e),r=!1;t.length>2&&(r=!0,t.shift());var n={ext:!0};if("1.2.840.113549.1.1.1"!==t[0][0])throw new TypeError("Unsupported key type");var o=["n","e","d","p","q","dp","dq","qi"],s=w(t[1]);r&&s.shift();for(var i=0;i2&&(n=!0,s.unshift(new Uint8Array([0]))),r[0][0]="1.2.840.113549.1.1.1",t=s,r.push(new Uint8Array(b(t)).buffer),n?r.unshift(new Uint8Array([0])):r[1]={tag:3,value:r[1]},new Uint8Array(b(r)).buffer}(m(e)),e}))),c}})),["encrypt","decrypt","sign","verify"].forEach((function(e){var t=r[e];r[e]=function(n,o,s,a){if(i&&(!s.byteLength||a&&!a.byteLength))throw new Error("Empy input is not allowed");var c,u=[].slice.call(arguments),l=g(n);if(i&&"decrypt"===e&&"AES-GCM"===l.name){var h=n.tagLength>>3;u[2]=(s.buffer||s).slice(0,s.byteLength-h),n.tag=(s.buffer||s).slice(s.byteLength-h)}u[1]=o._key;try{c=t.apply(r,u)}catch(e){return Promise.reject(e)}return i&&(c=new Promise((function(t,r){c.onabort=c.onerror=function(e){r(e)},c.oncomplete=function(r){if(r=r.target.result,"encrypt"===e&&r instanceof AesGcmEncryptResult){var n=r.ciphertext,o=r.tag;(r=new Uint8Array(n.byteLength+o.byteLength)).set(new Uint8Array(n),0),r.set(new Uint8Array(o),n.byteLength),r=r.buffer}t(r)}}))),c}})),i){var l=r.digest;r.digest=function(e,t){if(!t.byteLength)throw new Error("Empy input is not allowed");var n;try{n=l.call(r,e,t)}catch(e){return Promise.reject(e)}return n=new Promise((function(e,t){n.onabort=n.onerror=function(e){t(e)},n.oncomplete=function(t){e(t.target.result)}}))},e.crypto=Object.create(t,{getRandomValues:{value:function(e){return t.getRandomValues(e)}},subtle:{value:r}}),e.CryptoKey=C}a&&(t.subtle=r,e.Crypto=n,e.SubtleCrypto=o,e.CryptoKey=C)}}}function h(e){return btoa(e).replace(/\=+$/,"").replace(/\+/g,"-").replace(/\//g,"_")}function f(e){return e=(e+="===").slice(0,-e.length%4),atob(e.replace(/-/g,"+").replace(/_/g,"/"))}function p(e){for(var t=new Uint8Array(e.length),r=0;re.length)throw new RangeError("Malformed DER");var r,n=e[t.pos++],o=e[t.pos++];if(o>=128){if(o&=127,t.end-t.pos=128){var a=n;for(n=4,t.splice(o,0,a>>24&255,a>>16&255,a>>8&255,255&a);n>1&&!(a>>24);)a<<=8,n--;n<4&&t.splice(o,4-n),n|=128}return t.splice(o-2,2,r,n),t}function C(e,t,r,n){Object.defineProperties(this,{_key:{value:e},type:{value:e.type,enumerable:!0},extractable:{value:void 0===r?e.extractable:r,enumerable:!0},algorithm:{value:void 0===t?e.algorithm:t,enumerable:!0},usages:{value:void 0===n?e.usages:n,enumerable:!0}})}function v(e){return"verify"===e||"encrypt"===e||"wrapKey"===e}function S(e){return"sign"===e||"decrypt"===e||"unwrapKey"===e}},"function"==typeof define&&define.amd?define([],(function(){return t(e)})):"object"==typeof module&&module.exports?module.exports=t(e):t(e)}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n=r(952);window.FHIR=n})(); +//# sourceMappingURL=fhir-client.pure.min.js.map \ No newline at end of file diff --git a/dist/build/fhir-client.pure.min.js.LICENSE.txt b/dist/build/fhir-client.pure.min.js.LICENSE.txt new file mode 100644 index 00000000..ddf89926 --- /dev/null +++ b/dist/build/fhir-client.pure.min.js.LICENSE.txt @@ -0,0 +1,5 @@ +/** + * @file Web Cryptography API shim + * @author Artem S Vybornov + * @license MIT + */ diff --git a/dist/build/fhir-client.pure.min.js.map b/dist/build/fhir-client.pure.min.js.map new file mode 100644 index 00000000..2db92349 --- /dev/null +++ b/dist/build/fhir-client.pure.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fhir-client.pure.min.js","mappings":"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","sources":["webpack://FHIR/./src/Client.ts","webpack://FHIR/./src/HttpError.ts","webpack://FHIR/./src/adapters/BrowserAdapter.ts","webpack://FHIR/./src/entry/browser.ts","webpack://FHIR/./src/lib.ts","webpack://FHIR/./src/security/browser.ts","webpack://FHIR/./src/settings.ts","webpack://FHIR/./src/smart.ts","webpack://FHIR/./src/storage/BrowserStorage.ts","webpack://FHIR/./src/strings.ts","webpack://FHIR/./node_modules/debug/src/browser.js","webpack://FHIR/./node_modules/debug/src/common.js","webpack://FHIR/./node_modules/js-base64/base64.js","webpack://FHIR/./node_modules/ms/index.js","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/browser.mjs","webpack://FHIR/./node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs","webpack://FHIR/webpack/bootstrap","webpack://FHIR/webpack/runtime/define property getters","webpack://FHIR/webpack/runtime/global","webpack://FHIR/webpack/runtime/hasOwnProperty shorthand","webpack://FHIR/webpack/startup"],"sourcesContent":["import {\n absolute,\n debug as _debug,\n getPath,\n setPath,\n jwtDecode,\n makeArray,\n request,\n byCode,\n byCodes,\n units,\n getPatientParam,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n assertJsonPatch,\n assert\n} from \"./lib\";\n\nimport str from \"./strings\";\nimport { SMART_KEY, patientCompartment, fhirVersions } from \"./settings\";\nimport HttpError from \"./HttpError\";\nimport BrowserAdapter from \"./adapters/BrowserAdapter\";\nimport { fhirclient } from \"./types\";\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { Response } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst debug = _debug.extend(\"client\");\n\n/**\n * Adds patient context to requestOptions object to be used with [[Client.request]]\n * @param requestOptions Can be a string URL (relative to the serviceUrl), or an\n * object which will be passed to fetch()\n * @param client Current FHIR client object containing patient context\n * @return requestOptions object contextualized to current patient\n */\nasync function contextualize(\n requestOptions: string | URL | fhirclient.RequestOptions,\n client: Client\n): Promise\n{\n const base = absolute(\"/\", client.state.serverUrl);\n\n async function contextualURL(_url: URL) {\n const resourceType = _url.pathname.split(\"/\").pop();\n assert(resourceType, `Invalid url \"${_url}\"`);\n assert(patientCompartment.indexOf(resourceType) > -1, `Cannot filter \"${resourceType}\" resources by patient`);\n const conformance = await fetchConformanceStatement(client.state.serverUrl);\n const searchParam = getPatientParam(conformance, resourceType);\n _url.searchParams.set(searchParam, client.patient.id as string);\n return _url.href;\n }\n\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n return { url: await contextualURL(new URL(requestOptions + \"\", base)) };\n }\n\n requestOptions.url = await contextualURL(new URL(requestOptions.url + \"\", base));\n return requestOptions;\n}\n\n/**\n * Gets single reference by id. Caches the result.\n * @param refId\n * @param cache A map to store the resolved refs\n * @param client The client instance\n * @param requestOptions Only signal and headers are currently used if provided\n * @returns The resolved reference\n * @private\n */\nfunction getRef(\n refId: string,\n cache: Record,\n client: Client,\n requestOptions: RequestInit\n): Promise {\n if (!cache[refId]) {\n\n const { signal, headers } = requestOptions;\n\n // Note that we set cache[refId] immediately! When the promise is\n // settled it will be updated. This is to avoid a ref being fetched\n // twice because some of these requests are executed in parallel.\n cache[refId] = client.request({\n url: refId,\n headers,\n signal\n }).then(res => {\n cache[refId] = res;\n return res;\n }, (error: Error) => {\n delete cache[refId];\n throw error;\n });\n }\n\n return Promise.resolve(cache[refId]);\n}\n\n/**\n * Resolves a reference in the given resource.\n * @param obj FHIR Resource\n */\nfunction resolveRef(\n obj: fhirclient.FHIR.Resource,\n path: string,\n graph: boolean,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n const node = getPath(obj, path);\n if (node) {\n const isArray = Array.isArray(node);\n return Promise.all(makeArray(node).filter(Boolean).map((item, i) => {\n const ref = item.reference;\n if (ref) {\n return getRef(ref, cache, client, requestOptions).then(sub => {\n if (graph) {\n if (isArray) {\n if (path.indexOf(\"..\") > -1) {\n setPath(obj, `${path.replace(\"..\", `.${i}.`)}`, sub); \n } else {\n setPath(obj, `${path}.${i}`, sub);\n }\n } else {\n setPath(obj, path, sub);\n }\n }\n }).catch((ex) => {\n /* ignore missing references */\n if (ex.status !== 404) {\n throw ex;\n }\n });\n }\n }));\n }\n}\n\n/**\n * Given a resource and a list of ref paths - resolves them all\n * @param obj FHIR Resource\n * @param fhirOptions The fhir options of the initiating request call\n * @param cache A map to store fetched refs\n * @param client The client instance\n * @private\n */\nfunction resolveRefs(\n obj: fhirclient.FHIR.Resource,\n fhirOptions: fhirclient.FhirOptions,\n cache: fhirclient.JsonObject,\n client: Client,\n requestOptions: fhirclient.RequestOptions\n) {\n\n // 1. Sanitize paths, remove any invalid ones\n let paths = makeArray(fhirOptions.resolveReferences)\n .filter(Boolean) // No false, 0, null, undefined or \"\"\n .map(path => String(path).trim())\n .filter(Boolean); // No space-only strings\n\n // 2. Remove duplicates\n paths = paths.filter((p, i) => {\n const index = paths.indexOf(p, i + 1);\n if (index > -1) {\n debug(\"Duplicated reference path \\\"%s\\\"\", p);\n return false;\n }\n return true;\n });\n\n // 3. Early exit if no valid paths are found\n if (!paths.length) {\n return Promise.resolve();\n }\n\n // 4. Group the paths by depth so that child refs are looked up\n // after their parents!\n const groups: Record = {};\n paths.forEach(path => {\n const len = path.split(\".\").length;\n if (!groups[len]) {\n groups[len] = [];\n }\n groups[len].push(path);\n });\n\n // 5. Execute groups sequentially! Paths within same group are\n // fetched in parallel!\n let task: Promise = Promise.resolve();\n Object.keys(groups).sort().forEach(len => {\n const group = groups[len];\n task = task.then(() => Promise.all(group.map((path: string) => {\n return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions);\n })));\n });\n return task;\n}\n\n/**\n * This is a FHIR client that is returned to you from the `ready()` call of the\n * **SMART API**. You can also create it yourself if needed:\n *\n * ```js\n * // BROWSER\n * const client = FHIR.client(\"https://r4.smarthealthit.org\");\n *\n * // SERVER\n * const client = smart(req, res).client(\"https://r4.smarthealthit.org\");\n * ```\n */\nexport default class Client\n{\n /**\n * The state of the client instance is an object with various properties.\n * It contains some details about how the client has been authorized and\n * determines the behavior of the client instance. This state is persisted\n * in `SessionStorage` in browsers or in request session on the servers.\n */\n readonly state: fhirclient.ClientState;\n\n /**\n * The adapter to use to connect to the current environment. Currently we have:\n * - BrowserAdapter - for browsers\n * - NodeAdapter - for Express or vanilla NodeJS servers\n * - HapiAdapter - for HAPI NodeJS servers\n */\n readonly environment: fhirclient.Adapter;\n\n /**\n * A SMART app is typically associated with a patient. This is a namespace\n * for the patient-related functionality of the client.\n */\n readonly patient: {\n\n /**\n * The ID of the current patient or `null` if there is no current patient\n */\n id: string | null\n\n /**\n * A method to fetch the current patient resource from the FHIR server.\n * If there is no patient context, it will reject with an error.\n * @param {fhirclient.FetchOptions} [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n \n /**\n * This is similar to [[request]] but it makes requests in the\n * context of the current patient. For example, instead of doing\n * ```js\n * client.request(\"Observation?patient=\" + client.patient.id)\n * ```\n * you can do\n * ```js\n * client.patient.request(\"Observation\")\n * ```\n * The return type depends on the arguments. Typically it will be the\n * response payload JSON object. Can also be a string or the `Response`\n * object itself if we have received a non-json result, which allows us\n * to handle even binary responses. Can also be a [[CombinedFetchResult]]\n * object if the `requestOptions.includeResponse`s has been set to true.\n * @category Request\n */\n request: (\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions?: fhirclient.FhirOptions\n ) => Promise\n\n /**\n * This is the FhirJS Patient API. It will ONLY exist if the `Client`\n * instance is \"connected\" to FhirJS.\n */\n api?: Record\n };\n\n /**\n * The client may be associated with a specific encounter, if the scopes\n * permit that and if the back-end server supports that. This is a namespace\n * for encounter-related functionality.\n */\n readonly encounter: {\n\n /**\n * The ID of the current encounter or `null` if there is no current\n * encounter\n */\n id: string | null\n\n /**\n * A method to fetch the current encounter resource from the FHIR server.\n * If there is no encounter context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction\n };\n\n /**\n * The client may be associated with a specific user, if the scopes\n * permit that. This is a namespace for user-related functionality.\n */\n readonly user: {\n\n /**\n * The ID of the current user or `null` if there is no current user\n */\n id: string | null\n\n /**\n * A method to fetch the current user resource from the FHIR server.\n * If there is no user context, it will reject with an error.\n * @param [requestOptions] Any options to pass to the `fetch` call.\n * @category Request\n */\n read: fhirclient.RequestFunction<\n fhirclient.FHIR.Patient |\n fhirclient.FHIR.Practitioner |\n fhirclient.FHIR.RelatedPerson\n >\n\n /**\n * Returns the profile of the logged_in user (if any), or null if the\n * user is not available. This is a string having the shape\n * `{user type}/{user id}`. For example `Practitioner/abc` or\n * `Patient/xyz`.\n * @alias client.getFhirUser()\n */\n fhirUser: string | null\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * `Practitioner`, `Patient` or `RelatedPerson`.\n * @alias client.getUserType()\n */\n resourceType: string | null\n };\n\n /**\n * The [FhirJS](https://github.com/FHIR/fhir.js/blob/master/README.md) API.\n * **NOTE:** This will only be available if `fhir.js` is used. Otherwise it\n * will be `undefined`.\n */\n api: Record | undefined;\n\n /**\n * Refers to the refresh task while it is being performed.\n * @see [[refresh]]\n */\n private _refreshTask: Promise | null;\n\n /**\n * Validates the parameters, creates an instance and tries to connect it to\n * FhirJS, if one is available globally.\n */\n constructor(environment: fhirclient.Adapter, state: fhirclient.ClientState | string)\n {\n const _state = typeof state == \"string\" ? { serverUrl: state } : state;\n\n // Valid serverUrl is required!\n assert(\n _state.serverUrl && _state.serverUrl.match(/https?:\\/\\/.+/),\n \"A \\\"serverUrl\\\" option is required and must begin with \\\"http(s)\\\"\"\n );\n\n this.state = _state;\n this.environment = environment;\n this._refreshTask = null;\n\n const client = this;\n\n // patient api ---------------------------------------------------------\n this.patient = {\n get id() { return client.getPatientId(); },\n read: (requestOptions) => {\n const id = this.patient.id;\n return id ?\n this.request({ ...requestOptions, url: `Patient/${id}` }) :\n Promise.reject(new Error(\"Patient is not available\"));\n },\n request: (requestOptions, fhirOptions = {}) => {\n if (this.patient.id) {\n return (async () => {\n const options = await contextualize(requestOptions, this);\n return this.request(options, fhirOptions);\n })();\n } else {\n return Promise.reject(new Error(\"Patient is not available\"));\n }\n }\n };\n\n // encounter api -------------------------------------------------------\n this.encounter = {\n get id() { return client.getEncounterId(); },\n read: requestOptions => {\n const id = this.encounter.id;\n return id ?\n this.request({ ...requestOptions, url: `Encounter/${id}` }) :\n Promise.reject(new Error(\"Encounter is not available\"));\n }\n };\n\n // user api ------------------------------------------------------------\n this.user = {\n get fhirUser() { return client.getFhirUser(); },\n get id() { return client.getUserId(); },\n get resourceType() { return client.getUserType(); },\n read: requestOptions => {\n const fhirUser = this.user.fhirUser;\n return fhirUser ?\n this.request({ ...requestOptions, url: fhirUser }) :\n Promise.reject(new Error(\"User is not available\"));\n }\n };\n\n // fhir.js api (attached automatically in browser)\n // ---------------------------------------------------------------------\n this.connect((environment as BrowserAdapter).fhir);\n }\n\n /**\n * This method is used to make the \"link\" between the `fhirclient` and the\n * `fhir.js`, if one is available.\n * **Note:** This is called by the constructor. If fhir.js is available in\n * the global scope as `fhir`, it will automatically be linked to any [[Client]]\n * instance. You should only use this method to connect to `fhir.js` which\n * is not global.\n */\n connect(fhirJs?: (options: Record) => Record): Client\n {\n if (typeof fhirJs == \"function\") {\n const options: Record = {\n baseUrl: this.state.serverUrl.replace(/\\/$/, \"\")\n };\n\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n options.auth = { token: accessToken };\n }\n else {\n const { username, password } = this.state;\n if (username && password) {\n options.auth = {\n user: username,\n pass: password\n };\n }\n }\n this.api = fhirJs(options);\n\n const patientId = this.getState(\"tokenResponse.patient\");\n if (patientId) {\n this.patient.api = fhirJs({\n ...options,\n patient: patientId\n });\n }\n }\n return this;\n }\n\n /**\n * Returns the ID of the selected patient or null. You should have requested\n * \"launch/patient\" scope. Otherwise this will return null.\n */\n getPatientId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the patient. This should be a scope issue.\n if (!tokenResponse.patient) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/patient)?\\b/)) {\n debug(str.noScopeForId, \"patient\", \"patient\");\n }\n else {\n // The server should have returned the patient!\n debug(\"The ID of the selected patient is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return tokenResponse.patient;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected patient\");\n }\n else {\n debug(str.noFreeContext, \"selected patient\");\n }\n return null;\n }\n\n /**\n * Returns the ID of the selected encounter or null. You should have\n * requested \"launch/encounter\" scope. Otherwise this will return null.\n * Note that not all servers support the \"launch/encounter\" scope so this\n * will be null if they don't.\n */\n getEncounterId(): string | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n // We have been authorized against this server but we don't know\n // the encounter. This should be a scope issue.\n if (!tokenResponse.encounter) {\n if (!(this.state.scope || \"\").match(/\\blaunch(\\/encounter)?\\b/)) {\n debug(str.noScopeForId, \"encounter\", \"encounter\");\n }\n else {\n // The server should have returned the encounter!\n debug(\"The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters.\");\n }\n return null;\n }\n return tokenResponse.encounter;\n }\n\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the ID of the selected encounter\");\n }\n else {\n debug(str.noFreeContext, \"selected encounter\");\n }\n return null;\n }\n\n /**\n * Returns the (decoded) id_token if any. You need to request \"openid\" and\n * \"profile\" scopes if you need to receive an id_token (if you need to know\n * who the logged-in user is).\n */\n getIdToken(): fhirclient.IDToken | null\n {\n const tokenResponse = this.state.tokenResponse;\n if (tokenResponse) {\n const idToken = tokenResponse.id_token;\n const scope = this.state.scope || \"\";\n\n // We have been authorized against this server but we don't have\n // the id_token. This should be a scope issue.\n if (!idToken) {\n const hasOpenid = scope.match(/\\bopenid\\b/);\n const hasProfile = scope.match(/\\bprofile\\b/);\n const hasFhirUser = scope.match(/\\bfhirUser\\b/);\n if (!hasOpenid || !(hasFhirUser || hasProfile)) {\n debug(\n \"You are trying to get the id_token but you are not \" +\n \"using the right scopes. Please add 'openid' and \" +\n \"'fhirUser' or 'profile' to the scopes you are \" +\n \"requesting.\"\n );\n }\n else {\n // The server should have returned the id_token!\n debug(\"The id_token is not available. Please check if your server supports that.\");\n }\n return null;\n }\n return jwtDecode(idToken, this.environment) as fhirclient.IDToken;\n }\n if (this.state.authorizeUri) {\n debug(str.noIfNoAuth, \"the id_token\");\n }\n else {\n debug(str.noFreeContext, \"id_token\");\n }\n return null;\n }\n\n /**\n * Returns the profile of the logged_in user (if any). This is a string\n * having the following shape `\"{user type}/{user id}\"`. For example:\n * `\"Practitioner/abc\"` or `\"Patient/xyz\"`.\n */\n getFhirUser(): string | null\n {\n const idToken = this.getIdToken();\n if (idToken) {\n // Epic may return a full url\n // @see https://github.com/smart-on-fhir/client-js/issues/105\n if (idToken.fhirUser) {\n return idToken.fhirUser.split(\"/\").slice(-2).join(\"/\");\n }\n return idToken.profile\n }\n return null;\n }\n\n /**\n * Returns the user ID or null.\n */\n getUserId(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[1];\n }\n return null;\n }\n\n /**\n * Returns the type of the logged-in user or null. The result can be\n * \"Practitioner\", \"Patient\" or \"RelatedPerson\".\n */\n getUserType(): string | null\n {\n const profile = this.getFhirUser();\n if (profile) {\n return profile.split(\"/\")[0];\n }\n return null;\n }\n\n /**\n * Builds and returns the value of the `Authorization` header that can be\n * sent to the FHIR server\n */\n getAuthorizationHeader(): string | null\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n if (accessToken) {\n return \"Bearer \" + accessToken;\n }\n const { username, password } = this.state;\n if (username && password) {\n return \"Basic \" + this.environment.btoa(username + \":\" + password);\n }\n return null;\n }\n\n /**\n * Used internally to clear the state of the instance and the state in the\n * associated storage.\n */\n private async _clearState() {\n const storage = this.environment.getStorage();\n const key = await storage.get(SMART_KEY);\n if (key) {\n await storage.unset(key);\n }\n await storage.unset(SMART_KEY);\n this.state.tokenResponse = {};\n }\n\n /**\n * Creates a new resource in a server-assigned location\n * @see http://hl7.org/fhir/http.html#create\n * @param resource A FHIR resource to be created\n * @param [requestOptions] Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n create(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}`,\n method: \"POST\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Creates a new current version for an existing resource or creates an\n * initial version if no resource already exists for the given id.\n * @see http://hl7.org/fhir/http.html#update\n * @param resource A FHIR resource to be updated\n * @param requestOptions Any options to be passed to the fetch call.\n * Note that `method` and `body` will be ignored.\n * @category Request\n */\n update(\n resource: fhirclient.FHIR.Resource,\n requestOptions?: O\n ): Promise : R>\n {\n return this.request({\n ...requestOptions,\n url: `${resource.resourceType}/${resource.id}`,\n method: \"PUT\",\n body: JSON.stringify(resource),\n headers: {\n // TODO: Do we need to alternate with \"application/json+fhir\"?\n \"content-type\": \"application/json\",\n ...(requestOptions || {}).headers\n }\n });\n }\n\n /**\n * Removes an existing resource.\n * @see http://hl7.org/fhir/http.html#delete\n * @param url Relative URI of the FHIR resource to be deleted\n * (format: `resourceType/id`)\n * @param requestOptions Any options (except `method` which will be fixed\n * to `DELETE`) to be passed to the fetch call.\n * @category Request\n */\n delete(url: string, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n return this.request({\n ...requestOptions,\n url,\n method: \"DELETE\"\n });\n }\n\n /**\n * Makes a JSON Patch to the given resource\n * @see http://hl7.org/fhir/http.html#patch\n * @param url Relative URI of the FHIR resource to be patched\n * (format: `resourceType/id`)\n * @param patch A JSON Patch array to send to the server, For details\n * see https://datatracker.ietf.org/doc/html/rfc6902\n * @param requestOptions Any options to be passed to the fetch call,\n * except for `method`, `url` and `body` which cannot be overridden.\n * @since 2.4.0\n * @category Request\n * @typeParam ResolveType This method would typically resolve with the\n * patched resource or reject with an OperationOutcome. However, this may\n * depend on the server implementation or even on the request headers.\n * For that reason, if the default resolve type (which is\n * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass\n * in your own resolve type parameter.\n */\n async patch(url: string, patch: fhirclient.JsonPatch, requestOptions: fhirclient.FetchOptions = {}): Promise\n {\n assertJsonPatch(patch);\n return this.request({\n ...requestOptions,\n url,\n method: \"PATCH\",\n body: JSON.stringify(patch),\n headers: {\n \"prefer\": \"return=presentation\",\n \"content-type\": \"application/json-patch+json; charset=UTF-8\",\n ...requestOptions.headers,\n }\n });\n }\n\n /**\n * @param requestOptions Can be a string URL (relative to the serviceUrl),\n * or an object which will be passed to fetch()\n * @param fhirOptions Additional options to control the behavior\n * @param _resolvedRefs DO NOT USE! Used internally.\n * @category Request\n */\n async request(\n requestOptions: string|URL|fhirclient.RequestOptions,\n fhirOptions: fhirclient.FhirOptions = {},\n _resolvedRefs: fhirclient.JsonObject = {}\n ): Promise\n {\n const debugRequest = _debug.extend(\"client:request\");\n assert(requestOptions, \"request requires an url or request options as argument\");\n\n // url -----------------------------------------------------------------\n let url: string;\n if (typeof requestOptions == \"string\" || requestOptions instanceof URL) {\n url = String(requestOptions);\n requestOptions = {} as fhirclient.RequestOptions;\n }\n else {\n url = String(requestOptions.url);\n }\n\n url = absolute(url, this.state.serverUrl);\n\n const options = {\n graph: fhirOptions.graph !== false,\n flat : !!fhirOptions.flat,\n pageLimit: fhirOptions.pageLimit ?? 1,\n resolveReferences: (fhirOptions.resolveReferences || []) as string[],\n useRefreshToken: fhirOptions.useRefreshToken !== false,\n onPage: typeof fhirOptions.onPage == \"function\" ?\n fhirOptions.onPage as (\n data: fhirclient.JsonObject | fhirclient.JsonObject[],\n references?: fhirclient.JsonObject | undefined) => any :\n undefined\n };\n\n const signal = (requestOptions as RequestInit).signal || undefined;\n\n // Refresh the access token if needed\n const job = options.useRefreshToken ?\n this.refreshIfNeeded({ signal }).then(() => requestOptions as fhirclient.RequestOptions) :\n Promise.resolve(requestOptions as fhirclient.RequestOptions);\n\n let response: Response | undefined;\n\n return job\n\n // Add the Authorization header now, after the access token might\n // have been updated\n .then(requestOptions => {\n const authHeader = this.getAuthorizationHeader();\n if (authHeader) {\n requestOptions.headers = {\n ...requestOptions.headers,\n authorization: authHeader\n };\n }\n return requestOptions;\n })\n \n // Make the request\n .then(requestOptions => {\n debugRequest(\n \"%s, options: %O, fhirOptions: %O\",\n url,\n requestOptions,\n options\n );\n return request(url, requestOptions).then(result => {\n if (requestOptions.includeResponse) {\n response = (result as fhirclient.CombinedFetchResult).response;\n return (result as fhirclient.CombinedFetchResult).body;\n }\n return result;\n });\n })\n\n // Handle 401 ------------------------------------------------------\n .catch(async (error: HttpError) => {\n if (error.status == 401) {\n\n // !accessToken -> not authorized -> No session. Need to launch.\n if (!this.getState(\"tokenResponse.access_token\")) {\n error.message += \"\\nThis app cannot be accessed directly. Please launch it as SMART app!\";\n throw error;\n }\n\n // auto-refresh not enabled and Session expired.\n // Need to re-launch. Clear state to start over!\n if (!options.useRefreshToken) {\n debugRequest(\"Your session has expired and the useRefreshToken option is set to false. Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n\n // In rare cases we may have a valid access token and a refresh\n // token and the request might still fail with 401 just because\n // the access token has just been revoked.\n\n // otherwise -> auto-refresh failed. Session expired.\n // Need to re-launch. Clear state to start over!\n debugRequest(\"Auto-refresh failed! Please re-launch the app.\");\n await this._clearState();\n error.message += \"\\n\" + str.expired;\n throw error;\n }\n throw error;\n })\n\n // Handle 403 ------------------------------------------------------\n .catch((error: HttpError) => {\n if (error.status == 403) {\n debugRequest(\"Permission denied! Please make sure that you have requested the proper scopes.\");\n }\n throw error;\n })\n\n .then((data: any) => {\n\n // At this point we don't know what `data` actually is!\n\n // We might get an empty or falsy result. If so return it as is\n // Also handle raw responses\n if (!data || typeof data == \"string\" || data instanceof Response) {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: data,\n response\n }\n }\n return data;\n }\n \n // Resolve References ------------------------------------------\n return (async (_data: fhirclient.FHIR.Resource) => {\n\n if (_data.resourceType == \"Bundle\") {\n await Promise.all(((_data as fhirclient.FHIR.Bundle).entry || []).map(item => resolveRefs(\n item.resource,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n )));\n }\n else {\n await resolveRefs(\n _data,\n options,\n _resolvedRefs,\n this,\n requestOptions as fhirclient.RequestOptions\n );\n }\n\n return _data;\n })(data)\n\n // Pagination ----------------------------------------------\n .then(async _data => {\n if (_data && _data.resourceType == \"Bundle\") {\n const links = (_data.link || []) as fhirclient.FHIR.BundleLink[];\n\n if (options.flat) {\n _data = (_data.entry || []).map(\n (entry: fhirclient.FHIR.BundleEntry) => entry.resource\n );\n }\n\n if (options.onPage) {\n await options.onPage(_data, { ..._resolvedRefs });\n }\n\n if (--options.pageLimit) {\n const next = links.find(l => l.relation == \"next\");\n _data = makeArray(_data);\n if (next && next.url) {\n const nextPage = await this.request(\n {\n url: next.url,\n\n // Aborting the main request (even after it is complete)\n // must propagate to any child requests and abort them!\n // To do so, just pass the same AbortSignal if one is\n // provided.\n signal\n },\n options,\n _resolvedRefs\n );\n\n if (options.onPage) {\n return null;\n }\n\n if (options.resolveReferences.length) {\n Object.assign(_resolvedRefs, nextPage.references);\n return _data.concat(makeArray(nextPage.data || nextPage));\n }\n return _data.concat(makeArray(nextPage));\n }\n }\n }\n return _data;\n })\n\n // Finalize ------------------------------------------------\n .then(_data => {\n if (options.graph) {\n _resolvedRefs = {};\n }\n else if (!options.onPage && options.resolveReferences.length) {\n return {\n data: _data,\n references: _resolvedRefs\n };\n }\n return _data;\n })\n .then(_data => {\n if ((requestOptions as fhirclient.FetchOptions).includeResponse) {\n return {\n body: _data,\n response\n }\n }\n return _data;\n });\n });\n }\n\n /**\n * Checks if access token and refresh token are present. If they are, and if\n * the access token is expired or is about to expire in the next 10 seconds,\n * calls `this.refresh()` to obtain new access token.\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refreshIfNeeded(requestOptions: RequestInit = {}): Promise\n {\n const accessToken = this.getState(\"tokenResponse.access_token\");\n const refreshToken = this.getState(\"tokenResponse.refresh_token\");\n const expiresAt = this.state.expiresAt || 0;\n\n if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) {\n return this.refresh(requestOptions);\n }\n\n return Promise.resolve(this.state);\n }\n\n /**\n * Use the refresh token to obtain new access token. If the refresh token is\n * expired (or this fails for any other reason) it will be deleted from the\n * state, so that we don't enter into loops trying to re-authorize.\n *\n * This method is typically called internally from [[request]] if\n * certain request fails with 401.\n *\n * @param requestOptions Any options to pass to the fetch call. Most of them\n * will be overridden, bit it might still be useful for passing additional\n * request options or an abort signal.\n * @category Request\n */\n refresh(requestOptions: RequestInit = {}): Promise\n {\n const debugRefresh = _debug.extend(\"client:refresh\");\n debugRefresh(\"Attempting to refresh with refresh_token...\");\n\n const refreshToken = this.state?.tokenResponse?.refresh_token;\n assert(refreshToken, \"Unable to refresh. No refresh_token found.\");\n\n const tokenUri = this.state.tokenUri;\n assert(tokenUri, \"Unable to refresh. No tokenUri found.\");\n\n const scopes = this.getState(\"tokenResponse.scope\") || \"\";\n const hasOfflineAccess = scopes.search(/\\boffline_access\\b/) > -1;\n const hasOnlineAccess = scopes.search(/\\bonline_access\\b/) > -1;\n assert(hasOfflineAccess || hasOnlineAccess, \"Unable to refresh. No offline_access or online_access scope found.\");\n\n // This method is typically called internally from `request` if certain\n // request fails with 401. However, clients will often run multiple\n // requests in parallel which may result in multiple refresh calls.\n // To avoid that, we keep a reference to the current refresh task (if any).\n if (!this._refreshTask) {\n\n const refreshRequestOptions = {\n credentials: this.environment.options.refreshTokenWithCredentials || \"same-origin\",\n ...requestOptions,\n method : \"POST\",\n mode : \"cors\" as RequestMode,\n headers: {\n ...(requestOptions.headers || {}),\n \"content-type\": \"application/x-www-form-urlencoded\"\n },\n body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(refreshToken)}`\n };\n\n // custom authorization header can be passed on manual calls\n if (!(\"authorization\" in refreshRequestOptions.headers)) {\n const { clientSecret, clientId } = this.state;\n if (clientSecret) {\n // @ts-ignore\n refreshRequestOptions.headers.authorization = \"Basic \" + this.environment.btoa(\n clientId + \":\" + clientSecret\n );\n }\n }\n\n this._refreshTask = request(tokenUri, refreshRequestOptions)\n .then(data => {\n assert(data.access_token, \"No access token received\");\n debugRefresh(\"Received new access token response %O\", data);\n this.state.tokenResponse = { ...this.state.tokenResponse, ...data };\n this.state.expiresAt = getAccessTokenExpiration(data, this.environment);\n return this.state;\n })\n .catch((error: Error) => {\n if (this.state?.tokenResponse?.refresh_token) {\n debugRefresh(\"Deleting the expired or invalid refresh token.\");\n delete this.state.tokenResponse.refresh_token;\n }\n throw error;\n })\n .finally(() => {\n this._refreshTask = null;\n const key = this.state.key;\n if (key) {\n this.environment.getStorage().set(key, this.state);\n } else {\n debugRefresh(\"No 'key' found in Clint.state. Cannot persist the instance.\");\n }\n });\n }\n\n return this._refreshTask;\n }\n\n // utils -------------------------------------------------------------------\n\n /**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): fhirclient.ObservationMap\n {\n return byCode(observations, property);\n }\n\n /**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n ): (...codes: string[]) => any[]\n {\n return byCodes(observations, property);\n }\n\n /**\n * @category Utility\n */\n units = units;\n\n /**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n * @todo This should be deprecated and moved elsewhere. One should not have\n * to obtain an instance of [[Client]] just to use utility functions like this.\n * @deprecated\n * @category Utility\n */\n getPath(obj: Record, path = \"\"): any {\n return getPath(obj, path);\n }\n\n /**\n * Returns a copy of the client state. Accepts a dot-separated path argument\n * (same as for `getPath`) to allow for selecting specific properties.\n * Examples:\n * ```js\n * client.getState(); // -> the entire state object\n * client.getState(\"serverUrl\"); // -> the URL we are connected to\n * client.getState(\"tokenResponse.patient\"); // -> The selected patient ID (if any)\n * ```\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\n getState(path = \"\") {\n return getPath({ ...this.state }, path);\n }\n\n /**\n * Returns a promise that will be resolved with the fhir version as defined\n * in the CapabilityStatement.\n */\n getFhirVersion(): Promise {\n return fetchConformanceStatement(this.state.serverUrl)\n .then((metadata) => metadata.fhirVersion);\n }\n\n /**\n * Returns a promise that will be resolved with the numeric fhir version\n * - 2 for DSTU2\n * - 3 for STU3\n * - 4 for R4\n * - 0 if the version is not known\n */\n getFhirRelease(): Promise {\n return this.getFhirVersion().then(v => (fhirVersions as any)[v] ?? 0);\n }\n}\n","import { fhirclient } from \"./types\";\n\n\nexport default class HttpError extends Error\n{\n /**\n * The HTTP status code for this error\n */\n statusCode: number;\n\n /**\n * The HTTP status code for this error.\n * Note that this is the same as `status`, i.e. the code is available\n * through any of these.\n */\n status: number;\n\n /**\n * The HTTP status text corresponding to this error\n */\n statusText: string;\n\n /**\n * Reference to the HTTP Response object\n */\n response: Response;\n\n constructor(response: Response) {\n super(`${response.status} ${response.statusText}\\nURL: ${response.url}`);\n this.name = \"HttpError\";\n this.response = response;\n this.statusCode = response.status;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n\n async parse()\n {\n if (!this.response.bodyUsed) {\n try {\n const type = this.response.headers.get(\"content-type\") || \"text/plain\";\n if (type.match(/\\bjson\\b/i)) {\n let body = await this.response.json();\n if (body.error) {\n this.message += \"\\n\" + body.error;\n if (body.error_description) {\n this.message += \": \" + body.error_description;\n }\n }\n else {\n this.message += \"\\n\\n\" + JSON.stringify(body, null, 4);\n }\n }\n else if (type.match(/^text\\//i)) {\n let body = await this.response.text();\n if (body) {\n this.message += \"\\n\\n\" + body;\n }\n }\n } catch {\n // ignore\n }\n }\n\n return this;\n }\n\n toJSON() {\n return {\n name : this.name,\n statusCode: this.statusCode,\n status : this.status,\n statusText: this.statusText,\n message : this.message\n };\n }\n}\n","import { ready, authorize, init } from \"../smart\";\nimport Client from \"../Client\";\nimport BrowserStorage from \"../storage/BrowserStorage\";\nimport { fhirclient } from \"../types\";\nimport * as security from \"../security/browser\"\nimport { encodeURL, decode, fromUint8Array } from \"js-base64\"\n\n/**\n * Browser Adapter\n */\nexport default class BrowserAdapter implements fhirclient.Adapter\n{\n /**\n * Stores the URL instance associated with this adapter\n */\n private _url: URL | null = null;\n\n /**\n * Holds the Storage instance associated with this instance\n */\n private _storage: fhirclient.Storage | null = null;\n\n /**\n * Environment-specific options\n */\n options: fhirclient.BrowserFHIRSettings;\n\n security = security;\n\n /**\n * @param options Environment-specific options\n */\n constructor(options: fhirclient.BrowserFHIRSettings = {})\n {\n this.options = {\n // Replaces the browser's current URL\n // using window.history.replaceState API or by reloading.\n replaceBrowserHistory: true,\n\n // When set to true, this variable will fully utilize\n // HTML5 sessionStorage API.\n // This variable can be overridden to false by setting\n // FHIR.oauth2.settings.fullSessionStorageSupport = false.\n // When set to false, the sessionStorage will be keyed\n // by a state variable. This is to allow the embedded IE browser\n // instances instantiated on a single thread to continue to\n // function without having sessionStorage data shared\n // across the embedded IE instances.\n fullSessionStorageSupport: true,\n\n // Do we want to send cookies while making a request to the token\n // endpoint in order to obtain new access token using existing\n // refresh token. In rare cases the auth server might require the\n // client to send cookies along with those requests. In this case\n // developers will have to change this before initializing the app\n // like so:\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"include\";`\n // or\n // `FHIR.oauth2.settings.refreshTokenWithCredentials = \"same-origin\";`\n // Can be one of:\n // \"include\" - always send cookies\n // \"same-origin\" - only send cookies if we are on the same domain (default)\n // \"omit\" - do not send cookies\n refreshTokenWithCredentials: \"same-origin\",\n\n ...options\n };\n }\n\n /**\n * Given a relative path, returns an absolute url using the instance base URL\n */\n relative(path: string): string\n {\n return new URL(path, this.getUrl().href).href;\n }\n\n /**\n * In browsers we need to be able to (dynamically) check if fhir.js is\n * included in the page. If it is, it should have created a \"fhir\" variable\n * in the global scope.\n */\n get fhir()\n {\n // @ts-ignore\n return typeof fhir === \"function\" ? fhir : null;\n }\n\n /**\n * Given the current environment, this method must return the current url\n * as URL instance\n */\n getUrl(): URL\n {\n if (!this._url) {\n this._url = new URL(location + \"\");\n }\n return this._url;\n }\n\n /**\n * Given the current environment, this method must redirect to the given\n * path\n */\n redirect(to: string): void\n {\n location.href = to;\n }\n\n /**\n * Returns a BrowserStorage object which is just a wrapper around\n * sessionStorage\n */\n getStorage(): BrowserStorage\n {\n if (!this._storage) {\n this._storage = new BrowserStorage();\n }\n return this._storage;\n }\n\n /**\n * Returns a reference to the AbortController constructor. In browsers,\n * AbortController will always be available as global (native or polyfilled)\n */\n getAbortController()\n {\n return AbortController;\n }\n\n /**\n * ASCII string to Base64\n */\n atob(str: string): string\n {\n return window.atob(str);\n }\n\n /**\n * Base64 to ASCII string\n */\n btoa(str: string): string\n {\n return window.btoa(str);\n }\n\n base64urlencode(input: string | Uint8Array)\n {\n if (typeof input == \"string\") {\n return encodeURL(input)\n }\n return fromUint8Array(input, true)\n }\n\n base64urldecode(input: string)\n {\n return decode(input)\n }\n\n /**\n * Creates and returns adapter-aware SMART api. Not that while the shape of\n * the returned object is well known, the arguments to this function are not.\n * Those who override this method are free to require any environment-specific\n * arguments. For example in node we will need a request, a response and\n * optionally a storage or storage factory function.\n */\n getSmartApi(): fhirclient.SMART\n {\n return {\n ready : (...args: any[]) => ready(this, ...args),\n authorize: options => authorize(this, options),\n init : options => init(this, options),\n client : (state: string | fhirclient.ClientState) => new Client(this, state),\n options : this.options,\n utils: {\n security\n }\n };\n }\n}\n","\n// Note: the following 2 imports appear as unused but they affect how tsc is\n// generating type definitions!\nimport { fhirclient } from \"../types\";\nimport Client from \"../Client\";\n\n// In Browsers we create an adapter, get the SMART api from it and build the\n// global FHIR object\nimport BrowserAdapter from \"../adapters/BrowserAdapter\";\n\nconst adapter = new BrowserAdapter();\nconst { ready, authorize, init, client, options, utils } = adapter.getSmartApi();\n\n// We have two kinds of browser builds - \"pure\" for new browsers and \"legacy\"\n// for old ones. In pure builds we assume that the browser supports everything\n// we need. In legacy mode, the library also acts as a polyfill. Babel will\n// automatically polyfill everything except \"fetch\", which we have to handle\n// manually.\n// @ts-ignore\nif (typeof FHIRCLIENT_PURE == \"undefined\") {\n const fetch = require(\"cross-fetch\");\n require(\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\");\n if (!window.fetch) {\n window.fetch = fetch.default;\n window.Headers = fetch.Headers;\n window.Request = fetch.Request;\n window.Response = fetch.Response;\n }\n}\n\n// $lab:coverage:off$\nconst FHIR = {\n AbortController: window.AbortController,\n client,\n utils,\n oauth2: {\n settings: options,\n ready,\n authorize,\n init\n }\n};\n\nexport = FHIR;\n// $lab:coverage:on$\n","/*\n * This file contains some shared functions. They are used by other modules, but\n * are defined here so that tests can import this library and test them.\n */\n\nimport HttpError from \"./HttpError\";\nimport { patientParams } from \"./settings\";\nimport { fhirclient } from \"./types\";\nconst debug = require(\"debug\");\n\n// $lab:coverage:off$\n// @ts-ignore\nconst { fetch } = typeof FHIRCLIENT_PURE !== \"undefined\" ? window : require(\"cross-fetch\");\n// $lab:coverage:on$\n\nconst _debug = debug(\"FHIR\");\nexport { _debug as debug };\n\n/**\n * The cache for the `getAndCache` function\n */\nconst cache: Record = {};\n\n/**\n * A namespace with functions for converting between different measurement units\n */\nexport const units = {\n cm({ code, value }: fhirclient.CodeValue) {\n ensureNumerical({ code, value });\n if (code == \"cm\" ) return value;\n if (code == \"m\" ) return value * 100;\n if (code == \"in\" ) return value * 2.54;\n if (code == \"[in_us]\") return value * 2.54;\n if (code == \"[in_i]\" ) return value * 2.54;\n if (code == \"ft\" ) return value * 30.48;\n if (code == \"[ft_us]\") return value * 30.48;\n throw new Error(\"Unrecognized length unit: \" + code);\n },\n kg({ code, value }: fhirclient.CodeValue){\n ensureNumerical({ code, value });\n if (code == \"kg\" ) return value;\n if (code == \"g\" ) return value / 1000;\n if (code.match(/lb/)) return value / 2.20462;\n if (code.match(/oz/)) return value / 35.274;\n throw new Error(\"Unrecognized weight unit: \" + code);\n },\n any(pq: fhirclient.CodeValue){\n ensureNumerical(pq);\n return pq.value;\n }\n};\n\n/**\n * Assertion function to guard arguments for `units` functions\n */\nfunction ensureNumerical({ value, code }: fhirclient.CodeValue) {\n if (typeof value !== \"number\") {\n throw new Error(\"Found a non-numerical unit: \" + value + \" \" + code);\n }\n}\n\n/**\n * Used in fetch Promise chains to reject if the \"ok\" property is not true\n */\nexport async function checkResponse(resp: Response): Promise {\n if (!resp.ok) {\n const error = new HttpError(resp);\n await error.parse();\n throw error;\n }\n return resp;\n}\n\n/**\n * Used in fetch Promise chains to return the JSON version of the response.\n * Note that `resp.json()` will throw on empty body so we use resp.text()\n * instead.\n */\nexport function responseToJSON(resp: Response): Promise {\n return resp.text().then(text => text.length ? JSON.parse(text) : \"\");\n}\n\nexport function loweCaseKeys | any[] | undefined>(obj: T): T {\n \n // Can be undefined to signal that this key should be removed\n if (!obj) {\n return obj as T\n }\n\n // Arrays are valid values in case of recursive calls\n if (Array.isArray(obj)) {\n return obj.map(v => v && typeof v === \"object\" ? loweCaseKeys(v) : v) as unknown as T;\n }\n\n // Plain object\n let out: Record = {};\n Object.keys(obj).forEach(key => {\n const lowerKey = key.toLowerCase()\n const v = (obj as Record)[key]\n out[lowerKey] = v && typeof v == \"object\" ? loweCaseKeys(v) : v;\n });\n return out as T;\n}\n\n/**\n * This is our built-in request function. It does a few things by default\n * (unless told otherwise):\n * - Makes CORS requests\n * - Sets accept header to \"application/json\"\n * - Handles errors\n * - If the response is json return the json object\n * - If the response is text return the result text\n * - Otherwise return the response object on which we call stuff like `.blob()`\n */\nexport function request(\n url: string | Request,\n requestOptions: fhirclient.FetchOptions = {}\n): Promise\n{\n const { includeResponse, ...options } = requestOptions;\n return fetch(url, {\n mode: \"cors\",\n ...options,\n headers: {\n accept: \"application/json\",\n ...loweCaseKeys(options.headers)\n }\n })\n .then(checkResponse)\n .then((res: Response) => {\n const type = res.headers.get(\"content-type\") + \"\";\n if (type.match(/\\bjson\\b/i)) {\n return responseToJSON(res).then(body => ({ res, body }));\n }\n if (type.match(/^text\\//i)) {\n return res.text().then(body => ({ res, body }));\n }\n return { res };\n })\n .then(({res, body}: {res:Response, body?:fhirclient.JsonObject|string}) => {\n\n // Some servers will reply after CREATE with json content type but with\n // empty body. In this case check if a location header is received and\n // fetch that to use it as the final result.\n if (!body && res.status == 201) {\n const location = res.headers.get(\"location\");\n if (location) {\n return request(location, { ...options, method: \"GET\", body: null, includeResponse });\n }\n }\n\n if (includeResponse) {\n return { body, response: res };\n }\n\n // For any non-text and non-json response return the Response object.\n // This to let users decide if they want to call text(), blob() or\n // something else on it\n if (body === undefined) {\n return res;\n }\n\n // Otherwise just return the parsed body (can also be \"\" or null)\n return body;\n });\n}\n\n/**\n * Makes a request using `fetch` and stores the result in internal memory cache.\n * The cache is cleared when the page is unloaded.\n * @param url The URL to request\n * @param requestOptions Request options\n * @param force If true, reload from source and update the cache, even if it has\n * already been cached.\n */\nexport function getAndCache(url: string, requestOptions?: RequestInit, force: boolean = process.env.NODE_ENV === \"test\"): Promise {\n if (force || !cache[url]) {\n cache[url] = request(url, requestOptions);\n return cache[url];\n }\n return Promise.resolve(cache[url]);\n}\n\n/**\n * Fetches the conformance statement from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n * @param [requestOptions] Any options passed to the fetch call\n */\nexport function fetchConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \"metadata\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(\n `Failed to fetch the conformance statement from \"${url}\". ${ex}`\n );\n });\n}\n\n\n/**\n * Walks through an object (or array) and returns the value found at the\n * provided path. This function is very simple so it intentionally does not\n * support any argument polymorphism, meaning that the path can only be a\n * dot-separated string. If the path is invalid returns undefined.\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @returns {*} Whatever is found in the path or undefined\n */\nexport function getPath(obj: Record, path = \"\"): any {\n path = path.trim();\n if (!path) {\n return obj;\n }\n\n let segments = path.split(\".\");\n let result = obj;\n\n while (result && segments.length) {\n const key = segments.shift();\n if (!key && Array.isArray(result)) {\n return result.map(o => getPath(o, segments.join(\".\")));\n } else {\n result = result[key as string];\n }\n }\n\n return result;\n}\n\n/**\n * Like getPath, but if the node is found, its value is set to @value\n * @param obj The object (or Array) to walk through\n * @param path The path (eg. \"a.b.4.c\")\n * @param value The value to set\n * @param createEmpty If true, create missing intermediate objects or arrays\n * @returns The modified object\n */\nexport function setPath(obj: Record, path: string, value: any, createEmpty = false): Record {\n path.trim().split(\".\").reduce(\n (out, key, idx, arr) => {\n if (out && idx === arr.length - 1) {\n out[key] = value;\n }\n else {\n if (out && out[key] === undefined && createEmpty) {\n out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {};\n }\n return out ? out[key] : undefined;\n }\n },\n obj\n );\n return obj;\n}\n\n/**\n * If the argument is an array returns it as is. Otherwise puts it in an array\n * (`[arg]`) and returns the result\n * @param arg The element to test and possibly convert to array\n * @category Utility\n */\nexport function makeArray(arg: any): T[] {\n if (Array.isArray(arg)) {\n return arg;\n }\n return [arg];\n}\n\n/**\n * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl\n * is not provided, the result would be a rooted path (one that starts with `/`).\n * @param path The path to convert\n * @param baseUrl The base URL\n */\nexport function absolute(path: string, baseUrl?: string): string\n{\n if (path.match(/^http/)) return path;\n if (path.match(/^urn/)) return path;\n return String(baseUrl || \"\").replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n}\n\n/**\n * Generates random strings. By default this returns random 8 characters long\n * alphanumeric strings.\n * @param strLength The length of the output string. Defaults to 8.\n * @param charSet A string containing all the possible characters.\n * Defaults to all the upper and lower-case letters plus digits.\n * @category Utility\n */\nexport function randomString(\n strLength = 8,\n charSet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n): string\n{\n const result = [];\n const len = charSet.length;\n while (strLength--) {\n result.push(charSet.charAt(Math.floor(Math.random() * len)));\n }\n return result.join(\"\");\n}\n\n/**\n * Decodes a JWT token and returns it's body.\n * @param token The token to read\n * @param env An `Adapter` or any other object that has an `atob` method\n * @category Utility\n */\nexport function jwtDecode(token: string, env: fhirclient.Adapter): Record | null\n{\n const payload = token.split(\".\")[1];\n return payload ? JSON.parse(env.atob(payload)) : null;\n}\n\n/**\n * Add a supplied number of seconds to the supplied Date, returning\n * an integer number of seconds since the epoch\n * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds)\n * @param from Initial time (defaults to current time)\n */\nexport function getTimeInFuture(secondsAhead: number = 120, from?: Date | number): number {\n return Math.floor(+(from || new Date()) / 1000 + secondsAhead) \n}\n\n/**\n * Given a token response, computes and returns the expiresAt timestamp.\n * Note that this should only be used immediately after an access token is\n * received, otherwise the computed timestamp will be incorrect.\n * @param tokenResponse \n * @param env \n */\nexport function getAccessTokenExpiration(tokenResponse: fhirclient.TokenResponse, env: fhirclient.Adapter): number\n{\n const now = Math.floor(Date.now() / 1000);\n\n // Option 1 - using the expires_in property of the token response\n if (tokenResponse.expires_in) {\n return now + tokenResponse.expires_in;\n }\n\n // Option 2 - using the exp property of JWT tokens (must not assume JWT!)\n if (tokenResponse.access_token) {\n let tokenBody = jwtDecode(tokenResponse.access_token, env);\n if (tokenBody && tokenBody.exp) {\n return tokenBody.exp;\n }\n }\n\n // Option 3 - if none of the above worked set this to 5 minutes after now\n return now + 300;\n}\n\n/**\n * Groups the observations by code. Returns a map that will look like:\n * ```js\n * const map = client.byCodes(observations, \"code\");\n * // map = {\n * // \"55284-4\": [ observation1, observation2 ],\n * // \"6082-2\": [ observation3 ]\n * // }\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCode(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): fhirclient.ObservationMap\n{\n const ret: fhirclient.ObservationMap = {};\n\n function handleCodeableConcept(concept: fhirclient.FHIR.CodeableConcept, observation: fhirclient.FHIR.Observation) {\n if (concept && Array.isArray(concept.coding)) {\n concept.coding.forEach(({ code }) => {\n if (code) {\n ret[code] = ret[code] || [] as fhirclient.FHIR.Observation[];\n ret[code].push(observation);\n }\n });\n }\n }\n\n makeArray(observations).forEach(o => {\n if (o.resourceType === \"Observation\" && o[property]) {\n if (Array.isArray(o[property])) {\n o[property].forEach((concept: fhirclient.FHIR.CodeableConcept) => handleCodeableConcept(concept, o));\n } else {\n handleCodeableConcept(o[property], o);\n }\n }\n });\n\n return ret;\n}\n\n/**\n * First groups the observations by code using `byCode`. Then returns a function\n * that accepts codes as arguments and will return a flat array of observations\n * having that codes. Example:\n * ```js\n * const filter = client.byCodes(observations, \"category\");\n * filter(\"laboratory\") // => [ observation1, observation2 ]\n * filter(\"vital-signs\") // => [ observation3 ]\n * filter(\"laboratory\", \"vital-signs\") // => [ observation1, observation2, observation3 ]\n * ```\n * @param observations Array of observations\n * @param property The name of a CodeableConcept property to group by\n */\nexport function byCodes(\n observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[],\n property: string\n): (...codes: string[]) => any[]\n{\n const bank = byCode(observations, property);\n return (...codes) => codes\n .filter(code => (code + \"\") in bank)\n .reduce(\n (prev, code) => prev.concat(bank[code + \"\"]),\n [] as fhirclient.FHIR.Observation[]\n );\n}\n\n/**\n * Given a conformance statement and a resource type, returns the name of the\n * URL parameter that can be used to scope the resource type by patient ID.\n */\nexport function getPatientParam(conformance: fhirclient.FHIR.CapabilityStatement, resourceType: string): string\n{\n // Find what resources are supported by this server\n const resources = getPath(conformance, \"rest.0.resource\") || [];\n\n // Check if this resource is supported\n const meta = resources.find((r: any) => r.type === resourceType);\n if (!meta) {\n throw new Error(`Resource \"${resourceType}\" is not supported by this FHIR server`);\n }\n\n // Check if any search parameters are available for this resource\n if (!Array.isArray(meta.searchParam)) {\n throw new Error(`No search parameters supported for \"${resourceType}\" on this FHIR server`);\n }\n\n // This is a rare case but could happen in generic workflows\n if (resourceType == \"Patient\" && meta.searchParam.find((x: any) => x.name == \"_id\")) {\n return \"_id\";\n }\n\n // Now find the first possible parameter name\n const out = patientParams.find(p => meta.searchParam.find((x: any) => x.name == p));\n\n // If there is no match\n if (!out) {\n throw new Error(\"I don't know what param to use for \" + resourceType);\n }\n\n return out;\n}\n\n/**\n * Resolves a reference to target window. It may also open new window or tab if\n * the `target = \"popup\"` or `target = \"_blank\"`.\n * @param target\n * @param width Only used when `target = \"popup\"`\n * @param height Only used when `target = \"popup\"`\n */\nexport async function getTargetWindow(target: fhirclient.WindowTarget, width: number = 800, height: number = 720): Promise\n{\n // The target can be a function that returns the target. This can be\n // used to open a layer pop-up with an iframe and then return a reference\n // to that iframe (or its name)\n if (typeof target == \"function\") {\n target = await target();\n }\n\n // The target can be a window reference\n if (target && typeof target == \"object\") {\n return target;\n }\n\n // At this point target must be a string\n if (typeof target != \"string\") {\n _debug(\"Invalid target type '%s'. Failing back to '_self'.\", typeof target);\n return self;\n }\n\n // Current window\n if (target == \"_self\") {\n return self;\n }\n\n // The parent frame\n if (target == \"_parent\") {\n return parent;\n }\n\n // The top window\n if (target == \"_top\") {\n return top || self;\n }\n\n // New tab or window\n if (target == \"_blank\") {\n let error, targetWindow: Window | null = null;\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\");\n if (!targetWindow) {\n throw new Error(\"Perhaps window.open was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Popup window\n if (target == \"popup\") {\n let error, targetWindow: Window | null = null;\n // if (!targetWindow || targetWindow.closed) {\n try {\n targetWindow = window.open(\"\", \"SMARTAuthPopup\", [\n \"height=\" + height,\n \"width=\" + width,\n \"menubar=0\",\n \"resizable=1\",\n \"status=0\",\n \"top=\" + (screen.height - height) / 2,\n \"left=\" + (screen.width - width) / 2\n ].join(\",\"));\n if (!targetWindow) {\n throw new Error(\"Perhaps the popup window was blocked\");\n }\n } catch (e) {\n error = e;\n }\n\n if (!targetWindow) {\n _debug(\"Cannot open window. Failing back to '_self'. %s\", error);\n return self;\n } else {\n return targetWindow;\n }\n }\n\n // Frame or window by name\n const winOrFrame: Window = frames[target as any];\n if (winOrFrame) {\n return winOrFrame;\n }\n\n _debug(\"Unknown target '%s'. Failing back to '_self'.\", target);\n return self;\n}\n\nexport function assert(condition: any, message: string): asserts condition {\n if (!(condition)) {\n throw new Error(message)\n }\n}\n\nexport function assertJsonPatch(patch: fhirclient.JsonPatch): asserts patch {\n assert(Array.isArray(patch), \"The JSON patch must be an array\")\n assert(patch.length > 0, \"The JSON patch array should not be empty\")\n patch.forEach((operation: fhirclient.JsonPatchOperation) => {\n assert(\n [\"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"].indexOf(operation.op) > -1,\n 'Each patch operation must have an \"op\" property which must be one of: \"add\", \"replace\", \"test\", \"move\", \"copy\", \"remove\"'\n )\n assert(operation.path && typeof operation.path, `Invalid \"${operation.op}\" operation. Missing \"path\" property`)\n \n if (operation.op == \"add\" || operation.op == \"replace\" || operation.op == \"test\") {\n assert(\"value\" in operation, `Invalid \"${operation.op}\" operation. Missing \"value\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else if (operation.op == \"move\" || operation.op == \"copy\") {\n assert(typeof operation.from == \"string\", `Invalid \"${operation.op}\" operation. Requires a string \"from\" property`)\n assert(Object.keys(operation).length == 3, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n\n else {\n assert(Object.keys(operation).length == 2, `Invalid \"${operation.op}\" operation. Contains unknown properties`)\n }\n })\n}\n","import { encodeURL, fromUint8Array } from \"js-base64\"\nimport { fhirclient } from \"../types\"\n\n\nconst crypto: Crypto = typeof globalThis === \"object\" && globalThis.crypto ?\n globalThis.crypto :\n require(\"isomorphic-webcrypto\").default;\n\nconst subtle = () => {\n if (!crypto.subtle) {\n if (!globalThis.isSecureContext) {\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available unless you run this app in secure context (using \" +\n \"HTTPS or running locally). See \" +\n \"https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n )\n }\n throw new Error(\n \"Some of the required subtle crypto functionality is not \" +\n \"available in the current environment (no crypto.subtle)\"\n )\n }\n return crypto.subtle\n}\n\n\ninterface PkcePair {\n codeChallenge: string\n codeVerifier: string\n}\n\nconst ALGS = {\n ES384: {\n name: \"ECDSA\",\n namedCurve: \"P-384\"\n } as EcKeyGenParams,\n RS384: {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 4096,\n publicExponent: new Uint8Array([1, 0, 1]),\n hash: {\n name: 'SHA-384'\n }\n } as RsaHashedKeyGenParams\n};\n\nexport function randomBytes(count: number): Uint8Array {\n return crypto.getRandomValues(new Uint8Array(count));\n}\n\nexport async function digestSha256(payload: string): Promise {\n const prepared = new TextEncoder().encode(payload);\n const hash = await subtle().digest('SHA-256', prepared);\n return new Uint8Array(hash);\n}\n\nexport const generatePKCEChallenge = async (entropy = 96): Promise => {\n const inputBytes = randomBytes(entropy)\n const codeVerifier = fromUint8Array(inputBytes, true)\n const codeChallenge = fromUint8Array(await digestSha256(codeVerifier), true)\n return { codeChallenge, codeVerifier }\n}\n\nexport async function importJWK(jwk: fhirclient.JWK): Promise {\n // alg is optional in JWK but we need it here!\n if (!jwk.alg) {\n throw new Error('The \"alg\" property of the JWK must be set to \"ES384\" or \"RS384\"')\n }\n\n // Use of the \"key_ops\" member is OPTIONAL, unless the application requires its presence.\n // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3\n // \n // In our case the app will only import private keys so we can assume \"sign\"\n if (!Array.isArray(jwk.key_ops)) {\n jwk.key_ops = [\"sign\"]\n }\n\n // In this case the JWK has a \"key_ops\" array and \"sign\" is not listed\n if (!jwk.key_ops.includes(\"sign\")) {\n throw new Error('The \"key_ops\" property of the JWK does not contain \"sign\"')\n }\n\n try {\n return await subtle().importKey(\n \"jwk\",\n jwk,\n ALGS[jwk.alg],\n jwk.ext === true,\n jwk.key_ops// || ['sign']\n )\n } catch (e) {\n throw new Error(`The ${jwk.alg} is not supported by this browser: ${e}`)\n }\n}\n\nexport async function signCompactJws(alg: keyof typeof ALGS, privateKey: CryptoKey, header: any, payload: any): Promise {\n\n const jwtHeader = JSON.stringify({ ...header, alg });\n const jwtPayload = JSON.stringify(payload);\n const jwtAuthenticatedContent = `${encodeURL(jwtHeader)}.${encodeURL(jwtPayload)}`;\n\n const signature = await subtle().sign(\n { ...privateKey.algorithm, hash: 'SHA-384' },\n privateKey,\n new TextEncoder().encode(jwtAuthenticatedContent)\n );\n\n return `${jwtAuthenticatedContent}.${fromUint8Array(new Uint8Array(signature), true)}`\n}\n","/**\n * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4\n */\nexport const patientCompartment = [\n \"Account\",\n \"AdverseEvent\",\n \"AllergyIntolerance\",\n \"Appointment\",\n \"AppointmentResponse\",\n \"AuditEvent\",\n \"Basic\",\n \"BodySite\",\n \"BodyStructure\",\n \"CarePlan\",\n \"CareTeam\",\n \"ChargeItem\",\n \"Claim\",\n \"ClaimResponse\",\n \"ClinicalImpression\",\n \"Communication\",\n \"CommunicationRequest\",\n \"Composition\",\n \"Condition\",\n \"Consent\",\n \"Coverage\",\n \"CoverageEligibilityRequest\",\n \"CoverageEligibilityResponse\",\n \"DetectedIssue\",\n \"DeviceRequest\",\n \"DeviceUseRequest\",\n \"DeviceUseStatement\",\n \"DiagnosticOrder\",\n \"DiagnosticReport\",\n \"DocumentManifest\",\n \"DocumentReference\",\n \"EligibilityRequest\",\n \"Encounter\",\n \"EnrollmentRequest\",\n \"EpisodeOfCare\",\n \"ExplanationOfBenefit\",\n \"FamilyMemberHistory\",\n \"Flag\",\n \"Goal\",\n \"Group\",\n \"ImagingManifest\",\n \"ImagingObjectSelection\",\n \"ImagingStudy\",\n \"Immunization\",\n \"ImmunizationEvaluation\",\n \"ImmunizationRecommendation\",\n \"Invoice\",\n \"List\",\n \"MeasureReport\",\n \"Media\",\n \"MedicationAdministration\",\n \"MedicationDispense\",\n \"MedicationOrder\",\n \"MedicationRequest\",\n \"MedicationStatement\",\n \"MolecularSequence\",\n \"NutritionOrder\",\n \"Observation\",\n \"Order\",\n \"Patient\",\n \"Person\",\n \"Procedure\",\n \"ProcedureRequest\",\n \"Provenance\",\n \"QuestionnaireResponse\",\n \"ReferralRequest\",\n \"RelatedPerson\",\n \"RequestGroup\",\n \"ResearchSubject\",\n \"RiskAssessment\",\n \"Schedule\",\n \"ServiceRequest\",\n \"Specimen\",\n \"SupplyDelivery\",\n \"SupplyRequest\",\n \"VisionPrescription\"\n];\n\n/**\n * Map of FHIR releases and their abstract version as number\n */\nexport const fhirVersions = {\n \"0.4.0\": 2,\n \"0.5.0\": 2,\n \"1.0.0\": 2,\n \"1.0.1\": 2,\n \"1.0.2\": 2,\n \"1.1.0\": 3,\n \"1.4.0\": 3,\n \"1.6.0\": 3,\n \"1.8.0\": 3,\n \"3.0.0\": 3,\n \"3.0.1\": 3,\n \"3.3.0\": 4,\n \"3.5.0\": 4,\n \"4.0.0\": 4,\n \"4.0.1\": 4\n};\n\n/**\n * Combined (FHIR R2-R4) list of search parameters that can be used to scope\n * a request by patient ID.\n */\nexport const patientParams = [\n \"patient\",\n \"subject\",\n \"requester\",\n \"member\",\n \"actor\",\n \"beneficiary\"\n];\n\n/**\n * The name of the sessionStorage entry that contains the current key\n */\nexport const SMART_KEY = \"SMART_KEY\";\n","/* global window */\nimport {\n debug as _debug,\n request,\n getPath,\n getTimeInFuture,\n randomString,\n getAndCache,\n fetchConformanceStatement,\n getAccessTokenExpiration,\n getTargetWindow,\n assert\n} from \"./lib\";\nimport Client from \"./Client\";\nimport { SMART_KEY } from \"./settings\";\nimport { fhirclient } from \"./types\";\n\nconst debug = _debug.extend(\"oauth2\");\n\nexport { SMART_KEY as KEY };\n\nfunction isBrowser() {\n return typeof window === \"object\";\n}\n\n/**\n * Fetches the well-known json file from the given base URL.\n * Note that the result is cached in memory (until the page is reloaded in the\n * browser) because it might have to be re-used by the client\n * @param baseUrl The base URL of the FHIR server\n */\nexport function fetchWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n const url = String(baseUrl).replace(/\\/*$/, \"/\") + \".well-known/smart-configuration\";\n return getAndCache(url, requestOptions).catch((ex: Error) => {\n throw new Error(`Failed to fetch the well-known json \"${url}\". ${ex.message}`);\n });\n}\n\n/**\n * Fetch a \"WellKnownJson\" and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromWellKnownJson(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchWellKnownJson(baseUrl, requestOptions).then(meta => {\n if (!meta.authorization_endpoint || !meta.token_endpoint) {\n throw new Error(\"Invalid wellKnownJson\");\n }\n return {\n registrationUri : meta.registration_endpoint || \"\",\n authorizeUri : meta.authorization_endpoint,\n tokenUri : meta.token_endpoint,\n codeChallengeMethods: meta.code_challenge_methods_supported || []\n };\n });\n}\n\n/**\n * Fetch a `CapabilityStatement` and extract the SMART endpoints from it\n */\nfunction getSecurityExtensionsFromConformanceStatement(baseUrl = \"/\", requestOptions?: RequestInit): Promise\n{\n return fetchConformanceStatement(baseUrl, requestOptions).then(meta => {\n const nsUri = \"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris\";\n const extensions = ((getPath(meta || {}, \"rest.0.security.extension\") || []) as Array>)\n .filter(e => e.url === nsUri)\n .map(o => o.extension)[0];\n\n const out:fhirclient.OAuthSecurityExtensions = {\n registrationUri : \"\",\n authorizeUri : \"\",\n tokenUri : \"\",\n codeChallengeMethods: [],\n };\n\n if (extensions) {\n extensions.forEach(ext => {\n if (ext.url === \"register\") {\n out.registrationUri = ext.valueUri;\n }\n if (ext.url === \"authorize\") {\n out.authorizeUri = ext.valueUri;\n }\n if (ext.url === \"token\") {\n out.tokenUri = ext.valueUri;\n }\n });\n }\n\n return out;\n });\n}\n\n\n/**\n * Given a FHIR server, returns an object with it's Oauth security endpoints\n * that we are interested in. This will try to find the info in both the\n * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever\n * Arrives first will be used and the other request will be aborted.\n * @param [baseUrl = \"/\"] Fhir server base URL\n */\nexport function getSecurityExtensions(baseUrl = \"/\"): Promise\n{\n return getSecurityExtensionsFromWellKnownJson(baseUrl)\n .catch(() => getSecurityExtensionsFromConformanceStatement(baseUrl));\n}\n\n/**\n * Starts the SMART Launch Sequence.\n * > **IMPORTANT**:\n * `authorize()` will end up redirecting you to the authorization server.\n * This means that you should not add anything to the returned promise chain.\n * Any code written directly after the authorize() call might not be executed\n * due to that redirect!\n * @param env\n * @param [params]\n */\nexport async function authorize(\n env: fhirclient.Adapter,\n params: fhirclient.AuthorizeParams | fhirclient.AuthorizeParams[] = {}\n): Promise\n{\n const url = env.getUrl();\n\n // Multiple config for EHR launches ---------------------------------------\n if (Array.isArray(params)) {\n const urlISS = url.searchParams.get(\"iss\") || url.searchParams.get(\"fhirServiceUrl\");\n if (!urlISS) {\n throw new Error(\n 'Passing in an \"iss\" url parameter is required if authorize ' +\n 'uses multiple configurations'\n );\n }\n // pick the right config\n const cfg = params.find(x => {\n if (x.issMatch) {\n if (typeof x.issMatch === \"function\") {\n return !!x.issMatch(urlISS);\n }\n if (typeof x.issMatch === \"string\") {\n return x.issMatch === urlISS;\n }\n if (x.issMatch instanceof RegExp) {\n return x.issMatch.test(urlISS);\n }\n }\n return false;\n });\n assert(cfg, `No configuration found matching the current \"iss\" parameter \"${urlISS}\"`);\n return await authorize(env, cfg);\n }\n // ------------------------------------------------------------------------\n\n // Obtain input\n const {\n clientSecret,\n fakeTokenResponse,\n encounterId,\n target,\n width,\n height,\n pkceMode,\n clientPublicKeySetUrl,\n // Two deprecated values to use as fall-back values later\n redirect_uri,\n client_id,\n } = params;\n \n let {\n iss,\n launch,\n patientId,\n fhirServiceUrl,\n redirectUri,\n noRedirect,\n scope = \"\",\n clientId,\n completeInTarget,\n clientPrivateJwk\n } = params;\n\n const storage = env.getStorage();\n\n // For these, a url param takes precedence over inline option\n iss = url.searchParams.get(\"iss\") || iss;\n fhirServiceUrl = url.searchParams.get(\"fhirServiceUrl\") || fhirServiceUrl;\n launch = url.searchParams.get(\"launch\") || launch;\n patientId = url.searchParams.get(\"patientId\") || patientId;\n clientId = url.searchParams.get(\"clientId\") || clientId;\n\n // If there's still no clientId or redirectUri, check deprecated params \n if (!clientId) {\n clientId = client_id;\n }\n if (!redirectUri) {\n redirectUri = redirect_uri;\n }\n\n if (!redirectUri) {\n redirectUri = env.relative(\".\");\n } else if (!redirectUri.match(/^https?\\:\\/\\//)) {\n redirectUri = env.relative(redirectUri);\n }\n\n const serverUrl = String(iss || fhirServiceUrl || \"\");\n\n // Validate input\n if (!serverUrl) {\n throw new Error(\n \"No server url found. It must be specified as `iss` or as \" +\n \"`fhirServiceUrl` parameter\"\n );\n }\n\n if (iss) {\n debug(\"Making %s launch...\", launch ? \"EHR\" : \"standalone\");\n }\n\n // append launch scope if needed\n if (launch && !scope.match(/launch/)) {\n scope += \" launch\";\n }\n\n if (isBrowser()) {\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) {\n \n // completeInTarget will default to true if authorize is called from\n // within an iframe. This is to avoid issues when the entire app\n // happens to be rendered in an iframe (including in some EHRs),\n // even though that was not how the app developer's intention.\n completeInTarget = inFrame;\n\n // In this case we can't always make the best decision so ask devs\n // to be explicit in their configuration.\n console.warn(\n 'Your app is being authorized from within an iframe or popup ' +\n 'window. Please be explicit and provide a \"completeInTarget\" ' +\n 'option. Use \"true\" to complete the authorization in the ' +\n 'same window, or \"false\" to try to complete it in the parent ' +\n 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html'\n );\n }\n }\n\n // If `authorize` is called, make sure we clear any previous state (in case\n // this is a re-authorize)\n const oldKey = await storage.get(SMART_KEY);\n await storage.unset(oldKey);\n\n // create initial state\n const stateKey = randomString(16);\n const state: fhirclient.ClientState = {\n clientId,\n scope,\n redirectUri,\n serverUrl,\n clientSecret,\n clientPrivateJwk,\n tokenResponse: {},\n key: stateKey,\n completeInTarget,\n clientPublicKeySetUrl\n };\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n if (fullSessionStorageSupport) {\n await storage.set(SMART_KEY, stateKey);\n }\n\n // fakeTokenResponse to override stuff (useful in development)\n if (fakeTokenResponse) {\n Object.assign(state.tokenResponse!, fakeTokenResponse);\n }\n\n // Fixed patientId (useful in development)\n if (patientId) {\n Object.assign(state.tokenResponse!, { patient: patientId });\n }\n\n // Fixed encounterId (useful in development)\n if (encounterId) {\n Object.assign(state.tokenResponse!, { encounter: encounterId });\n }\n\n let redirectUrl = redirectUri + \"?state=\" + encodeURIComponent(stateKey);\n\n // bypass oauth if fhirServiceUrl is used (but iss takes precedence)\n if (fhirServiceUrl && !iss) {\n debug(\"Making fake launch...\");\n await storage.set(stateKey, state);\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // Get oauth endpoints and add them to the state\n const extensions = await getSecurityExtensions(serverUrl);\n Object.assign(state, extensions);\n await storage.set(stateKey, state);\n\n // If this happens to be an open server and there is no authorizeUri\n if (!state.authorizeUri) {\n if (noRedirect) {\n return redirectUrl;\n }\n return await env.redirect(redirectUrl);\n }\n\n // build the redirect uri\n const redirectParams = [\n \"response_type=code\",\n \"client_id=\" + encodeURIComponent(clientId || \"\"),\n \"scope=\" + encodeURIComponent(scope),\n \"redirect_uri=\" + encodeURIComponent(redirectUri),\n \"aud=\" + encodeURIComponent(serverUrl),\n \"state=\" + encodeURIComponent(stateKey)\n ];\n\n // also pass this in case of EHR launch\n if (launch) {\n redirectParams.push(\"launch=\" + encodeURIComponent(launch));\n }\n\n if (shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) {\n let codes = await env.security.generatePKCEChallenge()\n Object.assign(state, codes);\n await storage.set(stateKey, state);\n redirectParams.push(\"code_challenge=\" + state.codeChallenge);// note that the challenge is ALREADY encoded properly\n redirectParams.push(\"code_challenge_method=S256\");\n }\n \n redirectUrl = state.authorizeUri + \"?\" + redirectParams.join(\"&\");\n\n if (noRedirect) {\n return redirectUrl;\n }\n\n if (target && isBrowser()) {\n let win: Window;\n\n win = await getTargetWindow(target, width, height);\n\n if (win !== self) {\n try {\n // Also remove any old state from the target window and then\n // transfer the current state there\n win.sessionStorage.removeItem(oldKey);\n win.sessionStorage.setItem(stateKey, JSON.stringify(state));\n } catch (ex) {\n _debug(`Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n win = self;\n }\n }\n\n if (win !== self) {\n try {\n win.location.href = redirectUrl;\n self.addEventListener(\"message\", onMessage);\n } catch (ex) {\n _debug(`Failed to modify window.location. Perhaps it is from different origin?. Failing back to \"_self\". %s`, ex);\n self.location.href = redirectUrl;\n }\n } else {\n self.location.href = redirectUrl;\n }\n\n return;\n }\n else {\n return await env.redirect(redirectUrl);\n }\n}\n\nfunction shouldIncludeChallenge(S256supported: boolean, pkceMode?: string) {\n if (pkceMode === \"disabled\") {\n return false;\n }\n if (pkceMode === \"unsafeV1\") {\n return true;\n }\n if (pkceMode === \"required\") {\n if (!S256supported) {\n throw new Error(\"Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration.\");\n }\n return true;\n }\n return S256supported;\n}\n\n/**\n * Checks if called within a frame. Only works in browsers!\n * If the current window has a `parent` or `top` properties that refer to\n * another window, returns true. If trying to access `top` or `parent` throws an\n * error, returns true. Otherwise returns `false`.\n */\nexport function isInFrame() {\n try {\n return self !== top && parent !== self;\n } catch (e) {\n return true;\n }\n}\n\n/**\n * Checks if called within another window (popup or tab). Only works in browsers!\n * To consider itself called in a new window, this function verifies that:\n * 1. `self === top` (not in frame)\n * 2. `!!opener && opener !== self` The window has an opener\n * 3. `!!window.name` The window has a `name` set\n */\nexport function isInPopUp() {\n try {\n return self === top &&\n !!opener &&\n opener !== self &&\n !!window.name;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Another window can send a \"completeAuth\" message to this one, making it to\n * navigate to e.data.url\n * @param e The message event\n */\nexport function onMessage(e: MessageEvent) {\n if (e.data.type == \"completeAuth\" && e.origin === new URL(self.location.href).origin) {\n window.removeEventListener(\"message\", onMessage);\n window.location.href = e.data.url;\n }\n}\n\n/**\n * The ready function should only be called on the page that represents\n * the redirectUri. We typically land there after a redirect from the\n * authorization server, but this code will also be executed upon subsequent\n * navigation or page refresh.\n */\nexport async function ready(env: fhirclient.Adapter, options: fhirclient.ReadyOptions = {}): Promise\n{\n const url = env.getUrl();\n const Storage = env.getStorage();\n const params = url.searchParams;\n\n let key = params.get(\"state\");\n const code = params.get(\"code\");\n const authError = params.get(\"error\");\n const authErrorDescription = params.get(\"error_description\");\n\n if (!key) {\n key = await Storage.get(SMART_KEY);\n }\n\n // Start by checking the url for `error` and `error_description` parameters.\n // This happens when the auth server rejects our authorization attempt. In\n // this case it has no other way to tell us what the error was, other than\n // appending these parameters to the redirect url.\n // From client's point of view, this is not very reliable (because we can't\n // know how we have landed on this page - was it a redirect or was it loaded\n // manually). However, if `ready()` is being called, we can assume\n // that the url comes from the auth server (otherwise the app won't work\n // anyway).\n if (authError || authErrorDescription) {\n throw new Error([\n authError,\n authErrorDescription\n ].filter(Boolean).join(\": \"));\n }\n\n debug(\"key: %s, code: %s\", key, code);\n\n // key might be coming from the page url so it might be empty or missing\n assert(key, \"No 'state' parameter found. Please (re)launch the app.\");\n\n // Check if we have a previous state\n let state = (await Storage.get(key)) as fhirclient.ClientState;\n\n const fullSessionStorageSupport = isBrowser() ?\n getPath(env, \"options.fullSessionStorageSupport\") :\n true;\n\n // If we are in a popup window or an iframe and the authorization is\n // complete, send the location back to our opener and exit.\n if (isBrowser() && state && !state.completeInTarget) {\n\n const inFrame = isInFrame();\n const inPopUp = isInPopUp();\n\n // we are about to return to the opener/parent where completeAuth will\n // be called again. In rare cases the opener or parent might also be\n // a frame or popup. Then inFrame or inPopUp will be true but we still\n // have to stop going up the chain. To guard against that weird form of\n // recursion we pass one additional parameter to the url which we later\n // remove.\n if ((inFrame || inPopUp) && !url.searchParams.get(\"complete\")) {\n url.searchParams.set(\"complete\", \"1\");\n const { href, origin } = url;\n if (inFrame) {\n parent.postMessage({ type: \"completeAuth\", url: href }, origin);\n }\n if (inPopUp) {\n opener.postMessage({ type: \"completeAuth\", url: href }, origin);\n window.close();\n }\n\n return new Promise(() => { /* leave it pending!!! */ });\n }\n }\n\n url.searchParams.delete(\"complete\");\n\n // Do we have to remove the `code` and `state` params from the URL?\n const hasState = params.has(\"state\");\n\n if (isBrowser() && getPath(env, \"options.replaceBrowserHistory\") && (code || hasState)) {\n // `code` is the flag that tell us to request an access token.\n // We have to remove it, otherwise the page will authorize on\n // every load!\n if (code) {\n params.delete(\"code\");\n debug(\"Removed code parameter from the url.\");\n }\n\n // If we have `fullSessionStorageSupport` it means we no longer\n // need the `state` key. It will be stored to a well know\n // location - sessionStorage[SMART_KEY]. However, no\n // fullSessionStorageSupport means that this \"well know location\"\n // might be shared between windows and tabs. In this case we\n // MUST keep the `state` url parameter.\n if (hasState && fullSessionStorageSupport) {\n params.delete(\"state\");\n debug(\"Removed state parameter from the url.\");\n }\n\n // If the browser does not support the replaceState method for the\n // History Web API, the \"code\" parameter cannot be removed. As a\n // consequence, the page will (re)authorize on every load. The\n // workaround is to reload the page to new location without those\n // parameters. If that is not acceptable replaceBrowserHistory\n // should be set to false.\n if (window.history.replaceState) {\n window.history.replaceState({}, \"\", url.href);\n }\n }\n\n // If the state does not exist, it means the page has been loaded directly.\n assert(state, \"No state found! Please (re)launch the app.\");\n\n // Assume the client has already completed a token exchange when\n // there is no code (but we have a state) or access token is found in state\n const authorized = !code || state.tokenResponse?.access_token;\n\n // If we are authorized already, then this is just a reload.\n // Otherwise, we have to complete the code flow\n if (!authorized && state.tokenUri) {\n\n assert(code, \"'code' url parameter is required\");\n\n debug(\"Preparing to exchange the code for access token...\");\n const requestOptions = await buildTokenRequest(env, {\n code,\n state,\n clientPublicKeySetUrl: options.clientPublicKeySetUrl,\n privateKey: options.privateKey || state.clientPrivateJwk\n });\n debug(\"Token request options: %O\", requestOptions);\n\n // The EHR authorization server SHALL return a JSON structure that\n // includes an access token or a message indicating that the\n // authorization request has been denied.\n const tokenResponse = await request(state.tokenUri, requestOptions);\n debug(\"Token response: %O\", tokenResponse);\n assert(tokenResponse.access_token, \"Failed to obtain access token.\");\n\n // Now we need to determine when is this authorization going to expire\n state.expiresAt = getAccessTokenExpiration(tokenResponse, env);\n\n // save the tokenResponse so that we don't have to re-authorize on\n // every page reload\n state = { ...state, tokenResponse };\n await Storage.set(key, state);\n debug(\"Authorization successful!\");\n }\n else {\n debug(state.tokenResponse?.access_token ?\n \"Already authorized\" :\n \"No authorization needed\"\n );\n }\n\n if (fullSessionStorageSupport) {\n await Storage.set(SMART_KEY, key);\n }\n\n const client = new Client(env, state);\n debug(\"Created client instance: %O\", client);\n return client;\n}\n\n/**\n * Builds the token request options. Does not make the request, just\n * creates it's configuration and returns it in a Promise.\n */\nexport async function buildTokenRequest(\n env: fhirclient.Adapter,\n {\n code,\n state,\n clientPublicKeySetUrl,\n privateKey\n }: {\n /**\n * The `code` URL parameter received from the auth redirect\n */\n code: string,\n \n /**\n * The app state\n */\n state: fhirclient.ClientState\n\n /**\n * If provided overrides the `clientPublicKeySetUrl` from the authorize\n * options (if any). Used for `jku` token header in case of asymmetric auth.\n */\n clientPublicKeySetUrl?: string\n\n /**\n * Can be a private JWK, or an object with alg, kid and key properties,\n * where `key` is an un-extractable private CryptoKey object.\n */\n privateKey?: fhirclient.JWK | {\n key: CryptoKey\n alg: \"RS384\" | \"ES384\"\n kid: string\n }\n }\n): Promise\n{\n const { redirectUri, clientSecret, tokenUri, clientId, codeVerifier } = state;\n\n assert(redirectUri, \"Missing state.redirectUri\");\n assert(tokenUri, \"Missing state.tokenUri\");\n assert(clientId, \"Missing state.clientId\");\n\n const requestOptions: Record = {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: `code=${code}&grant_type=authorization_code&redirect_uri=${\n encodeURIComponent(redirectUri)}`\n };\n\n // For public apps, authentication is not possible (and thus not required),\n // since a client with no secret cannot prove its identity when it issues a\n // call. (The end-to-end system can still be secure because the client comes\n // from a known, https protected endpoint specified and enforced by the\n // redirect uri.) For confidential apps, an Authorization header using HTTP\n // Basic authentication is required, where the username is the app’s\n // client_id and the password is the app’s client_secret (see example).\n if (clientSecret) {\n requestOptions.headers.authorization = \"Basic \" + env.btoa(\n clientId + \":\" + clientSecret\n );\n debug(\n \"Using state.clientSecret to construct the authorization header: %s\",\n requestOptions.headers.authorization\n );\n }\n \n // Asymmetric auth\n else if (privateKey) {\n\n const pk = \"key\" in privateKey ?\n privateKey.key as CryptoKey:\n await env.security.importJWK(privateKey as fhirclient.JWK)\n\n const jwtHeaders = {\n typ: \"JWT\",\n kid: privateKey.kid,\n jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl\n };\n\n const jwtClaims = {\n iss: clientId,\n sub: clientId,\n aud: tokenUri,\n jti: env.base64urlencode(env.security.randomBytes(32)),\n exp: getTimeInFuture(120) // two minutes in the future\n };\n \n const clientAssertion = await env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims);\n requestOptions.body += `&client_assertion_type=${encodeURIComponent(\"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\")}`;\n requestOptions.body += `&client_assertion=${encodeURIComponent(clientAssertion)}`;\n debug(\"Using state.clientPrivateJwk to add a client_assertion to the POST body\")\n }\n \n // Public client\n else {\n debug(\"Public client detected; adding state.clientId to the POST body\");\n requestOptions.body += `&client_id=${encodeURIComponent(clientId)}`;\n }\n\n if (codeVerifier) {\n debug(\"Found state.codeVerifier, adding to the POST body\")\n // Note that the codeVerifier is ALREADY encoded properly \n requestOptions.body += \"&code_verifier=\" + codeVerifier;\n }\n \n return requestOptions as RequestInit;\n}\n\n/**\n * This function can be used when you want to handle everything in one page\n * (no launch endpoint needed). You can think of it as if it does:\n * ```js\n * authorize(options).then(ready)\n * ```\n *\n * **Be careful with init()!** There are some details you need to be aware of:\n *\n * 1. It will only work if your launch_uri is the same as your redirect_uri.\n * While this should be valid, we can’t promise that every EHR will allow you\n * to register client with such settings.\n * 2. Internally, `init()` will be called twice. First it will redirect to the\n * EHR, then the EHR will redirect back to the page where init() will be\n * called again to complete the authorization. This is generally fine,\n * because the returned promise will only be resolved once, after the second\n * execution, but please also consider the following:\n * - You should wrap all your app’s code in a function that is only executed\n * after `init()` resolves!\n * - Since the page will be loaded twice, you must be careful if your code\n * has global side effects that can persist between page reloads\n * (for example writing to localStorage).\n * 3. For standalone launch, only use init in combination with offline_access\n * scope. Once the access_token expires, if you don’t have a refresh_token\n * there is no way to re-authorize properly. We detect that and delete the\n * expired access token, but it still means that the user will have to\n * refresh the page twice to re-authorize.\n * @param env The adapter\n * @param authorizeOptions The authorize options\n */\nexport async function init(\n env: fhirclient.Adapter,\n authorizeOptions: fhirclient.AuthorizeParams,\n readyOptions?: fhirclient.ReadyOptions\n): Promise\n{\n const url = env.getUrl();\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n // if `code` and `state` params are present we need to complete the auth flow\n if (code && state) {\n return ready(env, readyOptions);\n }\n\n // Check for existing client state. If state is found, it means a client\n // instance have already been created in this session and we should try to\n // \"revive\" it.\n const storage = env.getStorage();\n const key = state || await storage.get(SMART_KEY);\n const cached = await storage.get(key);\n if (cached) {\n return new Client(env, cached);\n }\n\n // Otherwise try to launch\n return authorize(env, authorizeOptions).then(() => {\n // `init` promises a Client but that cannot happen in this case. The\n // browser will be redirected (unload the page and be redirected back\n // to it later and the same init function will be called again). On\n // success, authorize will resolve with the redirect url but we don't\n // want to return that from this promise chain because it is not a\n // Client instance. At the same time, if authorize fails, we do want to\n // pass the error to those waiting for a client instance.\n return new Promise(() => { /* leave it pending!!! */ });\n });\n}\n","export default class Storage\n{\n /**\n * Gets the value at `key`. Returns a promise that will be resolved\n * with that value (or undefined for missing keys).\n */\n async get(key: string): Promise\n {\n const value = sessionStorage[key];\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /**\n * Sets the `value` on `key` and returns a promise that will be resolved\n * with the value that was set.\n */\n async set(key: string, value: any): Promise\n {\n sessionStorage[key] = JSON.stringify(value);\n return value;\n }\n\n /**\n * Deletes the value at `key`. Returns a promise that will be resolved\n * with true if the key was deleted or with false if it was not (eg. if\n * did not exist).\n */\n async unset(key: string): Promise\n {\n if (key in sessionStorage) {\n delete sessionStorage[key];\n return true;\n }\n return false;\n }\n\n}\n","// This map contains reusable debug messages (only those used in multiple places)\nexport default {\n expired : \"Session expired! Please re-launch the app\",\n noScopeForId : \"Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.\",\n noIfNoAuth : \"You are trying to get %s but the app is not authorized yet.\",\n noFreeContext: \"Please don't use open fhir servers if you need to access launch context items like the %S.\"\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.7';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = typeof btoa === 'function' ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = typeof atob === 'function' ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","import './webcrypto-shim.mjs'\nexport default window.crypto\n","/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov \n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empy input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empy input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n\n export default {} // section modified by isomorphic-webcrypto build \n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(952);\n"],"names":["lib_1","require","strings_1","settings_1","Response","window","debug","extend","resolveRefs","obj","fhirOptions","cache","client","requestOptions","paths","makeArray","resolveReferences","filter","Boolean","map","path","String","trim","p","i","indexOf","length","Promise","resolve","groups","forEach","len","split","push","task","Object","keys","sort","group","then","all","graph","node","getPath","isArray","Array","item","ref","reference","refId","signal","headers","request","url","res","error","getRef","sub","setPath","replace","catch","ex","status","resolveRef","exports","constructor","environment","state","units","_state","serverUrl","assert","match","this","_refreshTask","patient","id","getPatientId","read","reject","Error","options","async","base","absolute","contextualURL","_url","resourceType","pathname","pop","patientCompartment","conformance","fetchConformanceStatement","searchParam","getPatientParam","searchParams","set","href","URL","contextualize","encounter","getEncounterId","user","fhirUser","getFhirUser","getUserId","getUserType","connect","fhir","fhirJs","baseUrl","accessToken","getState","auth","token","username","password","pass","api","patientId","tokenResponse","scope","default","noScopeForId","authorizeUri","noIfNoAuth","noFreeContext","getIdToken","idToken","id_token","hasOpenid","hasProfile","hasFhirUser","jwtDecode","slice","join","profile","getAuthorizationHeader","btoa","_clearState","storage","getStorage","key","get","SMART_KEY","unset","create","resource","method","body","JSON","stringify","update","delete","patch","assertJsonPatch","_resolvedRefs","debugRequest","flat","pageLimit","_a","useRefreshToken","onPage","undefined","response","refreshIfNeeded","authHeader","authorization","result","includeResponse","message","expired","data","_data","entry","links","link","next","find","l","relation","nextPage","assign","references","concat","refreshToken","expiresAt","Date","now","refresh","debugRefresh","_b","refresh_token","tokenUri","scopes","hasOfflineAccess","search","hasOnlineAccess","refreshRequestOptions","credentials","refreshTokenWithCredentials","mode","encodeURIComponent","clientSecret","clientId","access_token","getAccessTokenExpiration","finally","byCode","observations","property","byCodes","getFhirVersion","metadata","fhirVersion","getFhirRelease","v","fhirVersions","HttpError","super","statusText","name","statusCode","parse","bodyUsed","type","json","error_description","text","toJSON","smart_1","Client_1","BrowserStorage_1","security","js_base64_1","_storage","replaceBrowserHistory","fullSessionStorageSupport","relative","getUrl","location","redirect","to","getAbortController","AbortController","atob","str","base64urlencode","input","encodeURL","fromUint8Array","base64urldecode","decode","getSmartApi","ready","args","authorize","init","utils","adapter","FHIR","oauth2","settings","module","HttpError_1","fetch","_debug","ensureNumerical","value","code","checkResponse","resp","ok","responseToJSON","loweCaseKeys","out","lowerKey","toLowerCase","accept","getAndCache","force","process","segments","shift","o","arg","env","payload","ret","handleCodeableConcept","concept","observation","coding","condition","cm","kg","any","pq","createEmpty","reduce","idx","arr","strLength","charSet","charAt","Math","floor","random","secondsAhead","from","expires_in","tokenBody","exp","bank","codes","prev","meta","r","x","patientParams","target","width","height","self","parent","top","targetWindow","open","e","screen","frames","operation","op","crypto","globalThis","subtle","isSecureContext","ALGS","ES384","namedCurve","RS384","modulusLength","publicExponent","Uint8Array","hash","randomBytes","count","getRandomValues","digestSha256","prepared","TextEncoder","encode","digest","entropy","inputBytes","codeVerifier","codeChallenge","jwk","alg","key_ops","includes","importKey","ext","privateKey","header","jwtHeader","jwtPayload","jwtAuthenticatedContent","signature","sign","algorithm","enumerable","isBrowser","fetchWellKnownJson","getSecurityExtensions","authorization_endpoint","token_endpoint","registrationUri","registration_endpoint","codeChallengeMethods","code_challenge_methods_supported","getSecurityExtensionsFromWellKnownJson","extensions","extension","valueUri","getSecurityExtensionsFromConformanceStatement","params","urlISS","cfg","issMatch","RegExp","test","fakeTokenResponse","encounterId","pkceMode","clientPublicKeySetUrl","redirect_uri","client_id","iss","launch","fhirServiceUrl","redirectUri","noRedirect","completeInTarget","clientPrivateJwk","inFrame","isInFrame","inPopUp","isInPopUp","console","warn","oldKey","stateKey","randomString","redirectUrl","redirectParams","S256supported","shouldIncludeChallenge","generatePKCEChallenge","win","getTargetWindow","sessionStorage","removeItem","setItem","addEventListener","onMessage","opener","origin","removeEventListener","Storage","authError","authErrorDescription","postMessage","close","hasState","has","history","replaceState","buildTokenRequest","pk","importJWK","jwtHeaders","typ","kid","jku","jwtClaims","aud","jti","getTimeInFuture","clientAssertion","signCompactJws","authorizeOptions","readyOptions","cached","formatArgs","useColors","namespace","humanize","diff","c","color","splice","index","lastC","save","namespaces","load","getItem","DEBUG","__nwjs","navigator","userAgent","m","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","localStorage","localstorage","destroy","warned","colors","log","formatters","j","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","enabled","curr","Number","ms","coerce","unshift","format","formatter","val","call","apply","selectColor","defineProperty","configurable","delimiter","newDebug","toNamespace","regexp","toString","substring","stack","disable","names","skips","enable","charCodeAt","abs","g","tab","version","VERSION","_hasBuffer","Buffer","_TD","TextDecoder","_TE","b64chs","prototype","b64tab","b64re","_fromCC","fromCharCode","bind","_U8Afrom","it","_mkUriSafe","src","m0","_tidyB64","s","btoaPolyfill","bin","u32","c0","c1","c2","asc","pad","TypeError","_btoa","_fromUint8Array","u8a","strs","subarray","urlsafe","cb_utob","cc","re_utob","utob","u","_encode","encodeURI","re_btou","cb_btou","cccc","offset","btou","b","atobPolyfill","u24","r1","r2","_atob","_toUint8Array","a","toUint8Array","_unURI","_decode","_noEnum","writable","extendString","_add","extendUint8Array","gBase64","fromBase64","toBase64","isValid","extendBuiltins","k","Base64","factory","h","d","w","plural","msAbs","n","isPlural","round","exec","parseFloat","isFinite","long","fmtShort","global","_crypto","msCrypto","_subtle","webkitSubtle","_Crypto","Crypto","_SubtleCrypto","SubtleCrypto","isEdge","CryptoKey","Key","isIE","isWebkit","oid2str","str2oid","_fn","ka","kx","ku","arguments","b2jwk","jwkAlg","kty","isPrvKeyUse","isPubKeyUse","s2b","unescape","buffer","_key","generateKey","exportKey","publicKey","a2s","info","b2der","prv","rsaComp","rsaKey","s2a","b2s","pkcs2jwk","decrypt","rej","onabort","onerror","oncomplete","encrypt","usages","der2b","jwk2pkcs","byteLength","tl","tagLength","tag","AesGcmEncryptResult","ciphertext","t","_digest","ArrayBuffer","toUpperCase","SyntaxError","decodeURIComponent","escape","extractable","buf","ctx","pos","end","RangeError","rv","xlen","oid","use","defineProperties","define","amd","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","Function","prop","hasOwnProperty","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/changelog.md b/dist/changelog.md new file mode 100644 index 00000000..2b6ee854 --- /dev/null +++ b/dist/changelog.md @@ -0,0 +1,125 @@ +# Changelog + +## v2.5.4 +- Fixed double port issue preventing this library from working with NextJs - #186 +- The `includeResponse` now works for update requests with empty response - #162 +- Fixed some CVEs - #185 +- Upgraded most dev dependencies to their latest usable version +- Detect if the app is running without a secure context and throw an error to complain about it - #183 +- Custom headers are now propagated to sub-requests for resolving references - #184 + +## v2.5.3 +- [non-functional] Created bug and feature issue templates in #177 +- Added logic for using patientId & clientId URL parameters in calls to `smart.authorize` in #178 +- [non-functional] Made documentation changes fixing small typos and removing unnecessary text in `docs/open_servers.md` in #178 +- [non-functional] Added an .nvmrc file suggesting node v14.21.3, lts/fermium, in #178 + +## v2.5.2 +- Fix base64url encoding for PKCE #158 +- Simplified the code and removed IE support for new SMART V2 features like PKCE and asymmetric authentication. + +## v2.5.1 +- Changed the architecture to avoid build issues #156. Version `2.5.0` cannot be use for client-side builds (but works in NodeJS or if loaded as a bundle) and `v2.5.1` provides a fix for that. +- No other changes + +## v2.5.0 +- Added `PKCE` support +- Added support for asymmetric authentication +- Passing `onSuccess` and `onError` callbacks to `FHIR.oauth2.ready` (which was previously deprecated) is no longer supported +- IE10 is no longer supported +- Supports NodeJS versions 14 to 18 +- Update all dependencies and dev tools. Zero audit issues at the time of release. +- `.well-known/smart-configuration` is now the preferred source of metadata and `/metadata` is only fetched if smart-configuration is not found on the given server. +- Fixed an issue that might prevent users from setting custom http headers (#153) +- Added GitHub actions, e2e tests in headless browser and improved coverage reports + +## v2.4.0 +- Added `patch` method to the client +- Added `noRedirect` authorize option +- Some bug fixes: + - Empty body response after create operation but no location header #118, #124 + - Epic may return a full url #105 +- Small documentation and type definition changes and improvements + +## v2.3.11 +- `HttpError` instances (which are thrown when a request has failed) now have a `response` property that is a reference to the + Response object. This can be used to read response headers or inspect the response in some other way in case of error. +- Client requests should now always fail with `HttpError`. Previously they were sometimes being rejected with custom `Error` + objects which do not have the response or the status code information. +- All the request methods (except for the ones used for refreshing) can now accept new `includeResponse` boolean option. The affected methods are + `client.request`, `client.create`, `client.update`, `client.delete`, `client.patient.read`, `client.user.read`, `client.encounter.read` and `client.patient.request`. + [Read More](http://docs.smarthealthit.org/client-js/client.html) +- In case of EHR launch the `authorize` function can now be called with an array of options. This makes it possible to pre-configure an + app to be launch-able from multiple EHRs. The right configuration will be picked based on the passed `iss` url parameter using the new + `issMatch` option. [Read More](http://docs.smarthealthit.org/client-js/open_servers#2-using-multiple-launch-configurations) + +## v2.3.10 +- Fixed the way access token expiration is computed for non-jwt tokens (#101). +- Added a `body` property to the `HttpError` instances (#100). It will contain the parsed response body from failed requests which can be JSON (typically an `OperationOutcome` resource), a string or `null`. + +## v2.3.8 +- Changed the way the "auto-refresh" flow works. Before `2.3.8` the client was obtaining new access token if a request fails with `401`. Since `2.3.8`, the client will check the access token expiration time before making a request. This is done to avoid CORS-related issues with servers that do not emit CORS headers in case of error. +- The refresh token requests will now be sent without credentials. In the rare cases when the auth server requires the app to send cookies, developers will have to configure the client to do so. +- Added support for the `..` path operator in `client.getPath`, `client.getState` and the `resolveReferences` option of `client.request`. This was done to allow paths like `identifier..assigner`, which will match if identifier is an array of objects having an assigner reference property. + +## v2.3.5 +- The `completeInTarget` authorize option defaults to `true` if the app was loaded in an iframe +- The `redirectUri` option accepts absolute URLs and does not append "/" to them +- The `refresh` client method will now use basic authorization for confidential clients +- The `refresh` client method will now try to make its request both with and without credentials +- The `request` client method will now return the response object if the response status is 201 (can get the `location` header after create) +- Added the `getState` method of the `Client` for state introspections + +## v2.3.1 +- `client.create` and `client.update` are using `"Content-Type": "application/json"` header by default +- `client.create` and `client.update` alow custom `Content-Type` to be specified +- `node` and `hapi` type definitions are moved to peer dependencies to avoid build conflicts + +## v2.3.0 +- Added API documentation generated from source - http://docs.smarthealthit.org/client-js/typedoc/ +- Added ability to authorize in different window or frame - http://docs.smarthealthit.org/client-js/targets.html +- Fixed a Hapi.js issue with detecting the protocol of the request #69 + +## v2.2.0 +- Rewritten in TypeScript to improve readability and maintainability +- Fixed some build errors (#68) +- HapiJs users have new entry point `const smart = require("fhirclient/lib/entry/hapi")` +- Better code coverage +- Improved performance (#67) +- Added ability to [abort requests](http://docs.smarthealthit.org/client-js/client.html#aborting-requests) + +## v2.1.1 +- Switched to ES modules (thanks to @kherock) +- Updated type definitions to fix some issues with Angular projects +- other minor bug fixes + +## v2.1.0 +- Added convenience wrappers for the FHIR create/update/delete operations #56 +- Added patient context aware request wrapper #57 +- Fixed a refresh issue in Firefox #58 +- Improved fake token flow #59 +- Added `getFhirVersion` and `getFhirRelease` client methods +- Few other minor fixes and improvements + +## v2.0.7 +- See http://docs.smarthealthit.org/client-js/v2.html + +## v0.1.15 +- Included the last version of fhir.js + - For previous page, bundle.link.relation can either have 'previous' or 'prev' value + - Added getBundleByUrl api method + - Added support for `le` and `ge` search parameters + - Added support for `_include` and `_revinclude` +- Added a warning if the launch URL is not loaded properly + +## v0.1.14 +- Fixed the structure of the released package broken in `0.1.13`. Only the `dist` + folder is released now. + +## v0.1.13 +- The profile claim can be absolute URL +- Examples use existing server and patient ID +- Resolve all npm vulnerabilities by updating to the latest versions +- Switch -g to -t for varify to resolve build issues +- Update lib/jqFhir.js with the latest version from https://github.com/FHIR/fhir.js/tree/v0.0.21. +- Added the changelog file diff --git a/dist/fhir-client.js b/dist/fhir-client.js deleted file mode 100644 index cee912e1..00000000 --- a/dist/fhir-client.js +++ /dev/null @@ -1,17401 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { - authorization[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]); - } - } - - if (Object.keys(authorization).length > 0 && authorization.state){ - BBClient.authorization = authorization; - BBClient.state = JSON.parse(localStorage[BBClient.authorization.state]); - } else { - return; - } - - console.log(BBClient); - - // don't expose hash in the URL while in production mode - if (mustClearHash && BBClient.debug !== true) { - window.location.hash=""; - } - - var fhirClientParams = BBClient.fhirAuth = { - serviceUrl: BBClient.state.provider.bb_api.fhir_service_uri, - patientId: authorization.patient - }; - - if (BBClient.authorization.access_token !== undefined) { - fhirClientParams.auth = { - type: 'bearer', - token: BBClient.authorization.access_token - }; - } - process.nextTick(function(){ - var ret = FhirClient(fhirClientParams); - ret.state = JSON.parse(JSON.stringify(BBClient.state)); - callback && callback(ret); - }); -} - -function providers(fhirServiceUrl, callback){ - jQuery.get( - fhirServiceUrl+"/metadata", - function(r){ - var res = { - "name": "SMART on FHIR Testing Server", - "description": "Dev server for SMART on FHIR", - "url": null, - "oauth2": { - "registration_uri": null, - "authorize_uri": null, - "token_uri": null - }, - "bb_api":{ - "fhir_service_uri": fhirServiceUrl, - "search": fhirServiceUrl + "/DocumentReference" - } - }; - - try { - jQuery.each(r.rest[0].security.extension, function(responseNum, arg){ - if (arg.url === "http://fhir-registry.smartplatforms.org/Profile/oauth-uris#register") { - res.oauth2.registration_uri = arg.valueUri; - } else if (arg.url === "http://fhir-registry.smartplatforms.org/Profile/oauth-uris#authorize") { - res.oauth2.authorize_uri = arg.valueUri; - } else if (arg.url === "http://fhir-registry.smartplatforms.org/Profile/oauth-uris#token") { - res.oauth2.token_uri = arg.valueUri; - } - }); - } - catch (err) { - } - - callback && callback(res); - }, - "json" - ); -}; - -BBClient.noAuthFhirProvider = function(serviceUrl){ - return { - "oauth2": null, - "bb_api":{ - "fhir_service_uri": serviceUrl - } - } -}; - -function relative(url){ - return (window.location.protocol + "//" + window.location.host + window.location.pathname).match(/(.*\/)[^\/]*/)[1] + url; -} - -function getParameterByName(name) { - name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); - var regexS = "[\\?&]" + name + "=([^&#]*)"; - var regex = new RegExp(regexS); - var results = regex.exec(window.location.search); - if(results == null) - return ""; - else - return decodeURIComponent(results[1].replace(/\+/g, " ")); -} - -BBClient.authorize = function(params){ - - if (!params.client){ - params = { - client: params - }; - } - - if (!params.client.redirect_uri){ - params.client.redirect_uri = relative(""); - } - - if (!params.client.redirect_uri.match(/:\/\//)){ - params.client.redirect_uri = relative(params.client.redirect_uri); - } - - var launch = getParameterByName("launch"); - if (launch){ - if (!params.client.scope.match(/launch:/)){ - params.client.scope += " launch:"+launch; - } - } - - var server = getParameterByName("iss"); - if (server){ - if (!params.server){ - params.server = server; - } - } - - providers(params.server, function(provider){ - - params.provider = provider; - - var state = Guid.newGuid(); - var client = params.client; - - if (params.provider.oauth2 == null) { - localStorage[state] = JSON.stringify(params); - window.location.href = client.redirect_uri + "#state="+state; - return; - } - - localStorage[state] = JSON.stringify(params); - - console.log("sending client reg", params.client); - - var redirect_to=params.provider.oauth2.authorize_uri + "?" + - "client_id="+client.client_id+"&"+ - "response_type=token&"+ - "scope="+client.scope+"&"+ - "redirect_uri="+client.redirect_uri+"&"+ - "state="+state; - - window.location.href = redirect_to; - }); -}; - - - -}).call(this,require("FWaASH")) -},{"./client":3,"./guid":5,"./jquery":6,"FWaASH":16}],2:[function(require,module,exports){ -var c = require('../vendor/conformance.json'); -var definitions = {}; -var camelCased = function(s){ - return s.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); -}; - -c.rest[0].resource.forEach(function(r){ - var params = []; - definitions[r.type] = { - params: params - }; - - r.searchParam.forEach(function(sp){ - params.push({ - name: camelCased(sp.name), - wireName: sp.name, - type: sp.type - }); - }); -}); - -module.exports = definitions; - -},{"../vendor/conformance.json":21}],3:[function(require,module,exports){ -var btoa = require('btoa'); -var Search = require('./search'); -var $ = jQuery = require('./jquery'); - -module.exports = FhirClient; - -function absolute(id, server) { - if (id.match(/^http/)) return id; - if (id.match(/^urn/)) return id; - return server.serviceUrl + '/' + id; -} - -var regexpSpecialChars = /([\[\]\^\$\|\(\)\\\+\*\?\{\}\=\!])/gi; - -function relative(id, server) { - if (!id.match(/^http/)) { - id = server.serviceUrl + '/' + id - } - var quotedBase = ( server.serviceUrl + '/' ).replace(regexpSpecialChars, '\\$1'); - var matcher = new RegExp("^"+quotedBase + "([^/]+)/([^/]+)(?:/_history/(.*))?$"); - var match = id.match(matcher); - if (match === null) { - throw "Couldn't determine a relative URI for " + id; - } - - var params = { - resource: match[1], - id: match[2], - version: match[3] - }; - - return params; -} - -function ClientPrototype(){}; -var clientUtils = require('./utils'); -Object.keys(clientUtils).forEach(function(k){ - ClientPrototype.prototype[k] = clientUtils[k]; -}); - -function FhirClient(p) { - // p.serviceUrl - // p.auth { - // type: 'none' | 'basic' | 'bearer' - // basic --> username, password - // bearer --> token - // } - - var cache = {}; - var client = new ClientPrototype(); - - var server = client.server = { - serviceUrl: p.serviceUrl, - auth: p.auth - } - - client.patientId = p.patientId; - client.practitionerId = p.practitionerId; - - client.cache = { - get: function(p) { - var url = absolute(typeof p === 'string' ? p : (p.resource + '/'+p.id), server); - if (url in cache) { - return getLocal(url); - } - return null; - } - }; - - - server.auth = server.auth || { - type: 'none' - }; - - if (!client.server.serviceUrl || !client.server.serviceUrl.match(/https?:\/\/.+[^\/]$/)) { - throw "Must supply a `server` propery whose `serviceUrl` begins with http(s) " + - "and does NOT include a trailing slash. E.g. `https://fhir.aws.af.cm/fhir`"; - } - - client.indexResource = function(id, r) { - r.resourceId = relative(id, server); - var ret = [r]; - cache[absolute(id, server)] = r; - return ret; - }; - - client.indexFeed = function(atomResult) { - var ret = []; - var feed = atomResult.feed || atomResult; - (feed.entry || []).forEach(function(e){ - var more = client.indexResource(e.id, e.content); - [].push.apply(ret, more); - }); - return ret; - }; - - client.authenticated = function(p) { - if (server.auth.type === 'none') { - return p; - } - - var h; - if (server.auth.type === 'basic') { - h = "Basic " + btoa(server.auth.username + ":" + server.auth.password); - } else if (server.auth.type === 'bearer') { - h = "Bearer " + server.auth.token; - } - if (!p.headers) {p.headers = {};} - p.headers['Authorization'] = h - //p.beforeSend = function (xhr) { xhr.setRequestHeader ("Authorization", h); } - - return p; - }; - - function handleReference(p){ - return function(from, to) { - - // Resolve any of the following: - // 1. contained resource - // 2. already-fetched resource - // 3. not-yet-fetched resource - - if (to.reference === undefined) { - throw "Can't follow a non-reference: " + to; - } - - if (to.reference.match(/^#/)) { - return p.contained(from, to.reference.slice(1)); - } - - var url = absolute(to.reference, server); - if (url in cache) { - return p.local(url); - } - - if (!p.remote) { - throw "Can't look up unfetched resource " + url; - } - - return p.remote(url); - } - }; - - client.cachedLink = handleReference({ - contained: getContained, - local: getLocal - }); - - client.followLink = handleReference({ - contained: followContained, - local: followLocal, - remote: followRemote - }); - - function getContained(from, id) { - var matches = from.contained.filter(function(c){ - return c.id === id; - }); - if (matches.length !== 1) { - return null; - } - return matches[0]; - } - - function getLocal(url) { - return cache[url]; - } - - function followContained(from, id) { - var ret = new $.Deferred(); - var val = getContained(from, id); - setTimeout(function(){ - if (val === null) { - return ret.reject("No contained resource matches #"+id); - } - return ret.resolve(val); - }, 0); - return ret; - }; - - function followLocal(url) { - var ret = new $.Deferred(); - var val = getLocal(url); - setTimeout(function(){ - if (val === null) { - return ret.reject("No local resource matches #"+id); - } - return ret.resolve(val); - }, 0); - return ret; - }; - - function followRemote(url) { - var getParams = relative(url, server); - return client.get(getParams); - }; - - client.get = function(p) { - // p.resource, p.id, ?p.version, p.include - - var ret = new $.Deferred(); - var url = server.serviceUrl + '/' + p.resource + '/' + p.id; - - $.ajax(client.authenticated({ - type: 'GET', - url: url, - dataType: 'json' - })) - .done(function(data, status){ - var ids = client.indexResource(url, data); - if (ids.length !== 1) { - ret.reject("Didn't get exactly one result for " + url); - } - ret.resolve(ids[0]); - }) - .fail(function(){ - ret.reject("Could not fetch " + url, arguments); - }); - return ret; - }; - - client.urlFor = function(searchSpec){ - return client.server.serviceUrl+searchSpec.queryUrl(); - } - - client.search = function(searchSpec){ - // p.resource, p.count, p.searchTerms - var s = Search({ - client: client, - spec: searchSpec - }); - - return s.execute(); - } - - client.drain = function(searchSpec, batch){ - var d = $.Deferred(); - - if (batch === undefined){ - var db = []; - batch = function(vs) { - vs.forEach(function(v){ - db.push(v); - }); - } - } - - db = db || {}; - client.search(searchSpec) - .done(function drain(vs, cursor){ - batch(vs); - if (cursor.hasNext()){ - cursor.next().done(drain); - } else { - d.resolve(); - } - }); - return d.promise(); - }; - - var specs = require('./search-specification')({ - "search": client, - "drain": client - }); - - function patientPropertyName(searchSpec){ - var propertyName = null; - ['patient', 'subject'].forEach(function(pname){ - if (typeof searchSpec[pname] === 'function'){ - propertyName = pname; - } - }); - return propertyName; - } - - function withDefaultPatient(searchSpec){ - var propertyName = patientPropertyName(searchSpec); - if (propertyName !== null && client.patientId !== undefined){ - searchSpec = searchSpec[propertyName](specs.Patient._id(client.patientId)); - } else if (searchSpec.resourceName === 'Patient'){ - searchSpec = searchSpec._id(client.patientId); - } else { - searchSpec = null; - } - - return searchSpec; - } - - function getterFor(r){ - return function(id){ - - if (r.resourceName === 'Patient' && id === undefined){ - id = client.patientId - } - - return client.get({ - resource: r.resourceName, - id: id - }); - } - }; - - function writeTodo(){ - throw "Write functionality not implemented."; - }; - - client.context = {}; - - client.context.practitioner = { - 'read': function(){ - return client.api.Practitioner.read(client.practitionerId); - } - }; - - client.context.patient = { - 'read': function(){ - return client.api.Patient.read(client.practitionerId); - } - }; - - client.api = {}; - - // Create SearchSpec-specific handlers - // as properties on some target object - // e.g. target.Alert, target.Condition, etc. - function decorateWithApi(target, tweaks){ - - tweaks = tweaks || {filter:function(){return true;}}; - - Object.keys(specs).forEach(function(r){ - - if (!tweaks.filter(specs[r])){ - return; - } - - target[r] = { - read: getterFor(specs[r]), - post: writeTodo, - put: writeTodo, - delete: writeTodo, - drain: function(){ - return target[r].where.drain(); - }, - search: function(){ - return target[r].where.search(); - }, - where: specs[r] - }; - - if (tweaks.where){ - target[r].where = tweaks.where(target[r].where); - } - - }); - } - - decorateWithApi(client.api); - decorateWithApi(client.context.patient, { - filter: withDefaultPatient, - where: withDefaultPatient - }); - - return client; -} - -},{"./jquery":6,"./search":9,"./search-specification":8,"./utils":10,"btoa":19}],4:[function(require,module,exports){ -window.FHIR = { - client: require('./client'), - query: require('./search-specification.js')(), - jQuery: require('./jquery'), - oauth2: require('./bb-client') -}; - -},{"./bb-client":1,"./client":3,"./jquery":6,"./search-specification.js":8}],5:[function(require,module,exports){ -var EMPTY = '00000000-0000-0000-0000-000000000000'; - -var _padLeft = function (paddingString, width, replacementChar) { - return paddingString.length >= width ? paddingString : _padLeft(replacementChar + paddingString, width, replacementChar || ' '); -}; - -var _s4 = function (number) { - var hexadecimalResult = number.toString(16); - return _padLeft(hexadecimalResult, 4, '0'); -}; - -var _cryptoGuid = function () { - var buffer = new window.Uint16Array(8); - window.crypto.getRandomValues(buffer); - return [_s4(buffer[0]) + _s4(buffer[1]), _s4(buffer[2]), _s4(buffer[3]), _s4(buffer[4]), _s4(buffer[5]) + _s4(buffer[6]) + _s4(buffer[7])].join('-'); -}; - -var _guid = function () { - var currentDateMilliseconds = new Date().getTime(); - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (currentChar) { - var randomChar = (currentDateMilliseconds + Math.random() * 16) % 16 | 0; - currentDateMilliseconds = Math.floor(currentDateMilliseconds / 16); - return (currentChar === 'x' ? randomChar : (randomChar & 0x7 | 0x8)).toString(16); - }); -}; - -var create = function () { - var hasCrypto = typeof (window.crypto) != 'undefined', - hasRandomValues = hasCrypto && typeof (window.crypto.getRandomValues) != 'undefined'; - return (hasCrypto && hasRandomValues) ? _cryptoGuid() : _guid(); -}; - -module.exports = { - newGuid: create, - empty: EMPTY -}; - -},{}],6:[function(require,module,exports){ -(function (process){ -var $ = require('jquery'); - -if (process.browser) { - module.exports = $; -} else { - var window = require('jsdom').jsdom().createWindow(); - module.exports = $(window); -} - -}).call(this,require("FWaASH")) -},{"FWaASH":16,"jquery":20,"jsdom":11}],7:[function(require,module,exports){ -module.exports = { - any: 'special::any_namsace', - none: 'special::no_namespace', - loinc: 'http://loinc.org', - ucum: 'http://unitsofmeasure.org', - snomed: 'http://snomed.info/sct', - rxnorm: 'http://rxnav.nlm.nih.gov/REST/rxcui' -} - -},{}],8:[function(require,module,exports){ -module.exports = function(mixins) { - mixins = mixins || {}; - - var specs = {}; - var util = require('util'); - var namespace = require('./namespace'); - var definitions = require('./build-definitions'); - - function defineSearchParam(resourceSpec, searchParam) { - Object.keys(searchParam.handlers).forEach(function(handlerName){ - - resourceSpec.prototype[handlerName] = function(){ - - var clause = searchParam.handlers[handlerName].apply( - searchParam, arguments - ); - return this.__addClause(clause); - - } - }); - } - - - function SearchSpecification(clauses){ - - if (clauses === undefined) { - clauses = []; - } - - this.resourceName = this.constructor.resourceName; - - this.__addClause = function(c){ - var newClauses = JSON.parse(JSON.stringify(clauses)); - if (!util.isArray(c)){ - c = [c]; - } - - [].push.apply(newClauses, c); - return new (this.constructor)(newClauses); - } - - this.__getClauses = function(){ - return clauses; - } - - this.__printClauses = function(){ - console.log(clauses); - } - - this.queryUrl = function(){ - return '/'+this.resourceName+'/_search'; - }; - - this.queryParams = function(){ - var clauses = this.__getClauses(); - var params = {}; - clauses.forEach(function(c){ - params[c.name] = params[c.name] || []; - if (c.oneOf !== undefined) { - var joined = c.oneOf.join(','); - params[c.name].push(joined); - } else { - params[c.name].push(c.value); - } - }); - return params; - } - - } - - defineSearchParam(SearchSpecification, new ReferenceSearchParam('_id')); - defineSearchParam(SearchSpecification, new SearchParam('_count', '_count', true)); - defineSearchParam(SearchSpecification, new SearchParam('_sortAsc', '_sort:asc', true)); - defineSearchParam(SearchSpecification, new SearchParam('_sortDesc', '_sort:desc', true)); - defineSearchParam(SearchSpecification, new SearchParam('_include', '_include', true)); - - - function SearchParam(name, wireName, onlyOneHandler){ - this.name = name; - this.wireName = wireName || name; - this.handlers = { }; - var that = this; - - this.handlers[name] = function(value){ - - if (util.isArray(value) || arguments.length > 1){ - throw "only expected one argument to " + name; - } - - return { - name: this.wireName, - value: value - }; - }; - - if (onlyOneHandler) { - return; - } - - var singleArgHandler = this.handlers[name]; - - this.handlers[name+'All'] = function(){ - var values = flatten(arguments); - return values.map(function(v){ - return { - name: this.wireName, - value: v - } - }, this); - }; - - this.handlers[name+'In'] = function(){ - var values = flatten(arguments); - return { - name: this.wireName, - oneOf: values - }; - }; - - this.handlers[name+'Missing'] = function(value){ - return { - name: this.wireName+':missing', - value: value === 'false' ? false : Boolean(value) - }; - }; - - function flatten(args){ - var values = []; - Array.prototype.slice.call(args, 0).forEach(function(arg){ - if (!util.isArray(arg)){ - arg = [arg]; - } - arg.forEach(function(arg){ - values.push(singleArgHandler.call(that, arg).value); - }); - }); - return values; - } - - } - - function ReferenceSearchParam(name){ - SearchParam.apply(this, arguments); - - this.handlers[name] = function(subSpec){ - var clauseName = this.wireName + ':' + subSpec.constructor.resourceName; - - if (typeof subSpec === 'string'){ - return { - name: this.wireName, - value: subSpec - }; - } - var clauses = subSpec.__getClauses(); - - var ret = clauses.map(function(clause){ - - var oneClause = { - name: clauseName + '.' + clause.name - }; - - if (clause.value) oneClause.value = clause.value; - if (clause.oneOf) oneClause.oneOf = clause.oneOf; - - if (clause.name == '_id') { - oneClause = { - name: clauseName, - value: clause.value - } - } - return oneClause - }); - - return ret; - }; - - }; - - ReferenceSearchParam.prototype = new SearchParam(); - ReferenceSearchParam.prototype.constructor = ReferenceSearchParam; - - function StringSearchParam(name){ - SearchParam.apply(this, arguments); - - this.handlers[name+'Exact'] = function(value){ - return { - name: this.wireName+':exact', - value: value - }; - }; - - }; - StringSearchParam.prototype = new SearchParam(); - StringSearchParam.prototype.constructor = StringSearchParam; - - function TokenSearchParam(name){ - SearchParam.apply(this, arguments); - - this.handlers[name] = function(ns, value){ - - var ret = { - name: this.wireName, - value: ns + '|'+ value - } - - if (value === undefined) { - ret.value = ns; - } - - if (ns === namespace.any) { - ret.value = value; - } - - if (ns === namespace.none) { - ret.value = '|'+value; - } - - return ret; - - }; - - this.handlers[name+'Text'] = function(value){ - return { - name: this.wireName, - value: value - }; - }; - - - - } - TokenSearchParam.prototype = new SearchParam(); - TokenSearchParam.prototype.constructor = TokenSearchParam; - - function DateSearchParam(name){ - SearchParam.apply(this, arguments); - } - DateSearchParam.prototype = new SearchParam(); - DateSearchParam.prototype.constructor = DateSearchParam; - - function NumberSearchParam(name){ - SearchParam.apply(this, arguments); - } - NumberSearchParam(); - NumberSearchParam.prototype.constructor = NumberSearchParam; - - function QuantitySearchParam(name){ - SearchParam.apply(this, arguments); - } - QuantitySearchParam.prototype = new SearchParam(); - QuantitySearchParam.prototype.constructor = QuantitySearchParam; - - function CompositeSearchParam(name){ - SearchParam.apply(this, arguments); - } - CompositeSearchParam.prototype = new SearchParam(); - CompositeSearchParam.prototype.constructor = CompositeSearchParam; - - - var paramTypes = { - string: StringSearchParam, - reference: ReferenceSearchParam, - token: TokenSearchParam, - number: NumberSearchParam, - quantity: QuantitySearchParam, - date: DateSearchParam, - composite: CompositeSearchParam - } - - Object.keys(definitions).forEach(function(tname){ - var params = definitions[tname].params; - - // Create a subclass of 'SearchSpecification' - // to track search parameters for each resource - // e.g. Patient knows about given name, family name, etc. - var resourceSpec = function(){ - SearchSpecification.apply(this, arguments); - }; - - resourceSpec.prototype = new SearchSpecification(); - resourceSpec.prototype.constructor = resourceSpec; - resourceSpec.resourceName = tname; - - params.forEach(function(p){ - defineSearchParam(resourceSpec, new paramTypes[p.type](p.name, p.wireName)); - }); - - specs[tname] = new resourceSpec(); - - }); - - - Object.keys(mixins).forEach(function(m){ - SearchSpecification.prototype[m] = function(){ - var args = Array.prototype.slice.call(arguments, 0); - args.unshift(this); - return mixins[m][m].apply(mixins[m], args); - }; - }); - - - return specs; - -}; - -},{"./build-definitions":2,"./namespace":7,"util":18}],9:[function(require,module,exports){ -module.exports = Search; -var $ = jQuery = require('./jquery'); - -function Search(p) { - - var search = {}; - - search.client = p.client; - search.spec = p.spec; - search.count = p.count || 50; - - var nextPageUrl = null; - - function gotFeed(d){ - return function(data, status) { - - nextPageUrl = null; - var feed = data.feed || data; - - if(feed.link) { - var next = feed.link.filter(function(l){ - return l.rel === "next"; - }); - if (next.length === 1) { - nextPageUrl = next[0].href - } - } - - var results = search.client.indexFeed(data); - d.resolve(results, search); - } - }; - - function failedFeed(d){ - return function(failure){ - d.reject("Search failed.", arguments); - } - }; - - search.hasNext = function(){ - return nextPageUrl !== null; - }; - - search.next = function() { - - if (nextPageUrl === null) { - throw "Next page of search not available!"; - } - - var searchParams = { - type: 'GET', - url: nextPageUrl, - dataType: 'json', - traditional: true - }; - - var ret = new $.Deferred(); - console.log("Nexting", searchParams); - $.ajax(search.client.authenticated(searchParams)) - .done(gotFeed(ret)) - .fail(failedFeed(ret)); - - return ret; - }; - - search.execute = function() { - - - var searchParams = { - type: 'GET', - url: search.client.urlFor(search.spec), - data: search.spec.queryParams(), - dataType: "json", - traditional: true - }; - - var ret = new $.Deferred(); - - $.ajax(search.client.authenticated(searchParams)) - .done(gotFeed(ret)) - .fail(failedFeed(ret)); - - return ret; - }; - - return search; -} - - -},{"./jquery":6}],10:[function(require,module,exports){ -var utils = module.exports = {}; - -utils.byCodes = function(observations, property){ - - var bank = utils.byCode(observations, property); - function byCodes(){ - var ret = []; - for (var i=0; i - * @license MIT - */ - -var base64 = require('base64-js') -var ieee754 = require('ieee754') - -exports.Buffer = Buffer -exports.SlowBuffer = Buffer -exports.INSPECT_MAX_BYTES = 50 -Buffer.poolSize = 8192 - -/** - * If `Buffer._useTypedArrays`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (compatible down to IE6) - */ -Buffer._useTypedArrays = (function () { - // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+, - // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding - // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support - // because we need to be able to add all the node Buffer API methods. This is an issue - // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438 - try { - var buf = new ArrayBuffer(0) - var arr = new Uint8Array(buf) - arr.foo = function () { return 42 } - return 42 === arr.foo() && - typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray` - } catch (e) { - return false - } -})() - -/** - * Class: Buffer - * ============= - * - * The Buffer constructor returns instances of `Uint8Array` that are augmented - * with function properties for all the node `Buffer` API functions. We use - * `Uint8Array` so that square bracket notation works as expected -- it returns - * a single octet. - * - * By augmenting the instances, we can avoid modifying the `Uint8Array` - * prototype. - */ -function Buffer (subject, encoding, noZero) { - if (!(this instanceof Buffer)) - return new Buffer(subject, encoding, noZero) - - var type = typeof subject - - // Workaround: node's base64 implementation allows for non-padded strings - // while base64-js does not. - if (encoding === 'base64' && type === 'string') { - subject = stringtrim(subject) - while (subject.length % 4 !== 0) { - subject = subject + '=' - } - } - - // Find the length - var length - if (type === 'number') - length = coerce(subject) - else if (type === 'string') - length = Buffer.byteLength(subject, encoding) - else if (type === 'object') - length = coerce(subject.length) // assume that object is array-like - else - throw new Error('First argument needs to be a number, array or string.') - - var buf - if (Buffer._useTypedArrays) { - // Preferred: Return an augmented `Uint8Array` instance for best performance - buf = Buffer._augment(new Uint8Array(length)) - } else { - // Fallback: Return THIS instance of Buffer (created by `new`) - buf = this - buf.length = length - buf._isBuffer = true - } - - var i - if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') { - // Speed optimization -- use set if we're copying from a typed array - buf._set(subject) - } else if (isArrayish(subject)) { - // Treat array-ish objects as a byte array - for (i = 0; i < length; i++) { - if (Buffer.isBuffer(subject)) - buf[i] = subject.readUInt8(i) - else - buf[i] = subject[i] - } - } else if (type === 'string') { - buf.write(subject, 0, encoding) - } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) { - for (i = 0; i < length; i++) { - buf[i] = 0 - } - } - - return buf -} - -// STATIC METHODS -// ============== - -Buffer.isEncoding = function (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'binary': - case 'base64': - case 'raw': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.isBuffer = function (b) { - return !!(b !== null && b !== undefined && b._isBuffer) -} - -Buffer.byteLength = function (str, encoding) { - var ret - str = str + '' - switch (encoding || 'utf8') { - case 'hex': - ret = str.length / 2 - break - case 'utf8': - case 'utf-8': - ret = utf8ToBytes(str).length - break - case 'ascii': - case 'binary': - case 'raw': - ret = str.length - break - case 'base64': - ret = base64ToBytes(str).length - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = str.length * 2 - break - default: - throw new Error('Unknown encoding') - } - return ret -} - -Buffer.concat = function (list, totalLength) { - assert(isArray(list), 'Usage: Buffer.concat(list, [totalLength])\n' + - 'list should be an Array.') - - if (list.length === 0) { - return new Buffer(0) - } else if (list.length === 1) { - return list[0] - } - - var i - if (typeof totalLength !== 'number') { - totalLength = 0 - for (i = 0; i < list.length; i++) { - totalLength += list[i].length - } - } - - var buf = new Buffer(totalLength) - var pos = 0 - for (i = 0; i < list.length; i++) { - var item = list[i] - item.copy(buf, pos) - pos += item.length - } - return buf -} - -// BUFFER INSTANCE METHODS -// ======================= - -function _hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - // must be an even number of digits - var strLen = string.length - assert(strLen % 2 === 0, 'Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; i++) { - var byte = parseInt(string.substr(i * 2, 2), 16) - assert(!isNaN(byte), 'Invalid hex string') - buf[offset + i] = byte - } - Buffer._charsWritten = i * 2 - return i -} - -function _utf8Write (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(utf8ToBytes(string), buf, offset, length) - return charsWritten -} - -function _asciiWrite (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(asciiToBytes(string), buf, offset, length) - return charsWritten -} - -function _binaryWrite (buf, string, offset, length) { - return _asciiWrite(buf, string, offset, length) -} - -function _base64Write (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(base64ToBytes(string), buf, offset, length) - return charsWritten -} - -function _utf16leWrite (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(utf16leToBytes(string), buf, offset, length) - return charsWritten -} - -Buffer.prototype.write = function (string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length - length = undefined - } - } else { // legacy - var swap = encoding - encoding = offset - offset = length - length = swap - } - - offset = Number(offset) || 0 - var remaining = this.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - encoding = String(encoding || 'utf8').toLowerCase() - - var ret - switch (encoding) { - case 'hex': - ret = _hexWrite(this, string, offset, length) - break - case 'utf8': - case 'utf-8': - ret = _utf8Write(this, string, offset, length) - break - case 'ascii': - ret = _asciiWrite(this, string, offset, length) - break - case 'binary': - ret = _binaryWrite(this, string, offset, length) - break - case 'base64': - ret = _base64Write(this, string, offset, length) - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = _utf16leWrite(this, string, offset, length) - break - default: - throw new Error('Unknown encoding') - } - return ret -} - -Buffer.prototype.toString = function (encoding, start, end) { - var self = this - - encoding = String(encoding || 'utf8').toLowerCase() - start = Number(start) || 0 - end = (end !== undefined) - ? Number(end) - : end = self.length - - // Fastpath empty strings - if (end === start) - return '' - - var ret - switch (encoding) { - case 'hex': - ret = _hexSlice(self, start, end) - break - case 'utf8': - case 'utf-8': - ret = _utf8Slice(self, start, end) - break - case 'ascii': - ret = _asciiSlice(self, start, end) - break - case 'binary': - ret = _binarySlice(self, start, end) - break - case 'base64': - ret = _base64Slice(self, start, end) - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = _utf16leSlice(self, start, end) - break - default: - throw new Error('Unknown encoding') - } - return ret -} - -Buffer.prototype.toJSON = function () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function (target, target_start, start, end) { - var source = this - - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (!target_start) target_start = 0 - - // Copy 0 bytes; we're done - if (end === start) return - if (target.length === 0 || source.length === 0) return - - // Fatal error conditions - assert(end >= start, 'sourceEnd < sourceStart') - assert(target_start >= 0 && target_start < target.length, - 'targetStart out of bounds') - assert(start >= 0 && start < source.length, 'sourceStart out of bounds') - assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) - end = this.length - if (target.length - target_start < end - start) - end = target.length - target_start + start - - var len = end - start - - if (len < 100 || !Buffer._useTypedArrays) { - for (var i = 0; i < len; i++) - target[i + target_start] = this[i + start] - } else { - target._set(this.subarray(start, start + len), target_start) - } -} - -function _base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function _utf8Slice (buf, start, end) { - var res = '' - var tmp = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - if (buf[i] <= 0x7F) { - res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) - tmp = '' - } else { - tmp += '%' + buf[i].toString(16) - } - } - - return res + decodeUtf8Char(tmp) -} - -function _asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) - ret += String.fromCharCode(buf[i]) - return ret -} - -function _binarySlice (buf, start, end) { - return _asciiSlice(buf, start, end) -} - -function _hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; i++) { - out += toHex(buf[i]) - } - return out -} - -function _utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i+1] * 256) - } - return res -} - -Buffer.prototype.slice = function (start, end) { - var len = this.length - start = clamp(start, len, 0) - end = clamp(end, len, len) - - if (Buffer._useTypedArrays) { - return Buffer._augment(this.subarray(start, end)) - } else { - var sliceLen = end - start - var newBuf = new Buffer(sliceLen, undefined, true) - for (var i = 0; i < sliceLen; i++) { - newBuf[i] = this[i + start] - } - return newBuf - } -} - -// `get` will be removed in Node 0.13+ -Buffer.prototype.get = function (offset) { - console.log('.get() is deprecated. Access using array indexes instead.') - return this.readUInt8(offset) -} - -// `set` will be removed in Node 0.13+ -Buffer.prototype.set = function (v, offset) { - console.log('.set() is deprecated. Access using array indexes instead.') - return this.writeUInt8(v, offset) -} - -Buffer.prototype.readUInt8 = function (offset, noAssert) { - if (!noAssert) { - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'Trying to read beyond buffer length') - } - - if (offset >= this.length) - return - - return this[offset] -} - -function _readUInt16 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') - } - - var len = buf.length - if (offset >= len) - return - - var val - if (littleEndian) { - val = buf[offset] - if (offset + 1 < len) - val |= buf[offset + 1] << 8 - } else { - val = buf[offset] << 8 - if (offset + 1 < len) - val |= buf[offset + 1] - } - return val -} - -Buffer.prototype.readUInt16LE = function (offset, noAssert) { - return _readUInt16(this, offset, true, noAssert) -} - -Buffer.prototype.readUInt16BE = function (offset, noAssert) { - return _readUInt16(this, offset, false, noAssert) -} - -function _readUInt32 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } - - var len = buf.length - if (offset >= len) - return - - var val - if (littleEndian) { - if (offset + 2 < len) - val = buf[offset + 2] << 16 - if (offset + 1 < len) - val |= buf[offset + 1] << 8 - val |= buf[offset] - if (offset + 3 < len) - val = val + (buf[offset + 3] << 24 >>> 0) - } else { - if (offset + 1 < len) - val = buf[offset + 1] << 16 - if (offset + 2 < len) - val |= buf[offset + 2] << 8 - if (offset + 3 < len) - val |= buf[offset + 3] - val = val + (buf[offset] << 24 >>> 0) - } - return val -} - -Buffer.prototype.readUInt32LE = function (offset, noAssert) { - return _readUInt32(this, offset, true, noAssert) -} - -Buffer.prototype.readUInt32BE = function (offset, noAssert) { - return _readUInt32(this, offset, false, noAssert) -} - -Buffer.prototype.readInt8 = function (offset, noAssert) { - if (!noAssert) { - assert(offset !== undefined && offset !== null, - 'missing offset') - assert(offset < this.length, 'Trying to read beyond buffer length') - } - - if (offset >= this.length) - return - - var neg = this[offset] & 0x80 - if (neg) - return (0xff - this[offset] + 1) * -1 - else - return this[offset] -} - -function _readInt16 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') - } - - var len = buf.length - if (offset >= len) - return - - var val = _readUInt16(buf, offset, littleEndian, true) - var neg = val & 0x8000 - if (neg) - return (0xffff - val + 1) * -1 - else - return val -} - -Buffer.prototype.readInt16LE = function (offset, noAssert) { - return _readInt16(this, offset, true, noAssert) -} - -Buffer.prototype.readInt16BE = function (offset, noAssert) { - return _readInt16(this, offset, false, noAssert) -} - -function _readInt32 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } - - var len = buf.length - if (offset >= len) - return - - var val = _readUInt32(buf, offset, littleEndian, true) - var neg = val & 0x80000000 - if (neg) - return (0xffffffff - val + 1) * -1 - else - return val -} - -Buffer.prototype.readInt32LE = function (offset, noAssert) { - return _readInt32(this, offset, true, noAssert) -} - -Buffer.prototype.readInt32BE = function (offset, noAssert) { - return _readInt32(this, offset, false, noAssert) -} - -function _readFloat (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } - - return ieee754.read(buf, offset, littleEndian, 23, 4) -} - -Buffer.prototype.readFloatLE = function (offset, noAssert) { - return _readFloat(this, offset, true, noAssert) -} - -Buffer.prototype.readFloatBE = function (offset, noAssert) { - return _readFloat(this, offset, false, noAssert) -} - -function _readDouble (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset + 7 < buf.length, 'Trying to read beyond buffer length') - } - - return ieee754.read(buf, offset, littleEndian, 52, 8) -} - -Buffer.prototype.readDoubleLE = function (offset, noAssert) { - return _readDouble(this, offset, true, noAssert) -} - -Buffer.prototype.readDoubleBE = function (offset, noAssert) { - return _readDouble(this, offset, false, noAssert) -} - -Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'trying to write beyond buffer length') - verifuint(value, 0xff) - } - - if (offset >= this.length) return - - this[offset] = value -} - -function _writeUInt16 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'trying to write beyond buffer length') - verifuint(value, 0xffff) - } - - var len = buf.length - if (offset >= len) - return - - for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) { - buf[offset + i] = - (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { - _writeUInt16(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { - _writeUInt16(this, value, offset, false, noAssert) -} - -function _writeUInt32 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'trying to write beyond buffer length') - verifuint(value, 0xffffffff) - } - - var len = buf.length - if (offset >= len) - return - - for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) { - buf[offset + i] = - (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { - _writeUInt32(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { - _writeUInt32(this, value, offset, false, noAssert) -} - -Buffer.prototype.writeInt8 = function (value, offset, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7f, -0x80) - } - - if (offset >= this.length) - return - - if (value >= 0) - this.writeUInt8(value, offset, noAssert) - else - this.writeUInt8(0xff + value + 1, offset, noAssert) -} - -function _writeInt16 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7fff, -0x8000) - } - - var len = buf.length - if (offset >= len) - return - - if (value >= 0) - _writeUInt16(buf, value, offset, littleEndian, noAssert) - else - _writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert) -} - -Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { - _writeInt16(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { - _writeInt16(this, value, offset, false, noAssert) -} - -function _writeInt32 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7fffffff, -0x80000000) - } - - var len = buf.length - if (offset >= len) - return - - if (value >= 0) - _writeUInt32(buf, value, offset, littleEndian, noAssert) - else - _writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert) -} - -Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { - _writeInt32(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { - _writeInt32(this, value, offset, false, noAssert) -} - -function _writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') - verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - - var len = buf.length - if (offset >= len) - return - - ieee754.write(buf, value, offset, littleEndian, 23, 4) -} - -Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { - _writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { - _writeFloat(this, value, offset, false, noAssert) -} - -function _writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 7 < buf.length, - 'Trying to write beyond buffer length') - verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - - var len = buf.length - if (offset >= len) - return - - ieee754.write(buf, value, offset, littleEndian, 52, 8) -} - -Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { - _writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { - _writeDouble(this, value, offset, false, noAssert) -} - -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function (value, start, end) { - if (!value) value = 0 - if (!start) start = 0 - if (!end) end = this.length - - if (typeof value === 'string') { - value = value.charCodeAt(0) - } - - assert(typeof value === 'number' && !isNaN(value), 'value is not a number') - assert(end >= start, 'end < start') - - // Fill 0 bytes; we're done - if (end === start) return - if (this.length === 0) return - - assert(start >= 0 && start < this.length, 'start out of bounds') - assert(end >= 0 && end <= this.length, 'end out of bounds') - - for (var i = start; i < end; i++) { - this[i] = value - } -} - -Buffer.prototype.inspect = function () { - var out = [] - var len = this.length - for (var i = 0; i < len; i++) { - out[i] = toHex(this[i]) - if (i === exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...' - break - } - } - return '' -} - -/** - * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. - * Added in Node 0.12. Only available in browsers that support ArrayBuffer. - */ -Buffer.prototype.toArrayBuffer = function () { - if (typeof Uint8Array !== 'undefined') { - if (Buffer._useTypedArrays) { - return (new Buffer(this)).buffer - } else { - var buf = new Uint8Array(this.length) - for (var i = 0, len = buf.length; i < len; i += 1) - buf[i] = this[i] - return buf.buffer - } - } else { - throw new Error('Buffer.toArrayBuffer not supported in this browser') - } -} - -// HELPER FUNCTIONS -// ================ - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -var BP = Buffer.prototype - -/** - * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods - */ -Buffer._augment = function (arr) { - arr._isBuffer = true - - // save reference to original Uint8Array get/set methods before overwriting - arr._get = arr.get - arr._set = arr.set - - // deprecated, will be removed in node 0.13+ - arr.get = BP.get - arr.set = BP.set - - arr.write = BP.write - arr.toString = BP.toString - arr.toLocaleString = BP.toString - arr.toJSON = BP.toJSON - arr.copy = BP.copy - arr.slice = BP.slice - arr.readUInt8 = BP.readUInt8 - arr.readUInt16LE = BP.readUInt16LE - arr.readUInt16BE = BP.readUInt16BE - arr.readUInt32LE = BP.readUInt32LE - arr.readUInt32BE = BP.readUInt32BE - arr.readInt8 = BP.readInt8 - arr.readInt16LE = BP.readInt16LE - arr.readInt16BE = BP.readInt16BE - arr.readInt32LE = BP.readInt32LE - arr.readInt32BE = BP.readInt32BE - arr.readFloatLE = BP.readFloatLE - arr.readFloatBE = BP.readFloatBE - arr.readDoubleLE = BP.readDoubleLE - arr.readDoubleBE = BP.readDoubleBE - arr.writeUInt8 = BP.writeUInt8 - arr.writeUInt16LE = BP.writeUInt16LE - arr.writeUInt16BE = BP.writeUInt16BE - arr.writeUInt32LE = BP.writeUInt32LE - arr.writeUInt32BE = BP.writeUInt32BE - arr.writeInt8 = BP.writeInt8 - arr.writeInt16LE = BP.writeInt16LE - arr.writeInt16BE = BP.writeInt16BE - arr.writeInt32LE = BP.writeInt32LE - arr.writeInt32BE = BP.writeInt32BE - arr.writeFloatLE = BP.writeFloatLE - arr.writeFloatBE = BP.writeFloatBE - arr.writeDoubleLE = BP.writeDoubleLE - arr.writeDoubleBE = BP.writeDoubleBE - arr.fill = BP.fill - arr.inspect = BP.inspect - arr.toArrayBuffer = BP.toArrayBuffer - - return arr -} - -// slice(start, end) -function clamp (index, len, defaultValue) { - if (typeof index !== 'number') return defaultValue - index = ~~index; // Coerce to integer. - if (index >= len) return len - if (index >= 0) return index - index += len - if (index >= 0) return index - return 0 -} - -function coerce (length) { - // Coerce length to a number (possibly NaN), round up - // in case it's fractional (e.g. 123.456) then do a - // double negate to coerce a NaN to 0. Easy, right? - length = ~~Math.ceil(+length) - return length < 0 ? 0 : length -} - -function isArray (subject) { - return (Array.isArray || function (subject) { - return Object.prototype.toString.call(subject) === '[object Array]' - })(subject) -} - -function isArrayish (subject) { - return isArray(subject) || Buffer.isBuffer(subject) || - subject && typeof subject === 'object' && - typeof subject.length === 'number' -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - var b = str.charCodeAt(i) - if (b <= 0x7F) - byteArray.push(str.charCodeAt(i)) - else { - var start = i - if (b >= 0xD800 && b <= 0xDFFF) i++ - var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%') - for (var j = 0; j < h.length; j++) - byteArray.push(parseInt(h[j], 16)) - } - } - return byteArray -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; i++) { - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(str) -} - -function blitBuffer (src, dst, offset, length) { - var pos - for (var i = 0; i < length; i++) { - if ((i + offset >= dst.length) || (i >= src.length)) - break - dst[i + offset] = src[i] - } - return i -} - -function decodeUtf8Char (str) { - try { - return decodeURIComponent(str) - } catch (err) { - return String.fromCharCode(0xFFFD) // UTF 8 invalid char - } -} - -/* - * We have to make sure that the value is a valid integer. This means that it - * is non-negative. It has no fractional component and that it does not - * exceed the maximum allowed value. - */ -function verifuint (value, max) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value >= 0, 'specified a negative value for writing an unsigned value') - assert(value <= max, 'value is larger than maximum value for type') - assert(Math.floor(value) === value, 'value has a fractional component') -} - -function verifsint (value, max, min) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value <= max, 'value larger than maximum allowed value') - assert(value >= min, 'value smaller than minimum allowed value') - assert(Math.floor(value) === value, 'value has a fractional component') -} - -function verifIEEE754 (value, max, min) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value <= max, 'value larger than maximum allowed value') - assert(value >= min, 'value smaller than minimum allowed value') -} - -function assert (test, message) { - if (!test) throw new Error(message || 'Failed assertion') -} - -},{"base64-js":13,"ieee754":14}],13:[function(require,module,exports){ -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -;(function (exports) { - 'use strict'; - - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS) - return 62 // '+' - if (code === SLASH) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } - - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length - - var L = 0 - - function push (v) { - arr[L++] = v - } - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } - - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } - - return arr - } - - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length - - function encode (num) { - return lookup.charAt(num) - } - - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } - - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } - - return output - } - - exports.toByteArray = b64ToByteArray - exports.fromByteArray = uint8ToBase64 -}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) - -},{}],14:[function(require,module,exports){ -exports.read = function(buffer, offset, isLE, mLen, nBytes) { - var e, m, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = isLE ? (nBytes - 1) : 0, - d = isLE ? -1 : 1, - s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = isLE ? 0 : (nBytes - 1), - d = isLE ? 1 : -1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); - - buffer[offset + i - d] |= s * 128; -}; - -},{}],15:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],16:[function(require,module,exports){ -// shim for using process in browser - -var process = module.exports = {}; - -process.nextTick = (function () { - var canSetImmediate = typeof window !== 'undefined' - && window.setImmediate; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canSetImmediate) { - return function (f) { return window.setImmediate(f) }; - } - - if (canPost) { - var queue = []; - window.addEventListener('message', function (ev) { - var source = ev.source; - if ((source === window || source === null) && ev.data === 'process-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - - return function nextTick(fn) { - queue.push(fn); - window.postMessage('process-tick', '*'); - }; - } - - return function nextTick(fn) { - setTimeout(fn, 0); - }; -})(); - -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -} - -// TODO(shtylman) -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; - -},{}],17:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],18:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node 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. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":17,"FWaASH":16,"inherits":15}],19:[function(require,module,exports){ -(function (Buffer){ -(function () { - "use strict"; - - function btoa(str) { - var buffer - ; - - if (str instanceof Buffer) { - buffer = str; - } else { - buffer = new Buffer(str.toString(), 'binary'); - } - - return buffer.toString('base64'); - } - - module.exports = btoa; -}()); - -}).call(this,require("buffer").Buffer) -},{"buffer":12}],20:[function(require,module,exports){ -/*! - * jQuery JavaScript Library v2.1.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:11Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var arr = []; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "2.1.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android < 4.0, iOS < 6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v1.10.19 - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-04-18 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== strundefined && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, - doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", function() { - setDocument(); - }, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", function() { - setDocument(); - }); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { - div.innerHTML = "
"; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowclip^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "
"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android < 4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Math.random(); -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android < 4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -/* - Implementation Summary - - 1. Enforce API surface and semantic compatibility with 1.9.x branch - 2. Improve the module's maintainability by reducing the storage - paths to a single mechanism. - 3. Use the same single mechanism to support "private" and "user" data. - 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) - 5. Avoid exposing implementation details on user objects (eg. expando properties) - 6. Provide a clear path for implementation upgrade to WeakMap in 2014 -*/ -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // #11217 - WebKit loses check when the name is after the checked attribute - // Support: Windows Web Apps (WWA) - // `name` and `type` need .setAttribute for WWA - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE9-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome < 28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Create "bubbling" focus and blur events -// Support: Firefox, Chrome, Safari -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE 9 - option: [ 1, "" ], - - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE 9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Support: IE >= 9 -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Support: IE >= 9 - // Fix Cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Fixes #12346 - // Support: Webkit, IE - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( " +// +function openPopup() { + return new Promise(resolve => { + // Start opening + document.getElementById("layer-popup").classList.add("open"); + + // It is a good idea to reset the iframe, in case it has been opened before + document.getElementById("myPopupFrame").src = "about:blank"; + + // Once our CSS transitions are done, resolve with the name of our frame + setTimeout(() => resolve("myPopupFrame"), 1000); + }); +} + +FHIR.oauth2.authorize({ + target: openPopup, + // ... +}); +``` + +There are many other possible ways to authorize in a different window. Just consider the possible values for the `target` option listed below and then also combine those with `completeInTarget: true` to get an idea of what may be achievable. + +#### Possible `target` values: +- `"popup"` - Opens a popup window and runs the authorization inside it. +- `"_blank"` - Acts like "popup" but opens new tab instead. Might also open a new + window, depending on the browser settings. +- `"_self"` - Acts in the current window. This is the same as not specifying any target. +- `"_parent"` - Acts in the parent window. This can be used when `authorize` is called + from within a frame. +- `"_top"` - Acts in the top-most window. This can be used when `authorize` is called + from within a frame. +- `string` - Frame name. Finds the frame by that name in `window.frames` and runs the + authorization inside it. +- `number` - Frame index. Finds the frame by that index in `window.frames` and runs the + authorization inside it, +- `object` - Reference to a Window object (including a window in frame if you can obtain a reference to it) +- `function` - A function that returns any of the above values or a promise that will + be resolved with such value. + +> **NOTE**: You must use target windows having the same `origin`. If a `target` cannot be resolved to a window or if there are security issues (or for example popups are blocked), the authorization will fail back to using the current window. diff --git a/docs/typedoc-theme/assets/css/main.css b/docs/typedoc-theme/assets/css/main.css new file mode 100644 index 00000000..94c40b85 --- /dev/null +++ b/docs/typedoc-theme/assets/css/main.css @@ -0,0 +1,2349 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ +/* ========================================================================== + * HTML5 display definitions + * ========================================================================== */ +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { + display: block; } + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */ +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. */ +[hidden] { + display: none; } + +/* ========================================================================== + * Base + * ========================================================================== */ +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. */ +html { + font-size: 100%; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + font-family: sans-serif; } + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. */ +button, input, select, textarea { + font-family: sans-serif; } + +/** + * Address margins handled incorrectly in IE 6/7. */ +body { + margin: 0; } + +/* ========================================================================== + * Links + * ========================================================================== */ +/** + * Address `outline` inconsistency between Chrome and other browsers. */ +a:focus { + outline: thin dotted; } + +a:active, a:hover { + outline: 0; } + +/** + * Improve readability when focused and also mouse hovered in all browsers. */ +/* ========================================================================== + * Typography + * ========================================================================== */ +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +h2 { + font-size: 1.5em; + margin: 0.83em 0; } + +h3 { + font-size: 1.17em; + margin: 1em 0; } + +h4, .tsd-index-panel h3 { + font-size: 1em; + margin: 1.33em 0; } + +h5 { + font-size: 0.83em; + margin: 1.67em 0; } + +h6 { + font-size: 0.67em; + margin: 2.33em 0; } + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ +b, strong { + font-weight: bold; } + +blockquote { + margin: 1em 40px; } + +/** + * Address styling not present in Safari 5 and Chrome. */ +dfn { + font-style: italic; } + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. */ +hr { + box-sizing: content-box; + height: 0; } + +/** + * Address styling not present in IE 6/7/8/9. */ +mark { + background: #ff0; + color: #000; } + +/** + * Address margins set differently in IE 6/7. */ +p, pre { + margin: 1em 0; } + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ +code, kbd, pre, samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; } + +/** + * Improve readability of pre-formatted text in all browsers. */ +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; } + +/** + * Address CSS quotes not supported in IE 6/7. */ +q { + quotes: none; } + q:before, q:after { + content: ''; + content: none; } + +/** + * Address `quotes` property not supported in Safari 4. */ +/** + * Address inconsistent and variable font size in all browsers. */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* ========================================================================== + * Lists + * ========================================================================== */ +/** + * Address margins set differently in IE 6/7. */ +dl, menu, ol, ul { + margin: 1em 0; } + +dd { + margin: 0 0 0 40px; } + +/** + * Address paddings set differently in IE 6/7. */ +menu, ol, ul { + padding: 0 0 0 40px; } + +/** + * Correct list images handled incorrectly in IE 7. */ +nav ul, nav ol { + list-style: none; + list-style-image: none; } + +/* ========================================================================== + * Embedded content + * ========================================================================== */ +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. */ +img { + border: 0; + /* 1 */ + -ms-interpolation-mode: bicubic; } + +/* 2 */ +/** + * Correct overflow displayed oddly in IE 9. */ +svg:not(:root) { + overflow: hidden; } + +/* ========================================================================== + * Figures + * ========================================================================== */ +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ +figure, form { + margin: 0; } + +/* ========================================================================== + * Forms + * ========================================================================== */ +/** + * Correct margin displayed oddly in IE 6/7. */ +/** + * Define consistent border, margin, and padding. */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. */ +legend { + border: 0; + /* 1 */ + padding: 0; + white-space: normal; + /* 2 */ + *margin-left: -7px; } + +/* 3 */ +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. */ +button, input, select, textarea { + font-size: 100%; + /* 1 */ + margin: 0; + /* 2 */ + vertical-align: baseline; + /* 3 */ + *vertical-align: middle; } + +/* 3 */ +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. */ +button, input { + line-height: normal; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. */ +button, select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. */ +button, html input[type="button"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ + *overflow: visible; } + +/* 4 */ +input[type="reset"], input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ + *overflow: visible; } + +/* 4 */ +/** + * Re-set default cursor for disabled elements. */ +button[disabled], html input[disabled] { + cursor: default; } + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. */ +input { + /* 3 */ } + input[type="checkbox"], input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ + *height: 13px; + /* 3 */ + *width: 13px; } + input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + /* 2 */ + box-sizing: content-box; } + input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). */ +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. */ +/** + * Remove inner padding and border in Firefox 3+. */ +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; } + +/* 2 */ +/* ========================================================================== + * Tables + * ========================================================================== */ +/** + * Remove most spacing between table cells. */ +table { + border-collapse: collapse; + border-spacing: 0; } + +/* + * + *Visual Studio-like style based on original C# coloring by Jason Diamond */ +.hljs { + display: inline-block; + padding: 0.5em; + background: white; + color: black; } + +.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { + color: #008000; } + +.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { + color: #00f; } + +.xml .hljs-tag { + color: #00f; } + .xml .hljs-tag .hljs-value { + color: #00f; } + +.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { + color: #a31515; } + +.ruby .hljs-symbol { + color: #a31515; } + .ruby .hljs-symbol .hljs-string { + color: #a31515; } + +.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { + color: #a31515; } + +.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { + color: #2b91af; } + +.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { + color: #808080; } + +.vhdl .hljs-typename { + font-weight: bold; } + +.vhdl .hljs-string { + color: #666666; } + +.vhdl .hljs-literal { + color: #a31515; } + +.vhdl .hljs-attribute { + color: #00b0e8; } + +.xml .hljs-attribute { + color: #f00; } + +.col > :first-child, .col-1 > :first-child, .col-2 > :first-child, .col-3 > :first-child, .col-4 > :first-child, .col-5 > :first-child, .col-6 > :first-child, .col-7 > :first-child, .col-8 > :first-child, .col-9 > :first-child, .col-10 > :first-child, .col-11 > :first-child, .tsd-panel > :first-child, ul.tsd-descriptions > li > :first-child, +.col > :first-child > :first-child, +.col-1 > :first-child > :first-child, +.col-2 > :first-child > :first-child, +.col-3 > :first-child > :first-child, +.col-4 > :first-child > :first-child, +.col-5 > :first-child > :first-child, +.col-6 > :first-child > :first-child, +.col-7 > :first-child > :first-child, +.col-8 > :first-child > :first-child, +.col-9 > :first-child > :first-child, +.col-10 > :first-child > :first-child, +.col-11 > :first-child > :first-child, +.tsd-panel > :first-child > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child, +.col > :first-child > :first-child > :first-child, +.col-1 > :first-child > :first-child > :first-child, +.col-2 > :first-child > :first-child > :first-child, +.col-3 > :first-child > :first-child > :first-child, +.col-4 > :first-child > :first-child > :first-child, +.col-5 > :first-child > :first-child > :first-child, +.col-6 > :first-child > :first-child > :first-child, +.col-7 > :first-child > :first-child > :first-child, +.col-8 > :first-child > :first-child > :first-child, +.col-9 > :first-child > :first-child > :first-child, +.col-10 > :first-child > :first-child > :first-child, +.col-11 > :first-child > :first-child > :first-child, +.tsd-panel > :first-child > :first-child > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child > :first-child { + margin-top: 0; } + +.col > :last-child, .col-1 > :last-child, .col-2 > :last-child, .col-3 > :last-child, .col-4 > :last-child, .col-5 > :last-child, .col-6 > :last-child, .col-7 > :last-child, .col-8 > :last-child, .col-9 > :last-child, .col-10 > :last-child, .col-11 > :last-child, .tsd-panel > :last-child, ul.tsd-descriptions > li > :last-child, +.col > :last-child > :last-child, +.col-1 > :last-child > :last-child, +.col-2 > :last-child > :last-child, +.col-3 > :last-child > :last-child, +.col-4 > :last-child > :last-child, +.col-5 > :last-child > :last-child, +.col-6 > :last-child > :last-child, +.col-7 > :last-child > :last-child, +.col-8 > :last-child > :last-child, +.col-9 > :last-child > :last-child, +.col-10 > :last-child > :last-child, +.col-11 > :last-child > :last-child, +.tsd-panel > :last-child > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child, +.col > :last-child > :last-child > :last-child, +.col-1 > :last-child > :last-child > :last-child, +.col-2 > :last-child > :last-child > :last-child, +.col-3 > :last-child > :last-child > :last-child, +.col-4 > :last-child > :last-child > :last-child, +.col-5 > :last-child > :last-child > :last-child, +.col-6 > :last-child > :last-child > :last-child, +.col-7 > :last-child > :last-child > :last-child, +.col-8 > :last-child > :last-child > :last-child, +.col-9 > :last-child > :last-child > :last-child, +.col-10 > :last-child > :last-child > :last-child, +.col-11 > :last-child > :last-child > :last-child, +.tsd-panel > :last-child > :last-child > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child > :last-child { + margin-bottom: 0; } + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 40px; } + @media (max-width: 640px) { + .container { + padding: 0 20px; } } + +.container-main { + padding-bottom: 200px; } + +.row { + display: -ms-flexbox; + display: flex; + position: relative; + margin: 0 -10px; } + .row:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; } + +.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11 { + box-sizing: border-box; + float: left; + padding: 0 10px; } + +.col-1 { + width: 8.3333333333%; } + +.offset-1 { + margin-left: 8.3333333333%; } + +.col-2 { + width: 16.6666666667%; } + +.offset-2 { + margin-left: 16.6666666667%; } + +.col-3 { + width: 25%; } + +.offset-3 { + margin-left: 25%; } + +.col-4 { + width: 33.3333333333%; } + +.offset-4 { + margin-left: 33.3333333333%; } + +.col-5 { + width: 41.6666666667%; } + +.offset-5 { + margin-left: 41.6666666667%; } + +.col-6 { + width: 50%; } + +.offset-6 { + margin-left: 50%; } + +.col-7 { + width: 58.3333333333%; } + +.offset-7 { + margin-left: 58.3333333333%; } + +.col-8 { + width: 66.6666666667%; } + +.offset-8 { + margin-left: 66.6666666667%; } + +.col-9 { + width: 75%; } + +.offset-9 { + margin-left: 75%; } + +.col-10 { + width: 83.3333333333%; } + +.offset-10 { + margin-left: 83.3333333333%; } + +.col-11 { + width: 91.6666666667%; } + +.offset-11 { + margin-left: 91.6666666667%; } + +.tsd-kind-icon { + display: block; + position: relative; + padding-left: 20px; + text-indent: -20px; } + .tsd-kind-icon:before { + content: ''; + display: inline-block; + vertical-align: middle; + width: 17px; + height: 17px; + margin: 0 3px 2px 0; + background-image: url(../images/icons.png); } + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-kind-icon:before { + background-image: url(../images/icons@2x.png); + background-size: 238px 204px; } } + +.tsd-signature.tsd-kind-icon:before { + background-position: 0 -153px; } + +.tsd-kind-object-literal > .tsd-kind-icon:before { + background-position: 0px -17px; } + +.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -17px; } + +.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -17px; } + +.tsd-kind-class > .tsd-kind-icon:before { + background-position: 0px -34px; } + +.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -34px; } + +.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -34px; } + +.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -51px; } + +.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -51px; } + +.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -51px; } + +.tsd-kind-interface > .tsd-kind-icon:before { + background-position: 0px -68px; } + +.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -68px; } + +.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -68px; } + +.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -85px; } + +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -85px; } + +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -85px; } + +.tsd-kind-module > .tsd-kind-icon:before { + background-position: 0px -102px; } + +.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; } + +.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; } + +.tsd-kind-external-module > .tsd-kind-icon:before { + background-position: 0px -102px; } + +.tsd-kind-external-module.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; } + +.tsd-kind-external-module.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; } + +.tsd-kind-enum > .tsd-kind-icon:before { + background-position: 0px -119px; } + +.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -119px; } + +.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -119px; } + +.tsd-kind-enum-member > .tsd-kind-icon:before { + background-position: 0px -136px; } + +.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -136px; } + +.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -136px; } + +.tsd-kind-signature > .tsd-kind-icon:before { + background-position: 0px -153px; } + +.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -153px; } + +.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -153px; } + +.tsd-kind-type-alias > .tsd-kind-icon:before { + background-position: 0px -170px; } + +.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -170px; } + +.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -170px; } + +.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -187px; } + +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -187px; } + +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -187px; } + +.tsd-kind-variable > .tsd-kind-icon:before { + background-position: -136px -0px; } + +.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; } + +.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -0px; } + +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; } + +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -0px; } + +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; } + +.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -0px; } + +.tsd-kind-property > .tsd-kind-icon:before { + background-position: -136px -0px; } + +.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; } + +.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -0px; } + +.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; } + +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -0px; } + +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; } + +.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; } + +.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -0px; } + +.tsd-kind-get-signature > .tsd-kind-icon:before { + background-position: -136px -17px; } + +.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -17px; } + +.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -17px; } + +.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -17px; } + +.tsd-kind-set-signature > .tsd-kind-icon:before { + background-position: -136px -34px; } + +.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -34px; } + +.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -34px; } + +.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -34px; } + +.tsd-kind-accessor > .tsd-kind-icon:before { + background-position: -136px -51px; } + +.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -51px; } + +.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -51px; } + +.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -51px; } + +.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -68px; } + +.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; } + +.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; } + +.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; } + +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; } + +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; } + +.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; } + +.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -68px; } + +.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; } + +.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; } + +.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; } + +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; } + +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; } + +.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; } + +.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -68px; } + +.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; } + +.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; } + +.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; } + +.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -85px; } + +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -85px; } + +.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -85px; } + +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -85px; } + +.tsd-kind-constructor > .tsd-kind-icon:before { + background-position: -136px -102px; } + +.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; } + +.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; } + +.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -102px; } + +.tsd-kind-constructor-signature > .tsd-kind-icon:before { + background-position: -136px -102px; } + +.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; } + +.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; } + +.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -102px; } + +.tsd-kind-index-signature > .tsd-kind-icon:before { + background-position: -136px -119px; } + +.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -119px; } + +.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -119px; } + +.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -119px; } + +.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -136px; } + +.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -136px; } + +.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; } + +.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -136px; } + +.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; } + +.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -136px; } + +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -136px; } + +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; } + +.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -136px; } + +.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -136px; } + +.tsd-is-static > .tsd-kind-icon:before { + background-position: -136px -153px; } + +.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -153px; } + +.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; } + +.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -153px; } + +.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; } + +.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -153px; } + +.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -153px; } + +.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; } + +.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -153px; } + +.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -153px; } + +.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; } + +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; } + +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; } + +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -187px; } + +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -187px; } + +.no-transition { + transition: none !important; } + +@keyframes fade-in { + from { + opacity: 0; } + to { + opacity: 1; } } + +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; } + to { + opacity: 0; } } + +@keyframes fade-in-delayed { + 0% { + opacity: 0; } + 33% { + opacity: 0; } + 100% { + opacity: 1; } } + +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; } + 66% { + opacity: 0; } + 100% { + opacity: 0; } } + +@keyframes shift-to-left { + from { + transform: translate(0, 0); } + to { + transform: translate(-25%, 0); } } + +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); } + to { + transform: translate(0, 0); } } + +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); } + to { + transform: translate(0, 0); } } + +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; } + to { + transform: translate(100%, 0); } } + +body { + background: #fbfbfb; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: #222; } + +a { + color: #4da6ff; + text-decoration: none; } + a:hover { + text-decoration: underline; } + +code, pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 14px; + background-color: rgba(0, 0, 0, 0.04); } + +pre { + padding: 10px; } + pre code { + padding: 0; + font-size: 100%; + background-color: transparent; } + +.tsd-typography { + line-height: 1.333em; } + .tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; } + .tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { + font-size: 1em; + margin: 0; } + .tsd-typography h5, .tsd-typography h6 { + font-weight: normal; } + .tsd-typography p, .tsd-typography ul, .tsd-typography ol { + margin: 1em 0; } + +@media (min-width: 901px) and (max-width: 1024px) { + html.default .col-content { + width: 72%; } + html.default .col-menu { + width: 28%; } + html.default .tsd-navigation { + padding-left: 10px; } } + +@media (max-width: 900px) { + html.default .col-content { + float: none; + width: 100%; } + html.default .col-menu { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + width: 100%; + padding: 20px 20px 0 0; + max-width: 450px; + visibility: hidden; + background-color: #fff; + transform: translate(100%, 0); } + html.default .col-menu > *:last-child { + padding-bottom: 20px; } + html.default .overlay { + content: ''; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; } + html.default.to-has-menu .overlay { + animation: fade-in 0.4s; } + html.default.to-has-menu header, + html.default.to-has-menu footer, + html.default.to-has-menu .col-content { + animation: shift-to-left 0.4s; } + html.default.to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; } + html.default.from-has-menu .overlay { + animation: fade-out 0.4s; } + html.default.from-has-menu header, + html.default.from-has-menu footer, + html.default.from-has-menu .col-content { + animation: unshift-to-left 0.4s; } + html.default.from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; } + html.default.has-menu body { + overflow: hidden; } + html.default.has-menu .overlay { + visibility: visible; } + html.default.has-menu header, + html.default.has-menu footer, + html.default.has-menu .col-content { + transform: translate(-25%, 0); } + html.default.has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); } } + +.tsd-page-title { + padding: 70px 0 20px 0; + margin: 0 0 40px 0; + background: #fff; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); } + .tsd-page-title h1 { + margin: 0; } + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: #808080; } + .tsd-breadcrumb a { + color: #808080; + text-decoration: none; } + .tsd-breadcrumb a:hover { + text-decoration: underline; } + .tsd-breadcrumb li { + display: inline; } + .tsd-breadcrumb li:after { + content: ' / '; } + +html.minimal .container { + margin: 0; } + +html.minimal .container-main { + padding-top: 50px; + padding-bottom: 0; } + +html.minimal .content-wrap { + padding-left: 300px; } + +html.minimal .tsd-navigation { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + box-sizing: border-box; + z-index: 1; + left: 0; + top: 40px; + bottom: 0; + width: 300px; + padding: 20px; + margin: 0; } + +html.minimal .tsd-member .tsd-member { + margin-left: 0; } + +html.minimal .tsd-page-toolbar { + position: fixed; + z-index: 2; } + +html.minimal #tsd-filter .tsd-filter-group { + right: 0; + transform: none; } + +html.minimal footer { + background-color: transparent; } + html.minimal footer .container { + padding: 0; } + +html.minimal .tsd-generator { + padding: 0; } + +@media (max-width: 900px) { + html.minimal .tsd-navigation { + display: none; } + html.minimal .content-wrap { + padding-left: 0; } } + +dl.tsd-comment-tags { + overflow: hidden; } + dl.tsd-comment-tags dt { + float: left; + padding: 1px 5px; + margin: 0 10px 0 0; + border-radius: 4px; + border: 1px solid rgba(0, 0, 0, 0.08); + color: #404040; + font-size: 0.8em; + font-weight: normal; + background: blanchedalmond; } + dl.tsd-comment-tags dd { + margin: 0 0 10px 0; } + dl.tsd-comment-tags dd:before, dl.tsd-comment-tags dd:after { + display: table; + content: " "; } + dl.tsd-comment-tags dd pre, dl.tsd-comment-tags dd:after { + clear: both; } + dl.tsd-comment-tags p { + margin: 0; } + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; } + .tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; } + +.toggle-protected .tsd-is-private { + display: none; } + +.toggle-public .tsd-is-private, +.toggle-public .tsd-is-protected, +.toggle-public .tsd-is-private-protected { + display: none; } + +.toggle-inherited .tsd-is-inherited { + display: none; } + +.toggle-only-exported .tsd-is-not-exported { + display: none; } + +.toggle-externals .tsd-is-external { + display: none; } + +#tsd-filter { + position: relative; + display: inline-block; + height: 40px; + vertical-align: bottom; } + .no-filter #tsd-filter { + display: none; } + #tsd-filter .tsd-filter-group { + display: inline-block; + height: 40px; + vertical-align: bottom; + white-space: nowrap; } + #tsd-filter input { + display: none; } + @media (max-width: 900px) { + #tsd-filter .tsd-filter-group { + display: block; + position: absolute; + top: 40px; + right: 20px; + height: auto; + background-color: #fff; + visibility: hidden; + transform: translate(50%, 0); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } + .has-options #tsd-filter .tsd-filter-group { + visibility: visible; } + .to-has-options #tsd-filter .tsd-filter-group { + animation: fade-in 0.2s; } + .from-has-options #tsd-filter .tsd-filter-group { + animation: fade-out 0.2s; } + #tsd-filter label, + #tsd-filter .tsd-select { + display: block; + padding-right: 20px; } } + +footer { + border-top: 1px solid #eee; + background-color: #fff; } + footer.with-border-bottom { + border-bottom: 1px solid #eee; } + footer .tsd-legend-group { + font-size: 0; } + footer .tsd-legend { + display: inline-block; + width: 25%; + padding: 0; + font-size: 16px; + list-style: none; + line-height: 1.333em; + vertical-align: top; } + @media (max-width: 900px) { + footer .tsd-legend { + width: 50%; } } + +.tsd-hierarchy { + list-style: square; + padding: 0 0 0 20px; + margin: 0; } + .tsd-hierarchy .target { + font-weight: bold; } + +.tsd-index-panel .tsd-index-content { + margin-bottom: -30px !important; } + +.tsd-index-panel .tsd-index-section { + margin-bottom: 30px !important; } + +.tsd-index-panel h3 { + margin: 0 -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid #eee; } + +.tsd-index-panel ul.tsd-index-list { + -moz-column-count: 3; + -ms-column-count: 3; + -o-column-count: 3; + column-count: 3; + -moz-column-gap: 20px; + -ms-column-gap: 20px; + -o-column-gap: 20px; + column-gap: 20px; + padding: 0; + list-style: none; + line-height: 1.333em; } + @media (max-width: 900px) { + .tsd-index-panel ul.tsd-index-list { + -moz-column-count: 1; + -ms-column-count: 1; + -o-column-count: 1; + column-count: 1; } } + @media (min-width: 901px) and (max-width: 1024px) { + .tsd-index-panel ul.tsd-index-list { + -moz-column-count: 2; + -ms-column-count: 2; + -o-column-count: 2; + column-count: 2; } } + .tsd-index-panel ul.tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; } + +.tsd-index-panel a, +.tsd-index-panel .tsd-parent-kind-module a { + color: #9600ff; } + +.tsd-index-panel .tsd-parent-kind-interface a { + color: #7da01f; } + +.tsd-index-panel .tsd-parent-kind-enum a { + color: #cc9900; } + +.tsd-index-panel .tsd-parent-kind-class a { + color: #4da6ff; } + +.tsd-index-panel .tsd-kind-module a { + color: #9600ff; } + +.tsd-index-panel .tsd-kind-interface a { + color: #7da01f; } + +.tsd-index-panel .tsd-kind-enum a { + color: #cc9900; } + +.tsd-index-panel .tsd-kind-class a { + color: #4da6ff; } + +.tsd-index-panel .tsd-is-private a { + color: #808080; } + +.tsd-flag { + display: inline-block; + padding: 1px 5px; + border-radius: 4px; + color: #fff; + background-color: #d86b2f; + text-indent: 0; + font-size: 14px; + font-weight: normal; + vertical-align: text-top;Zzzz } + +.tsd-anchor { + position: absolute; + top: -100px; } + +.tsd-member { + position: relative; } + .tsd-member .tsd-anchor + h3 { + margin-top: 0; + margin-bottom: 0; + border-bottom: none; } + +.tsd-navigation { + margin: 0 0 0 40px; } + .tsd-navigation a { + display: block; + padding-top: 2px; + padding-bottom: 2px; + border-left: 2px solid transparent; + color: #222; + text-decoration: none; + transition: border-left-color 0.1s; } + .tsd-navigation a:hover { + text-decoration: underline; } + .tsd-navigation ul { + margin: 0; + padding: 0; + list-style: none; } + .tsd-navigation li { + padding: 0; } + +.tsd-navigation.primary { + padding-bottom: 40px; } + .tsd-navigation.primary a { + display: block; + padding-top: 6px; + padding-bottom: 6px; } + .tsd-navigation.primary ul li a { + padding-left: 5px; } + .tsd-navigation.primary ul li li a { + padding-left: 25px; } + .tsd-navigation.primary ul li li li a { + padding-left: 45px; } + .tsd-navigation.primary ul li li li li a { + padding-left: 65px; } + .tsd-navigation.primary ul li li li li li a { + padding-left: 85px; } + .tsd-navigation.primary ul li li li li li li a { + padding-left: 105px; } + .tsd-navigation.primary > ul { + border-bottom: 1px solid #eee; } + .tsd-navigation.primary li { + border-top: 1px solid #eee; } + .tsd-navigation.primary li.current > a { + font-weight: bold; } + .tsd-navigation.primary li.label span { + display: block; + padding: 20px 0 6px 5px; + color: #808080; } + .tsd-navigation.primary li.globals + li > span, + .tsd-navigation.primary li.globals + li > a { + padding-top: 20px; } + +.tsd-navigation.secondary { + max-height: calc(100vh - 1rem - 40px); + overflow: auto; + position: -webkit-sticky; + position: sticky; + top: calc(.5rem + 40px); + transition: .3s; } + .tsd-navigation.secondary.tsd-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: .5rem; } + .tsd-navigation.secondary ul { + transition: opacity 0.2s; } + .tsd-navigation.secondary ul li a { + padding-left: 25px; } + .tsd-navigation.secondary ul li li a { + padding-left: 45px; } + .tsd-navigation.secondary ul li li li a { + padding-left: 65px; } + .tsd-navigation.secondary ul li li li li a { + padding-left: 85px; } + .tsd-navigation.secondary ul li li li li li a { + padding-left: 105px; } + .tsd-navigation.secondary ul li li li li li li a { + padding-left: 125px; } + .tsd-navigation.secondary ul.current a { + border-left-color: #eee; } + .tsd-navigation.secondary li.focus > a, + .tsd-navigation.secondary ul.current li.focus > a { + border-left-color: #000; } + .tsd-navigation.secondary li.current { + margin-top: 20px; + margin-bottom: 20px; + border-left-color: #eee; } + .tsd-navigation.secondary li.current > a { + font-weight: bold; } + +@media (min-width: 901px) { + .menu-sticky-wrap { + position: static; } } + +.tsd-panel { + margin: 20px 0; + padding: 20px; + background-color: #fff; + box-shadow: 0 0 0px 1px rgba(0, 0, 0, 0.1); + border-radius: 3px; } + .tsd-panel:empty { + display: none; } + .tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { + margin: 1.5em -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid #eee; } + .tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: 0; } + .tsd-panel table { + display: block; + width: 100%; + overflow: auto; + margin-top: 10px; + word-break: normal; + word-break: keep-all; } + .tsd-panel table th { + font-weight: bold; } + .tsd-panel table th, .tsd-panel table td { + padding: 6px 13px; + border: 1px solid #ddd; } + .tsd-panel table tr { + background-color: #fff; + border-top: 1px solid #ccc; } + .tsd-panel table tr:nth-child(2n) { + background-color: #f8f8f8; } + +.tsd-panel-group { + margin: 60px 0; } + .tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { + padding-left: 20px; + padding-right: 20px; } + +#tsd-search { + transition: background-color 0.2s; } + #tsd-search .title { + position: relative; + z-index: 2; } + #tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 40px; + height: 40px; } + #tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: #222; } + #tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; } + #tsd-search .field input, + #tsd-search .title { + transition: opacity 0.2s; } + #tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } + #tsd-search .results li { + padding: 0 10px; + background-color: #fdfdfd; } + #tsd-search .results li:nth-child(even) { + background-color: #fff; } + #tsd-search .results li.state { + display: none; } + #tsd-search .results li.current, + #tsd-search .results li:hover { + background-color: #eee; } + #tsd-search .results a { + display: block; } + #tsd-search .results a:before { + top: 10px; } + #tsd-search .results span.parent { + color: #808080; + font-weight: normal; } + #tsd-search.has-focus { + background-color: #eee; } + #tsd-search.has-focus .field input { + top: 0; + opacity: 1; } + #tsd-search.has-focus .title { + z-index: 0; + opacity: 0; } + #tsd-search.has-focus .results { + visibility: visible; } + #tsd-search.loading .results li.state.loading { + display: block; } + #tsd-search.failure .results li.state.failure { + display: block; } + +.tsd-signature { + margin: 0 0 1em 0; + padding: 10px; + border: 1px solid #eee; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + word-wrap: break-word; } + .tsd-signature.tsd-kind-icon { + padding-left: 30px; } + .tsd-signature.tsd-kind-icon:before { + top: 10px; + left: 10px; } + .tsd-panel > .tsd-signature { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; + background: linear-gradient(45deg, #EFFBFF, #FEFEFF); } + .tsd-panel > .tsd-signature.tsd-kind-icon { + padding-left: 40px; } + .tsd-panel > .tsd-signature.tsd-kind-icon:before { + left: 20px; } + +.tsd-signature-symbol { + color: #808080; + font-weight: normal; } + +.tsd-signature-type { + font-style: italic; + font-weight: normal; } + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + border: 1px solid #eee; + background: linear-gradient(45deg, #EFFBFF, #FEFEFF); } + .tsd-signatures .tsd-signature { + margin: 0; + border-width: 1px 0 0 0; + transition: background-color 0.1s; } + .tsd-signatures .tsd-signature:first-child { + border-top-width: 0; } + .tsd-signatures .tsd-signature.current { + background-color: #eee; } + .tsd-signatures.active > .tsd-signature { + cursor: pointer; } + .tsd-panel > .tsd-signatures { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; } + .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { + padding-left: 40px; } + .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { + left: 20px; } + .tsd-panel > a.anchor + .tsd-signatures { + border-top-width: 0; + margin-top: -20px; } + +ul.tsd-descriptions { + position: relative; + overflow: hidden; + transition: height 0.3s; + padding: 0; + list-style: none; } + ul.tsd-descriptions.active > .tsd-description { + display: none; } + ul.tsd-descriptions.active > .tsd-description.current { + display: block; } + ul.tsd-descriptions.active > .tsd-description.fade-in { + animation: fade-in-delayed 0.3s; } + ul.tsd-descriptions.active > .tsd-description.fade-out { + animation: fade-out-delayed 0.3s; + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + opacity: 0; + visibility: hidden; } + ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { + font-size: 16px; + margin: 1em 0 0.5em 0; } + +ul.tsd-parameters, +ul.tsd-type-parameters { + list-style: square; + margin: 0; + padding-left: 20px; } + ul.tsd-parameters > li.tsd-parameter-siganture, + ul.tsd-type-parameters > li.tsd-parameter-siganture { + list-style: none; + margin-left: -20px; } + ul.tsd-parameters h5, + ul.tsd-type-parameters h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; } + ul.tsd-parameters .tsd-comment, + ul.tsd-type-parameters .tsd-comment { + margin-top: -0.5em; } + +.tsd-sources { + font-size: 14px; + color: #808080; + margin: 0 0 1em 0; } + .tsd-sources a { + color: #808080; + text-decoration: underline; } + .tsd-sources ul, .tsd-sources p { + margin: 0 !important; } + .tsd-sources ul { + list-style: none; + padding: 0; } + +.tsd-page-toolbar { + position: fixed; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 40px; + color: #333; + background: #fff; + border-bottom: 1px solid #eee; + transition: transform .3s linear; } + .tsd-page-toolbar a { + color: #333; + text-decoration: none; } + .tsd-page-toolbar a.title { + font-weight: bold; } + .tsd-page-toolbar a.title:hover { + text-decoration: underline; } + .tsd-page-toolbar .table-wrap { + display: table; + width: 100%; + height: 40px; } + .tsd-page-toolbar .table-cell { + display: table-cell; + position: relative; + white-space: nowrap; + line-height: 40px; } + .tsd-page-toolbar .table-cell:first-child { + width: 100%; } + +.tsd-page-toolbar--hide { + transform: translateY(-100%); } + +.tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { + content: ''; + display: inline-block; + width: 40px; + height: 40px; + margin: 0 -8px 0 0; + background-image: url(../images/widgets.png); + background-repeat: no-repeat; + text-indent: -1024px; + vertical-align: bottom; } + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { + background-image: url(../images/widgets@2x.png); + background-size: 320px 40px; } } + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.6; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; } + .tsd-widget:hover { + opacity: 0.8; } + .tsd-widget.active { + opacity: 1; + background-color: #eee; } + .tsd-widget.no-caption { + width: 40px; } + .tsd-widget.no-caption:before { + margin: 0; } + .tsd-widget.search:before { + background-position: 0 0; } + .tsd-widget.menu:before { + background-position: -40px 0; } + .tsd-widget.options:before { + background-position: -80px 0; } + .tsd-widget.options, .tsd-widget.menu { + display: none; } + @media (max-width: 900px) { + .tsd-widget.options, .tsd-widget.menu { + display: inline-block; } } + input[type=checkbox] + .tsd-widget:before { + background-position: -120px 0; } + input[type=checkbox]:checked + .tsd-widget:before { + background-position: -160px 0; } + +.tsd-select { + position: relative; + display: inline-block; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; } + .tsd-select .tsd-select-label { + opacity: 0.6; + transition: opacity 0.2s; } + .tsd-select .tsd-select-label:before { + background-position: -240px 0; } + .tsd-select.active .tsd-select-label { + opacity: 0.8; } + .tsd-select.active .tsd-select-list { + visibility: visible; + opacity: 1; + transition-delay: 0s; } + .tsd-select .tsd-select-list { + position: absolute; + visibility: hidden; + top: 40px; + left: 0; + margin: 0; + padding: 0; + opacity: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + transition: visibility 0s 0.2s, opacity 0.2s; } + .tsd-select .tsd-select-list li { + padding: 0 20px 0 0; + background-color: #fdfdfd; } + .tsd-select .tsd-select-list li:before { + background-position: 40px 0; } + .tsd-select .tsd-select-list li:nth-child(even) { + background-color: #fff; } + .tsd-select .tsd-select-list li:hover { + background-color: #eee; } + .tsd-select .tsd-select-list li.selected:before { + background-position: -200px 0; } + @media (max-width: 900px) { + .tsd-select .tsd-select-list { + top: 0; + left: auto; + right: 100%; + margin-right: -5px; } + .tsd-select .tsd-select-label:before { + background-position: -280px 0; } } + +img { + max-width: 100%; } + +/* -------------------------------------------------------------------------- */ +.tsd-navigation.primary li.tsd-kind-external-module a:before { + content: ""; + width: 12px; + height: 15px; + box-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.3), 1px 1px 2px 0px rgba(0, 0, 0, 0.3); + margin: -1px 6px 2px -6px; + border-radius: 0px 6px 0px 1px; + background: #EEE; + display: inline-block; + vertical-align: text-bottom; } + .tsd-navigation.primary li.tsd-kind-external-module.current a:before { + box-shadow: 0px 0px 2px 0px #000, 0 0 0 2px #4da6ff; + } +code { + box-shadow: 0 0 1px 0px rgba(0, 0, 0, 0.5) inset; + border-radius: 3px; +} +pre code { + box-shadow: none; +} \ No newline at end of file diff --git a/docs/typedoc-theme/assets/images/icons.png b/docs/typedoc-theme/assets/images/icons.png new file mode 100644 index 00000000..3836d5fe Binary files /dev/null and b/docs/typedoc-theme/assets/images/icons.png differ diff --git a/docs/typedoc-theme/assets/images/icons@2x.png b/docs/typedoc-theme/assets/images/icons@2x.png new file mode 100644 index 00000000..5a209e2f Binary files /dev/null and b/docs/typedoc-theme/assets/images/icons@2x.png differ diff --git a/docs/typedoc-theme/assets/images/widgets.png b/docs/typedoc-theme/assets/images/widgets.png new file mode 100644 index 00000000..c7380532 Binary files /dev/null and b/docs/typedoc-theme/assets/images/widgets.png differ diff --git a/docs/typedoc-theme/assets/images/widgets@2x.png b/docs/typedoc-theme/assets/images/widgets@2x.png new file mode 100644 index 00000000..4bbbd572 Binary files /dev/null and b/docs/typedoc-theme/assets/images/widgets@2x.png differ diff --git a/docs/typedoc-theme/assets/js/main.js b/docs/typedoc-theme/assets/js/main.js new file mode 100644 index 00000000..5fe710b2 --- /dev/null +++ b/docs/typedoc-theme/assets/js/main.js @@ -0,0 +1 @@ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";function x(e){return null!=e&&e===e.window}var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&r|56320)}function oe(){T()}var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){for((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;o--;)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return void 0!==k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;l--;)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(R)||[""]).length;l--;)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,r.left):(a=parseFloat(o)||0,parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0":">",'"':""","'":"'","`":"`"},P=h.invert(L);h.escape=W(L),h.unescape=W(P),h.result=function(n,r,t){h.isArray(r)||(r=[r]);var e=r.length;if(!e)return h.isFunction(t)?t.call(n):t;for(var u=0;u/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};function $(n){return"\\"+U[n]}var J=/(.)^/,U={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},V=/\\|'|\r|\n|\u2028|\u2029/g;h.template=function(i,n,r){!n&&r&&(n=r),n=h.defaults({},n,h.templateSettings);var t,e=RegExp([(n.escape||J).source,(n.interpolate||J).source,(n.evaluate||J).source].join("|")+"|$","g"),o=0,a="__p+='";i.replace(e,function(n,r,t,e,u){return a+=i.slice(o,u).replace(V,$),o=u+n.length,r?a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":t?a+="'+\n((__t=("+t+"))==null?'':__t)+\n'":e&&(a+="';\n"+e+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{t=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}function u(n){return t.call(this,n,h)}var c=n.variable||"obj";return u.source="function("+c+"){\n"+a+"}",u},h.chain=function(n){var r=h(n);return r._chain=!0,r};function G(n,r){return n._chain?h(r).chain():r}h.mixin=function(t){return h.each(h.functions(t),function(n){var r=h[n]=t[n];h.prototype[n]=function(){var n=[this._wrapped];return u.apply(n,arguments),G(this,r.apply(h,n))}}),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(r){var t=e[r];h.prototype[r]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==r&&"splice"!==r||0!==n.length||delete n[0],G(this,n)}}),h.each(["concat","join","slice"],function(n){var r=e[n];h.prototype[n]=function(){return G(this,r.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}(),function(t){var e="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,r){e.Backbone=t(e,r,i,n)});else if("undefined"!=typeof exports){var n,i=require("underscore");try{n=require("jquery")}catch(r){}t(e,exports,i,n)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(function(t,e,i,n){var r=t.Backbone,s=Array.prototype.slice;e.VERSION="1.4.0",e.$=n,e.noConflict=function(){return t.Backbone=r,this},e.emulateHTTP=!1,e.emulateJSON=!1;var h,a=e.Events={},o=/\s+/,u=function(t,e,n,r,s){var h,a=0;if(n&&"object"==typeof n){void 0!==r&&"context"in s&&void 0===s.context&&(s.context=r);for(h=i.keys(n);athis.length&&(r=this.length),r<0&&(r+=this.length+1);var g,m,s=[],a=[],o=[],h=[],u={},l=e.add,c=e.merge,f=e.remove,d=!1,v=this.comparator&&null==r&&!1!==e.sort,p=i.isString(this.comparator)?this.comparator:null;for(m=0;m=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){for(var t,r;47<(r=(t=this.next()).charCodeAt(0))&&r<58;);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos=this.scrollTop||0===this.scrollTop,isShown!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),this.secondaryNav.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop},Viewport}(typedoc.Events);typedoc.Viewport=Viewport,typedoc.registerService(Viewport,"viewport")}(typedoc||(typedoc={})),function(typedoc){typedoc.pointerDown="mousedown",typedoc.pointerMove="mousemove",typedoc.pointerUp="mouseup",typedoc.pointerDownPosition={x:0,y:0},typedoc.preventNextClick=!1,typedoc.isPointerDown=!1,typedoc.isPointerTouch=!1,typedoc.hasPointerMoved=!1,typedoc.isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),typedoc.$html.addClass(typedoc.isMobile?"is-mobile":"not-mobile"),typedoc.isMobile&&"ontouchstart"in document.documentElement&&(typedoc.isPointerTouch=!0,typedoc.pointerDown="touchstart",typedoc.pointerMove="touchmove",typedoc.pointerUp="touchend"),typedoc.$document.on(typedoc.pointerDown,function(e){typedoc.isPointerDown=!0,typedoc.hasPointerMoved=!1;var t="touchstart"==typedoc.pointerDown?e.originalEvent.targetTouches[0]:e;typedoc.pointerDownPosition.y=t.pageY||0,typedoc.pointerDownPosition.x=t.pageX||0}).on(typedoc.pointerMove,function(e){if(typedoc.isPointerDown&&!typedoc.hasPointerMoved){var t="touchstart"==typedoc.pointerDown?e.originalEvent.targetTouches[0]:e,x=typedoc.pointerDownPosition.x-(t.pageX||0),y=typedoc.pointerDownPosition.y-(t.pageY||0);typedoc.hasPointerMoved=10scrollTop;)index-=1;for(;index"+match+""}),parent=row.parent||"";(parent=parent.replace(new RegExp(query,"i"),function(match){return""+match+""}))&&(name=''+parent+"."+name),$results.append('
  • '+name+"
  • ")}}}function setLoadingState(value){loadingState!=value&&($el.removeClass(SearchLoadingState[loadingState].toLowerCase()),loadingState=value,$el.addClass(SearchLoadingState[loadingState].toLowerCase()),value==SearchLoadingState.Ready&&updateResults())}function setHasFocus(value){hasFocus!=value&&(hasFocus=value,$el.toggleClass("has-focus"),value?(setQuery(""),$field.val("")):$field.val(query))}function setQuery(value){query=$.trim(value),updateResults()}function setCurrentResult(dir){var $current=$results.find(".current");if(0==$current.length)$results.find(1==dir?"li:first-child":"li:last-child").addClass("current");else{var $rel=1==dir?$current.next("li"):$current.prev("li");0<$rel.length&&($current.removeClass("current"),$rel.addClass("current"))}}function gotoCurrentResult(){var $current=$results.find(".current");0==$current.length&&($current=$results.find("li:first-child")),0<$current.length&&(window.location.href=$current.find("a").prop("href"),$field.blur())}$results.on("mousedown",function(){resultClicked=!0}).on("mouseup",function(){setHasFocus(resultClicked=!1)}),$field.on("focusin",function(){setHasFocus(!0),loadIndex()}).on("focusout",function(){resultClicked?resultClicked=!1:setTimeout(function(){return setHasFocus(!1)},100)}).on("input",function(){setQuery($.trim(($field.val()||"").toString()))}).on("keydown",function(e){13==e.keyCode||27==e.keyCode||38==e.keyCode||40==e.keyCode?(preventPress=!0,e.preventDefault(),13==e.keyCode?gotoCurrentResult():27==e.keyCode?$field.blur():38==e.keyCode?setCurrentResult(-1):40==e.keyCode&&setCurrentResult(1)):preventPress=!1}).on("keypress",function(e){preventPress&&e.preventDefault()}),$("body").on("keydown",function(e){e.altKey||e.ctrlKey||e.metaKey||!hasFocus&&47this.groups.length-1&&(index=this.groups.length-1),this.index!=index){var to=this.groups[index];if(-1 .tsd-signature");if(!($signatures.length<2)){this.$container=this.$el.siblings(".tsd-descriptions");var $descriptions=this.$container.find("> .tsd-description");this.groups=[],$signatures.each(function(index,el){_this.groups.push(new SignatureGroup($(el),$descriptions.eq(index)))})}},Signature.prototype.onClick=function(e){var _this=this;_(this.groups).forEach(function(group,index){group.$signature.is(e.currentTarget)&&_this.setIndex(index)})},Signature}(Backbone.View);typedoc.registerComponent(Signature,".tsd-signatures")}(typedoc||(typedoc={})),function(typedoc){var Toggle=function(_super){function Toggle(options){var _this=_super.call(this,options)||this;return _this.className=_this.$el.attr("data-toggle")||"",_this.$el.on(typedoc.pointerUp,function(e){return _this.onPointerUp(e)}),_this.$el.on("click",function(e){return e.preventDefault()}),typedoc.$document.on(typedoc.pointerDown,function(e){return _this.onDocumentPointerDown(e)}),typedoc.$document.on(typedoc.pointerUp,function(e){return _this.onDocumentPointerUp(e)}),_this}return __extends(Toggle,_super),Toggle.prototype.setActive=function(value){if(this.active!=value){this.active=value,typedoc.$html.toggleClass("has-"+this.className,value),this.$el.toggleClass("active",value);var transition=(this.active?"to-has-":"from-has-")+this.className;typedoc.$html.addClass(transition),setTimeout(function(){return typedoc.$html.removeClass(transition)},500)}},Toggle.prototype.onPointerUp=function(event){typedoc.hasPointerMoved||(this.setActive(!0),event.preventDefault())},Toggle.prototype.onDocumentPointerDown=function(e){if(this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu"))return;if($path.hasClass("tsd-filter-group"))return;this.setActive(!1)}},Toggle.prototype.onDocumentPointerUp=function(e){var _this=this;if(!typedoc.hasPointerMoved&&this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu")){var $link=$path.filter("a");if($link.length){var href=window.location.href;-1!=href.indexOf("#")&&(href=href.substr(0,href.indexOf("#"))),$link.prop("href").substr(0,href.length)==href&&setTimeout(function(){return _this.setActive(!1)},250)}}}},Toggle}(Backbone.View);typedoc.registerComponent(Toggle,"a[data-toggle]")}(typedoc||(typedoc={})),function(typedoc){typedoc.app=new typedoc.Application}(typedoc||(typedoc={})); \ No newline at end of file diff --git a/docs/typedoc/.nojekyll b/docs/typedoc/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/docs/typedoc/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/typedoc/assets/highlight.css b/docs/typedoc/assets/highlight.css new file mode 100644 index 00000000..c5c90601 --- /dev/null +++ b/docs/typedoc/assets/highlight.css @@ -0,0 +1,113 @@ +:root { + --light-hl-0: #000000; + --dark-hl-0: #D4D4D4; + --light-hl-1: #008000; + --dark-hl-1: #6A9955; + --light-hl-2: #795E26; + --dark-hl-2: #DCDCAA; + --light-hl-3: #0000FF; + --dark-hl-3: #569CD6; + --light-hl-4: #0070C1; + --dark-hl-4: #4FC1FF; + --light-hl-5: #A31515; + --dark-hl-5: #CE9178; + --light-hl-6: #001080; + --dark-hl-6: #9CDCFE; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; + --light-hl-8: #098658; + --dark-hl-8: #B5CEA8; + --light-hl-9: #000000FF; + --dark-hl-9: #D4D4D4; + --light-hl-10: #267F99; + --dark-hl-10: #4EC9B0; + --light-hl-11: #EE0000; + --dark-hl-11: #D7BA7D; + --light-hl-12: #811F3F; + --dark-hl-12: #D16969; + --light-code-background: #F5F5F5; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --code-background: var(--dark-code-background); +} } + +body.light { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --code-background: var(--light-code-background); +} + +body.dark { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +.hl-11 { color: var(--hl-11); } +.hl-12 { color: var(--hl-12); } +pre, code { background: var(--code-background); } diff --git a/docs/typedoc/assets/icons.css b/docs/typedoc/assets/icons.css new file mode 100644 index 00000000..776a3562 --- /dev/null +++ b/docs/typedoc/assets/icons.css @@ -0,0 +1,1043 @@ +.tsd-kind-icon { + display: block; + position: relative; + padding-left: 20px; + text-indent: -20px; +} +.tsd-kind-icon:before { + content: ""; + display: inline-block; + vertical-align: middle; + width: 17px; + height: 17px; + margin: 0 3px 2px 0; + background-image: url(./icons.png); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-kind-icon:before { + background-image: url(./icons@2x.png); + background-size: 238px 204px; + } +} + +.tsd-signature.tsd-kind-icon:before { + background-position: 0 -153px; +} + +.tsd-kind-object-literal > .tsd-kind-icon:before { + background-position: 0px -17px; +} +.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -17px; +} +.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -17px; +} + +.tsd-kind-class > .tsd-kind-icon:before { + background-position: 0px -34px; +} +.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -34px; +} +.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -34px; +} + +.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -51px; +} +.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -17px -51px; +} +.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -51px; +} + +.tsd-kind-interface > .tsd-kind-icon:before { + background-position: 0px -68px; +} +.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -68px; +} +.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -68px; +} + +.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -85px; +} +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -17px -85px; +} +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private + > .tsd-kind-icon:before { + background-position: -34px -85px; +} + +.tsd-kind-namespace > .tsd-kind-icon:before { + background-position: 0px -102px; +} +.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; +} +.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; +} + +.tsd-kind-module > .tsd-kind-icon:before { + background-position: 0px -102px; +} +.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; +} +.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; +} + +.tsd-kind-enum > .tsd-kind-icon:before { + background-position: 0px -119px; +} +.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -119px; +} +.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -119px; +} + +.tsd-kind-enum-member > .tsd-kind-icon:before { + background-position: 0px -136px; +} +.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -136px; +} +.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -136px; +} + +.tsd-kind-signature > .tsd-kind-icon:before { + background-position: 0px -153px; +} +.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -153px; +} +.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -153px; +} + +.tsd-kind-type-alias > .tsd-kind-icon:before { + background-position: 0px -170px; +} +.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -170px; +} +.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -170px; +} + +.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -187px; +} +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -17px -187px; +} +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private + > .tsd-kind-icon:before { + background-position: -34px -187px; +} + +.tsd-kind-variable > .tsd-kind-icon:before { + background-position: -136px -0px; +} +.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; +} +.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; +} +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -0px; +} +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; +} +.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -0px; +} + +.tsd-kind-property > .tsd-kind-icon:before { + background-position: -136px -0px; +} +.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; +} +.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; +} +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -0px; +} +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; +} +.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -0px; +} + +.tsd-kind-get-signature > .tsd-kind-icon:before { + background-position: -136px -17px; +} +.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -17px; +} +.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -17px; +} + +.tsd-kind-set-signature > .tsd-kind-icon:before { + background-position: -136px -34px; +} +.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -34px; +} +.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -34px; +} + +.tsd-kind-accessor > .tsd-kind-icon:before { + background-position: -136px -51px; +} +.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -51px; +} +.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -51px; +} + +.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -68px; +} +.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; +} +.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; +} +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -68px; +} +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; +} +.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -68px; +} + +.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -68px; +} +.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; +} +.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; +} +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; +} +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; +} +.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -68px; +} + +.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -68px; +} +.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; +} +.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -68px; +} + +.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -153px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class + > .tsd-kind-icon:before { + background-position: -51px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum + > .tsd-kind-icon:before { + background-position: -170px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -85px; +} + +.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -153px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class + > .tsd-kind-icon:before { + background-position: -51px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum + > .tsd-kind-icon:before { + background-position: -170px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -85px; +} + +.tsd-kind-constructor > .tsd-kind-icon:before { + background-position: -136px -102px; +} +.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; +} +.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -102px; +} + +.tsd-kind-constructor-signature > .tsd-kind-icon:before { + background-position: -136px -102px; +} +.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; +} +.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -102px; +} + +.tsd-kind-index-signature > .tsd-kind-icon:before { + background-position: -136px -119px; +} +.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -119px; +} +.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -119px; +} + +.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -136px; +} +.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -136px; +} +.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; +} +.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; +} +.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -136px; +} +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -136px; +} +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; +} +.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -136px; +} +.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -136px; +} + +.tsd-is-static > .tsd-kind-icon:before { + background-position: -136px -153px; +} +.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -153px; +} +.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; +} +.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; +} +.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -153px; +} +.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -153px; +} +.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; +} +.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -153px; +} +.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -153px; +} + +.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -170px; +} + +.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -170px; +} + +.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -153px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class + > .tsd-kind-icon:before { + background-position: -51px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum + > .tsd-kind-icon:before { + background-position: -170px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -170px; +} + +.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -68px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -85px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -102px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected + > .tsd-kind-icon:before { + background-position: -187px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private + > .tsd-kind-icon:before { + background-position: -119px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface + > .tsd-kind-icon:before { + background-position: -204px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited + > .tsd-kind-icon:before { + background-position: -221px -187px; +} diff --git a/docs/typedoc/assets/icons.png b/docs/typedoc/assets/icons.png new file mode 100644 index 00000000..3836d5fe Binary files /dev/null and b/docs/typedoc/assets/icons.png differ diff --git a/docs/typedoc/assets/icons@2x.png b/docs/typedoc/assets/icons@2x.png new file mode 100644 index 00000000..5a209e2f Binary files /dev/null and b/docs/typedoc/assets/icons@2x.png differ diff --git a/docs/typedoc/assets/main.js b/docs/typedoc/assets/main.js new file mode 100644 index 00000000..bd45452d --- /dev/null +++ b/docs/typedoc/assets/main.js @@ -0,0 +1,52 @@ +(()=>{var Ce=Object.create;var ue=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t};var Fe=(t,e,r)=>(r=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ue(r,"default",{value:t,enumerable:!0}):r,t));var pe=Me((de,fe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,u],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?h+=2:a==l&&(r+=n[u+1]*i[h+1],u+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof de=="object"?fe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ce=[];function N(t,e){ce.push({selector:e,constructor:t})}var Y=class{constructor(){this.createComponents(document.body)}createComponents(e){ce.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var k=class{constructor(e){this.el=e.el}};var J=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ie=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onScroll(){this.scrollTop=window.scrollY||0;let r=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(r),this.hideShowToolbar()}hideShowToolbar(){var n;let r=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,r!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(n=this.secondaryNav)==null||n.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},Q=ie;Q.instance=new ie;var X=class extends k{constructor(r){super(r);this.anchors=[];this.index=-1;Q.instance.addEventListener("resize",()=>this.onResize()),Q.instance.addEventListener("scroll",n=>this.onScroll(n)),this.createAnchors()}createAnchors(){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substr(0,r.indexOf("#"))),this.el.querySelectorAll("a").forEach(n=>{let i=n.href;if(i.indexOf("#")==-1||i.substr(0,r.length)!=r)return;let s=i.substr(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=n.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let r;for(let i=0,s=this.anchors.length;ii.position-s.position);let n=new CustomEvent("scroll",{detail:{scrollTop:Q.instance.scrollTop}});this.onScroll(n)}onScroll(r){let n=r.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>n;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var he=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var ge=Fe(pe());function ye(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ae(t,n,r,s)}function Ae(t,e,r,n){r.addEventListener("input",he(()=>{He(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?ze(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function Ve(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ge.Index.load(window.searchData.index))}function He(t,e,r,n){var o,a;if(Ve(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let l=0;lu.score-l.score);for(let l=0,u=Math.min(10,s.length);l${ve(h.parent,i)}.${f}`);let p=document.createElement("li");p.classList.value=(a=h.classes)!=null?a:"";let E=document.createElement("a");E.href=n.base+h.url,E.classList.add("tsd-kind-icon"),E.innerHTML=f,p.append(E),e.appendChild(p)}}function me(t,e){var n,i;let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let s=r;if(e===1)do s=(n=s.nextElementSibling)!=null?n:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);else do s=(i=s.previousElementSibling)!=null?i:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);s&&(r.classList.remove("current"),s.classList.add("current"))}}function ze(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(se(t.substring(s,o)),`${se(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(se(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function se(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var oe=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},Z=class extends k{constructor(r){super(r);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(n=>{n.addEventListener("touchstart",i=>this.onClick(i)),n.addEventListener("click",i=>this.onClick(i))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(r){if(r<0&&(r=0),r>this.groups.length-1&&(r=this.groups.length-1),this.index==r)return;let n=this.groups[r];if(this.index>-1){let i=this.groups[this.index];i.removeClass("current").addClass("fade-out"),n.addClass("current"),n.addClass("fade-in"),Q.instance.triggerResize(),setTimeout(()=>{i.removeClass("fade-out"),n.removeClass("fade-in")},300)}else n.addClass("current"),Q.instance.triggerResize();this.index=r}createGroups(){let r=this.el.children;if(r.length<2)return;this.container=this.el.nextElementSibling;let n=this.container.children;this.groups=[];for(let i=0;i{n.signature===r.currentTarget&&this.setIndex(i)})}};var C="mousedown",Le="mousemove",_="mouseup",K={x:0,y:0},xe=!1,ae=!1,je=!1,A=!1,Ee=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Ee?"is-mobile":"not-mobile");Ee&&"ontouchstart"in document.documentElement&&(je=!0,C="touchstart",Le="touchmove",_="touchend");document.addEventListener(C,t=>{ae=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;K.y=e.pageY||0,K.x=e.pageX||0});document.addEventListener(Le,t=>{if(!!ae&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=K.x-(e.pageX||0),n=K.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ae=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var ee=class extends k{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(C,n=>this.onDocumentPointerDown(n)),document.addEventListener(_,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){A||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!A&&this.active&&r.target.closest(".col-menu")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),n.href.substr(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},re=class extends te{initialize(){let r=document.querySelector("#tsd-filter-"+this.key);!r||(this.checkbox=r,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(r,n){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(r){return r=="true"}toLocalStorage(r){return r?"true":"false"}},le=class extends te{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let r=document.querySelector("#tsd-filter-"+this.key);if(!r)return;this.select=r;let n=()=>{this.select.classList.add("active")},i=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,n),this.select.addEventListener("mouseover",n),this.select.addEventListener("mouseleave",i),this.select.querySelectorAll("li").forEach(s=>{s.addEventListener(_,o=>{r.classList.remove("active"),this.setValue(o.target.dataset.value||"")})}),document.addEventListener(C,s=>{this.select.contains(s.target)||this.select.classList.remove("active")})}handleValueChange(r,n){this.select.querySelectorAll("li.selected").forEach(o=>{o.classList.remove("selected")});let i=this.select.querySelector('li[data-value="'+n+'"]'),s=this.select.querySelector(".tsd-select-label");i&&s&&(i.classList.add("selected"),s.textContent=i.textContent),document.documentElement.classList.remove("toggle-"+r),document.documentElement.classList.add("toggle-"+n)}fromLocalStorage(r){return r}toLocalStorage(r){return r}},j=class extends k{constructor(r){super(r);this.optionVisibility=new le("visibility","private"),this.optionInherited=new re("inherited",!0),this.optionExternals=new re("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function we(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,be(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),be(t.value)})}function be(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}ye();N(X,".menu-highlight");N(Z,".tsd-signatures");N(ee,"a[data-toggle]");j.isSupported()?N(j,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&we(Te);var Be=new Y;Object.defineProperty(window,"app",{value:Be});})(); +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ diff --git a/docs/typedoc/assets/search.js b/docs/typedoc/assets/search.js new file mode 100644 index 00000000..2d32699f --- /dev/null +++ b/docs/typedoc/assets/search.js @@ -0,0 +1 @@ +window.searchData = JSON.parse("{\"kinds\":{\"2\":\"Module\",\"4\":\"Namespace\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\",\"16777216\":\"Reference\"},\"rows\":[{\"id\":0,\"kind\":2,\"name\":\"Client\",\"url\":\"modules/Client.html\",\"classes\":\"tsd-kind-module\"},{\"id\":1,\"kind\":128,\"name\":\"default\",\"url\":\"classes/Client.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"Client\"},{\"id\":2,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Client.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":3,\"kind\":1024,\"name\":\"state\",\"url\":\"classes/Client.default.html#state\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":4,\"kind\":1024,\"name\":\"environment\",\"url\":\"classes/Client.default.html#environment\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":5,\"kind\":1024,\"name\":\"patient\",\"url\":\"classes/Client.default.html#patient\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":6,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Client.default.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":7,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Client.default.html#__type-1.id-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":8,\"kind\":1024,\"name\":\"read\",\"url\":\"classes/Client.default.html#__type-1.read-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":9,\"kind\":2048,\"name\":\"request\",\"url\":\"classes/Client.default.html#__type-1.request\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal tsd-has-type-parameter\",\"parent\":\"Client.default.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"api\",\"url\":\"classes/Client.default.html#__type-1.api-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":11,\"kind\":1024,\"name\":\"encounter\",\"url\":\"classes/Client.default.html#encounter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":12,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Client.default.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":13,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Client.default.html#__type.id\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":14,\"kind\":1024,\"name\":\"read\",\"url\":\"classes/Client.default.html#__type.read\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":15,\"kind\":1024,\"name\":\"user\",\"url\":\"classes/Client.default.html#user\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":16,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Client.default.html#__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":17,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Client.default.html#__type-3.id-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":18,\"kind\":1024,\"name\":\"read\",\"url\":\"classes/Client.default.html#__type-3.read-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":19,\"kind\":1024,\"name\":\"fhirUser\",\"url\":\"classes/Client.default.html#__type-3.fhirUser\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":20,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"classes/Client.default.html#__type-3.resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":21,\"kind\":1024,\"name\":\"api\",\"url\":\"classes/Client.default.html#api\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":22,\"kind\":1024,\"name\":\"_refreshTask\",\"url\":\"classes/Client.default.html#_refreshTask\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Client.default\"},{\"id\":23,\"kind\":2048,\"name\":\"connect\",\"url\":\"classes/Client.default.html#connect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":24,\"kind\":2048,\"name\":\"getPatientId\",\"url\":\"classes/Client.default.html#getPatientId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":25,\"kind\":2048,\"name\":\"getEncounterId\",\"url\":\"classes/Client.default.html#getEncounterId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":26,\"kind\":2048,\"name\":\"getIdToken\",\"url\":\"classes/Client.default.html#getIdToken\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":27,\"kind\":2048,\"name\":\"getFhirUser\",\"url\":\"classes/Client.default.html#getFhirUser\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":28,\"kind\":2048,\"name\":\"getUserId\",\"url\":\"classes/Client.default.html#getUserId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":29,\"kind\":2048,\"name\":\"getUserType\",\"url\":\"classes/Client.default.html#getUserType\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":30,\"kind\":2048,\"name\":\"getAuthorizationHeader\",\"url\":\"classes/Client.default.html#getAuthorizationHeader\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":31,\"kind\":2048,\"name\":\"_clearState\",\"url\":\"classes/Client.default.html#_clearState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Client.default\"},{\"id\":32,\"kind\":2048,\"name\":\"create\",\"url\":\"classes/Client.default.html#create\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Client.default\"},{\"id\":33,\"kind\":2048,\"name\":\"update\",\"url\":\"classes/Client.default.html#update\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Client.default\"},{\"id\":34,\"kind\":2048,\"name\":\"delete\",\"url\":\"classes/Client.default.html#delete\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Client.default\"},{\"id\":35,\"kind\":2048,\"name\":\"patch\",\"url\":\"classes/Client.default.html#patch\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Client.default\"},{\"id\":36,\"kind\":2048,\"name\":\"request\",\"url\":\"classes/Client.default.html#request-1\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Client.default\"},{\"id\":37,\"kind\":2048,\"name\":\"refreshIfNeeded\",\"url\":\"classes/Client.default.html#refreshIfNeeded\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":38,\"kind\":2048,\"name\":\"refresh\",\"url\":\"classes/Client.default.html#refresh\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":39,\"kind\":2048,\"name\":\"byCode\",\"url\":\"classes/Client.default.html#byCode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":40,\"kind\":2048,\"name\":\"byCodes\",\"url\":\"classes/Client.default.html#byCodes\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":41,\"kind\":1024,\"name\":\"units\",\"url\":\"classes/Client.default.html#units\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":42,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Client.default.html#__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":43,\"kind\":2048,\"name\":\"cm\",\"url\":\"classes/Client.default.html#__type-2.cm\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":44,\"kind\":2048,\"name\":\"kg\",\"url\":\"classes/Client.default.html#__type-2.kg\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":45,\"kind\":2048,\"name\":\"any\",\"url\":\"classes/Client.default.html#__type-2.any\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"Client.default.__type\"},{\"id\":46,\"kind\":2048,\"name\":\"getPath\",\"url\":\"classes/Client.default.html#getPath\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":47,\"kind\":2048,\"name\":\"getState\",\"url\":\"classes/Client.default.html#getState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":48,\"kind\":2048,\"name\":\"getFhirVersion\",\"url\":\"classes/Client.default.html#getFhirVersion\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":49,\"kind\":2048,\"name\":\"getFhirRelease\",\"url\":\"classes/Client.default.html#getFhirRelease\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client.default\"},{\"id\":50,\"kind\":2,\"name\":\"HttpError\",\"url\":\"modules/HttpError.html\",\"classes\":\"tsd-kind-module\"},{\"id\":51,\"kind\":128,\"name\":\"default\",\"url\":\"classes/HttpError.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"HttpError\"},{\"id\":52,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/HttpError.default.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":53,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/HttpError.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"HttpError.default\"},{\"id\":54,\"kind\":1024,\"name\":\"statusCode\",\"url\":\"classes/HttpError.default.html#statusCode\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":55,\"kind\":1024,\"name\":\"status\",\"url\":\"classes/HttpError.default.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":56,\"kind\":1024,\"name\":\"statusText\",\"url\":\"classes/HttpError.default.html#statusText\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":57,\"kind\":1024,\"name\":\"response\",\"url\":\"classes/HttpError.default.html#response\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":58,\"kind\":2048,\"name\":\"parse\",\"url\":\"classes/HttpError.default.html#parse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":59,\"kind\":2048,\"name\":\"toJSON\",\"url\":\"classes/HttpError.default.html#toJSON\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"HttpError.default\"},{\"id\":60,\"kind\":2,\"name\":\"abortcontroller-polyfill\",\"url\":\"modules/abortcontroller_polyfill.html\",\"classes\":\"tsd-kind-module\"},{\"id\":61,\"kind\":4,\"name\":\"\\\"abortcontroller-polyfill/dist/cjs-ponyfill\\\"\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html\",\"classes\":\"tsd-kind-namespace tsd-parent-kind-module\",\"parent\":\"abortcontroller-polyfill\"},{\"id\":62,\"kind\":32,\"name\":\"AbortController\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html#AbortController\",\"classes\":\"tsd-kind-variable tsd-parent-kind-namespace\",\"parent\":\"abortcontroller-polyfill.\\\"abortcontroller-polyfill/dist/cjs-ponyfill\\\"\"},{\"id\":63,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html#AbortController.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"abortcontroller-polyfill.\\\"abortcontroller-polyfill/dist/cjs-ponyfill\\\".AbortController\"},{\"id\":64,\"kind\":1024,\"name\":\"prototype\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html#AbortController.__type.prototype\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"abortcontroller-polyfill.\\\"abortcontroller-polyfill/dist/cjs-ponyfill\\\".AbortController.__type\"},{\"id\":65,\"kind\":4,\"name\":\"\\\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\\\"\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html\",\"classes\":\"tsd-kind-namespace tsd-parent-kind-module\",\"parent\":\"abortcontroller-polyfill\"},{\"id\":66,\"kind\":32,\"name\":\"AbortController\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html#AbortController\",\"classes\":\"tsd-kind-variable tsd-parent-kind-namespace\",\"parent\":\"abortcontroller-polyfill.\\\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\\\"\"},{\"id\":67,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html#AbortController.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"abortcontroller-polyfill.\\\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\\\".AbortController\"},{\"id\":68,\"kind\":1024,\"name\":\"prototype\",\"url\":\"modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html#AbortController.__type.prototype\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"abortcontroller-polyfill.\\\"abortcontroller-polyfill/dist/abortcontroller-polyfill-only\\\".AbortController.__type\"},{\"id\":69,\"kind\":2,\"name\":\"adapters/BrowserAdapter\",\"url\":\"modules/adapters_BrowserAdapter.html\",\"classes\":\"tsd-kind-module\"},{\"id\":70,\"kind\":128,\"name\":\"default\",\"url\":\"classes/adapters_BrowserAdapter.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"adapters/BrowserAdapter\"},{\"id\":71,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/adapters_BrowserAdapter.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":72,\"kind\":1024,\"name\":\"_url\",\"url\":\"classes/adapters_BrowserAdapter.default.html#_url\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":73,\"kind\":1024,\"name\":\"_storage\",\"url\":\"classes/adapters_BrowserAdapter.default.html#_storage\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":74,\"kind\":1024,\"name\":\"options\",\"url\":\"classes/adapters_BrowserAdapter.default.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":75,\"kind\":1024,\"name\":\"security\",\"url\":\"classes/adapters_BrowserAdapter.default.html#security\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":76,\"kind\":2048,\"name\":\"relative\",\"url\":\"classes/adapters_BrowserAdapter.default.html#relative\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":77,\"kind\":262144,\"name\":\"fhir\",\"url\":\"classes/adapters_BrowserAdapter.default.html#fhir\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":78,\"kind\":2048,\"name\":\"getUrl\",\"url\":\"classes/adapters_BrowserAdapter.default.html#getUrl\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":79,\"kind\":2048,\"name\":\"redirect\",\"url\":\"classes/adapters_BrowserAdapter.default.html#redirect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":80,\"kind\":2048,\"name\":\"getStorage\",\"url\":\"classes/adapters_BrowserAdapter.default.html#getStorage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":81,\"kind\":2048,\"name\":\"getAbortController\",\"url\":\"classes/adapters_BrowserAdapter.default.html#getAbortController\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":82,\"kind\":2048,\"name\":\"atob\",\"url\":\"classes/adapters_BrowserAdapter.default.html#atob\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":83,\"kind\":2048,\"name\":\"btoa\",\"url\":\"classes/adapters_BrowserAdapter.default.html#btoa\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":84,\"kind\":2048,\"name\":\"base64urlencode\",\"url\":\"classes/adapters_BrowserAdapter.default.html#base64urlencode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":85,\"kind\":2048,\"name\":\"base64urldecode\",\"url\":\"classes/adapters_BrowserAdapter.default.html#base64urldecode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":86,\"kind\":2048,\"name\":\"getSmartApi\",\"url\":\"classes/adapters_BrowserAdapter.default.html#getSmartApi\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/BrowserAdapter.default\"},{\"id\":87,\"kind\":2,\"name\":\"adapters/HapiAdapter\",\"url\":\"modules/adapters_HapiAdapter.html\",\"classes\":\"tsd-kind-module\"},{\"id\":88,\"kind\":128,\"name\":\"default\",\"url\":\"classes/adapters_HapiAdapter.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"adapters/HapiAdapter\"},{\"id\":89,\"kind\":2048,\"name\":\"smart\",\"url\":\"classes/adapters_HapiAdapter.default.html#smart\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-static\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":90,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/adapters_HapiAdapter.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":91,\"kind\":1024,\"name\":\"_responseToolkit\",\"url\":\"classes/adapters_HapiAdapter.default.html#_responseToolkit\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":92,\"kind\":1024,\"name\":\"_request\",\"url\":\"classes/adapters_HapiAdapter.default.html#_request\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":93,\"kind\":1024,\"name\":\"_storage\",\"url\":\"classes/adapters_HapiAdapter.default.html#_storage\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-protected\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":94,\"kind\":2048,\"name\":\"getStorage\",\"url\":\"classes/adapters_HapiAdapter.default.html#getStorage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":95,\"kind\":2048,\"name\":\"redirect\",\"url\":\"classes/adapters_HapiAdapter.default.html#redirect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":96,\"kind\":1024,\"name\":\"options\",\"url\":\"classes/adapters_HapiAdapter.default.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":97,\"kind\":1024,\"name\":\"security\",\"url\":\"classes/adapters_HapiAdapter.default.html#security\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":98,\"kind\":2048,\"name\":\"relative\",\"url\":\"classes/adapters_HapiAdapter.default.html#relative\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":99,\"kind\":2048,\"name\":\"getProtocol\",\"url\":\"classes/adapters_HapiAdapter.default.html#getProtocol\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":100,\"kind\":2048,\"name\":\"getUrl\",\"url\":\"classes/adapters_HapiAdapter.default.html#getUrl\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":101,\"kind\":2048,\"name\":\"btoa\",\"url\":\"classes/adapters_HapiAdapter.default.html#btoa\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":102,\"kind\":2048,\"name\":\"atob\",\"url\":\"classes/adapters_HapiAdapter.default.html#atob\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":103,\"kind\":2048,\"name\":\"base64urlencode\",\"url\":\"classes/adapters_HapiAdapter.default.html#base64urlencode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":104,\"kind\":2048,\"name\":\"base64urldecode\",\"url\":\"classes/adapters_HapiAdapter.default.html#base64urldecode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":105,\"kind\":2048,\"name\":\"getAbortController\",\"url\":\"classes/adapters_HapiAdapter.default.html#getAbortController\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":106,\"kind\":2048,\"name\":\"getSmartApi\",\"url\":\"classes/adapters_HapiAdapter.default.html#getSmartApi\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"adapters/HapiAdapter.default\"},{\"id\":107,\"kind\":2,\"name\":\"adapters/NodeAdapter\",\"url\":\"modules/adapters_NodeAdapter.html\",\"classes\":\"tsd-kind-module\"},{\"id\":108,\"kind\":128,\"name\":\"default\",\"url\":\"classes/adapters_NodeAdapter.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"adapters/NodeAdapter\"},{\"id\":109,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/adapters_NodeAdapter.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":110,\"kind\":1024,\"name\":\"_storage\",\"url\":\"classes/adapters_NodeAdapter.default.html#_storage\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":111,\"kind\":1024,\"name\":\"options\",\"url\":\"classes/adapters_NodeAdapter.default.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":112,\"kind\":1024,\"name\":\"security\",\"url\":\"classes/adapters_NodeAdapter.default.html#security\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":113,\"kind\":2048,\"name\":\"relative\",\"url\":\"classes/adapters_NodeAdapter.default.html#relative\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":114,\"kind\":2048,\"name\":\"getProtocol\",\"url\":\"classes/adapters_NodeAdapter.default.html#getProtocol\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":115,\"kind\":2048,\"name\":\"getUrl\",\"url\":\"classes/adapters_NodeAdapter.default.html#getUrl\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":116,\"kind\":2048,\"name\":\"redirect\",\"url\":\"classes/adapters_NodeAdapter.default.html#redirect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":117,\"kind\":2048,\"name\":\"getStorage\",\"url\":\"classes/adapters_NodeAdapter.default.html#getStorage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":118,\"kind\":2048,\"name\":\"btoa\",\"url\":\"classes/adapters_NodeAdapter.default.html#btoa\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":119,\"kind\":2048,\"name\":\"atob\",\"url\":\"classes/adapters_NodeAdapter.default.html#atob\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":120,\"kind\":2048,\"name\":\"base64urlencode\",\"url\":\"classes/adapters_NodeAdapter.default.html#base64urlencode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":121,\"kind\":2048,\"name\":\"base64urldecode\",\"url\":\"classes/adapters_NodeAdapter.default.html#base64urldecode\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":122,\"kind\":2048,\"name\":\"getAbortController\",\"url\":\"classes/adapters_NodeAdapter.default.html#getAbortController\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":123,\"kind\":2048,\"name\":\"getSmartApi\",\"url\":\"classes/adapters_NodeAdapter.default.html#getSmartApi\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"adapters/NodeAdapter.default\"},{\"id\":124,\"kind\":2,\"name\":\"entry/browser\",\"url\":\"modules/entry_browser.html\",\"classes\":\"tsd-kind-module\"},{\"id\":125,\"kind\":32,\"name\":\"export=\",\"url\":\"modules/entry_browser.html#export_\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"entry/browser\"},{\"id\":126,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"entry/browser.export=\"},{\"id\":127,\"kind\":1024,\"name\":\"AbortController\",\"url\":\"modules/entry_browser.html#export_.__type.AbortController\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":128,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":129,\"kind\":1024,\"name\":\"client\",\"url\":\"modules/entry_browser.html#export_.__type.client\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":130,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":131,\"kind\":1024,\"name\":\"utils\",\"url\":\"modules/entry_browser.html#export_.__type.utils\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":132,\"kind\":1024,\"name\":\"oauth2\",\"url\":\"modules/entry_browser.html#export_.__type.oauth2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":133,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type\"},{\"id\":134,\"kind\":1024,\"name\":\"settings\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.settings\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":135,\"kind\":1024,\"name\":\"ready\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.ready\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":136,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.__type-6\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":137,\"kind\":1024,\"name\":\"authorize\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.authorize\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":138,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":139,\"kind\":1024,\"name\":\"init\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.init\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":140,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_browser.html#export_.__type.__type-3.__type-5\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"entry/browser.export=.__type.__type\"},{\"id\":141,\"kind\":2,\"name\":\"entry/hapi\",\"url\":\"modules/entry_hapi.html\",\"classes\":\"tsd-kind-module\"},{\"id\":142,\"kind\":64,\"name\":\"export=\",\"url\":\"modules/entry_hapi.html#export_-1\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"entry/hapi\"},{\"id\":143,\"kind\":4,\"name\":\"export=\",\"url\":\"modules/entry_hapi.export_.html\",\"classes\":\"tsd-kind-namespace tsd-parent-kind-module\",\"parent\":\"entry/hapi\"},{\"id\":144,\"kind\":32,\"name\":\"AbortController\",\"url\":\"modules/entry_hapi.export_.html#AbortController\",\"classes\":\"tsd-kind-variable tsd-parent-kind-namespace\",\"parent\":\"entry/hapi.export=\"},{\"id\":145,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_hapi.export_.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-namespace\",\"parent\":\"entry/hapi.export=\"},{\"id\":146,\"kind\":1024,\"name\":\"prototype\",\"url\":\"modules/entry_hapi.export_.html#__type.prototype\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"entry/hapi.export=.__type\"},{\"id\":147,\"kind\":2,\"name\":\"entry/node\",\"url\":\"modules/entry_node.html\",\"classes\":\"tsd-kind-module\"},{\"id\":148,\"kind\":64,\"name\":\"export=\",\"url\":\"modules/entry_node.html#export_-1\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"entry/node\"},{\"id\":149,\"kind\":4,\"name\":\"export=\",\"url\":\"modules/entry_node.export_.html\",\"classes\":\"tsd-kind-namespace tsd-parent-kind-module\",\"parent\":\"entry/node\"},{\"id\":150,\"kind\":32,\"name\":\"AbortController\",\"url\":\"modules/entry_node.export_.html#AbortController\",\"classes\":\"tsd-kind-variable tsd-parent-kind-namespace\",\"parent\":\"entry/node.export=\"},{\"id\":151,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/entry_node.export_.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-namespace\",\"parent\":\"entry/node.export=\"},{\"id\":152,\"kind\":2,\"name\":\"lib\",\"url\":\"modules/lib.html\",\"classes\":\"tsd-kind-module\"},{\"id\":153,\"kind\":64,\"name\":\"checkResponse\",\"url\":\"modules/lib.html#checkResponse\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":154,\"kind\":64,\"name\":\"responseToJSON\",\"url\":\"modules/lib.html#responseToJSON\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":155,\"kind\":64,\"name\":\"loweCaseKeys\",\"url\":\"modules/lib.html#loweCaseKeys\",\"classes\":\"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib\"},{\"id\":156,\"kind\":64,\"name\":\"request\",\"url\":\"modules/lib.html#request\",\"classes\":\"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib\"},{\"id\":157,\"kind\":64,\"name\":\"getAndCache\",\"url\":\"modules/lib.html#getAndCache\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":158,\"kind\":64,\"name\":\"fetchConformanceStatement\",\"url\":\"modules/lib.html#fetchConformanceStatement\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":159,\"kind\":64,\"name\":\"getPath\",\"url\":\"modules/lib.html#getPath\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":160,\"kind\":64,\"name\":\"setPath\",\"url\":\"modules/lib.html#setPath\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":161,\"kind\":64,\"name\":\"makeArray\",\"url\":\"modules/lib.html#makeArray\",\"classes\":\"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter\",\"parent\":\"lib\"},{\"id\":162,\"kind\":64,\"name\":\"absolute\",\"url\":\"modules/lib.html#absolute\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":163,\"kind\":64,\"name\":\"randomString\",\"url\":\"modules/lib.html#randomString\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":164,\"kind\":64,\"name\":\"jwtDecode\",\"url\":\"modules/lib.html#jwtDecode\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":165,\"kind\":64,\"name\":\"getTimeInFuture\",\"url\":\"modules/lib.html#getTimeInFuture\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":166,\"kind\":64,\"name\":\"getAccessTokenExpiration\",\"url\":\"modules/lib.html#getAccessTokenExpiration\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":167,\"kind\":64,\"name\":\"byCode\",\"url\":\"modules/lib.html#byCode\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":168,\"kind\":64,\"name\":\"byCodes\",\"url\":\"modules/lib.html#byCodes\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":169,\"kind\":64,\"name\":\"getPatientParam\",\"url\":\"modules/lib.html#getPatientParam\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":170,\"kind\":64,\"name\":\"getTargetWindow\",\"url\":\"modules/lib.html#getTargetWindow\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":171,\"kind\":64,\"name\":\"assert\",\"url\":\"modules/lib.html#assert\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":172,\"kind\":64,\"name\":\"assertJsonPatch\",\"url\":\"modules/lib.html#assertJsonPatch\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":173,\"kind\":32,\"name\":\"debug\",\"url\":\"modules/lib.html#debug\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":174,\"kind\":32,\"name\":\"units\",\"url\":\"modules/lib.html#units\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"lib\"},{\"id\":175,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/lib.html#units.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"lib.units\"},{\"id\":176,\"kind\":2048,\"name\":\"cm\",\"url\":\"modules/lib.html#units.__type.cm\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"lib.units.__type\"},{\"id\":177,\"kind\":2048,\"name\":\"kg\",\"url\":\"modules/lib.html#units.__type.kg\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"lib.units.__type\"},{\"id\":178,\"kind\":2048,\"name\":\"any\",\"url\":\"modules/lib.html#units.__type.any\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"lib.units.__type\"},{\"id\":179,\"kind\":2,\"name\":\"security/browser\",\"url\":\"modules/security_browser.html\",\"classes\":\"tsd-kind-module\"},{\"id\":180,\"kind\":64,\"name\":\"randomBytes\",\"url\":\"modules/security_browser.html#randomBytes\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/browser\"},{\"id\":181,\"kind\":64,\"name\":\"digestSha256\",\"url\":\"modules/security_browser.html#digestSha256\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/browser\"},{\"id\":182,\"kind\":64,\"name\":\"importJWK\",\"url\":\"modules/security_browser.html#importJWK\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/browser\"},{\"id\":183,\"kind\":64,\"name\":\"signCompactJws\",\"url\":\"modules/security_browser.html#signCompactJws\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/browser\"},{\"id\":184,\"kind\":64,\"name\":\"generatePKCEChallenge\",\"url\":\"modules/security_browser.html#generatePKCEChallenge\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/browser\"},{\"id\":185,\"kind\":2,\"name\":\"security/server\",\"url\":\"modules/security_server.html\",\"classes\":\"tsd-kind-module\"},{\"id\":186,\"kind\":64,\"name\":\"digestSha256\",\"url\":\"modules/security_server.html#digestSha256\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/server\"},{\"id\":187,\"kind\":64,\"name\":\"generatePKCEChallenge\",\"url\":\"modules/security_server.html#generatePKCEChallenge\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/server\"},{\"id\":188,\"kind\":64,\"name\":\"importJWK\",\"url\":\"modules/security_server.html#importJWK\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/server\"},{\"id\":189,\"kind\":64,\"name\":\"signCompactJws\",\"url\":\"modules/security_server.html#signCompactJws\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"security/server\"},{\"id\":190,\"kind\":2,\"name\":\"settings\",\"url\":\"modules/settings.html\",\"classes\":\"tsd-kind-module\"},{\"id\":191,\"kind\":32,\"name\":\"patientCompartment\",\"url\":\"modules/settings.html#patientCompartment\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"settings\"},{\"id\":192,\"kind\":32,\"name\":\"fhirVersions\",\"url\":\"modules/settings.html#fhirVersions\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"settings\"},{\"id\":193,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/settings.html#fhirVersions.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"settings.fhirVersions\"},{\"id\":194,\"kind\":1024,\"name\":\"0.4.0\",\"url\":\"modules/settings.html#fhirVersions.__type.0_4_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":195,\"kind\":1024,\"name\":\"0.5.0\",\"url\":\"modules/settings.html#fhirVersions.__type.0_5_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":196,\"kind\":1024,\"name\":\"1.0.0\",\"url\":\"modules/settings.html#fhirVersions.__type.1_0_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":197,\"kind\":1024,\"name\":\"1.0.1\",\"url\":\"modules/settings.html#fhirVersions.__type.1_0_1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":198,\"kind\":1024,\"name\":\"1.0.2\",\"url\":\"modules/settings.html#fhirVersions.__type.1_0_2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":199,\"kind\":1024,\"name\":\"1.1.0\",\"url\":\"modules/settings.html#fhirVersions.__type.1_1_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":200,\"kind\":1024,\"name\":\"1.4.0\",\"url\":\"modules/settings.html#fhirVersions.__type.1_4_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":201,\"kind\":1024,\"name\":\"1.6.0\",\"url\":\"modules/settings.html#fhirVersions.__type.1_6_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":202,\"kind\":1024,\"name\":\"1.8.0\",\"url\":\"modules/settings.html#fhirVersions.__type.1_8_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":203,\"kind\":1024,\"name\":\"3.0.0\",\"url\":\"modules/settings.html#fhirVersions.__type.3_0_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":204,\"kind\":1024,\"name\":\"3.0.1\",\"url\":\"modules/settings.html#fhirVersions.__type.3_0_1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":205,\"kind\":1024,\"name\":\"3.3.0\",\"url\":\"modules/settings.html#fhirVersions.__type.3_3_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":206,\"kind\":1024,\"name\":\"3.5.0\",\"url\":\"modules/settings.html#fhirVersions.__type.3_5_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":207,\"kind\":1024,\"name\":\"4.0.0\",\"url\":\"modules/settings.html#fhirVersions.__type.4_0_0\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":208,\"kind\":1024,\"name\":\"4.0.1\",\"url\":\"modules/settings.html#fhirVersions.__type.4_0_1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"settings.fhirVersions.__type\"},{\"id\":209,\"kind\":32,\"name\":\"patientParams\",\"url\":\"modules/settings.html#patientParams\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"settings\"},{\"id\":210,\"kind\":32,\"name\":\"SMART_KEY\",\"url\":\"modules/settings.html#SMART_KEY\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"settings\"},{\"id\":211,\"kind\":2,\"name\":\"smart\",\"url\":\"modules/smart.html\",\"classes\":\"tsd-kind-module\"},{\"id\":212,\"kind\":64,\"name\":\"fetchWellKnownJson\",\"url\":\"modules/smart.html#fetchWellKnownJson\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":213,\"kind\":64,\"name\":\"getSecurityExtensions\",\"url\":\"modules/smart.html#getSecurityExtensions\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":214,\"kind\":64,\"name\":\"authorize\",\"url\":\"modules/smart.html#authorize\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":215,\"kind\":64,\"name\":\"isInFrame\",\"url\":\"modules/smart.html#isInFrame\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":216,\"kind\":64,\"name\":\"isInPopUp\",\"url\":\"modules/smart.html#isInPopUp\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":217,\"kind\":64,\"name\":\"onMessage\",\"url\":\"modules/smart.html#onMessage\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":218,\"kind\":64,\"name\":\"ready\",\"url\":\"modules/smart.html#ready\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":219,\"kind\":64,\"name\":\"buildTokenRequest\",\"url\":\"modules/smart.html#buildTokenRequest\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":220,\"kind\":64,\"name\":\"init\",\"url\":\"modules/smart.html#init\",\"classes\":\"tsd-kind-function tsd-parent-kind-module\",\"parent\":\"smart\"},{\"id\":221,\"kind\":2,\"name\":\"storage/BrowserStorage\",\"url\":\"modules/storage_BrowserStorage.html\",\"classes\":\"tsd-kind-module\"},{\"id\":222,\"kind\":128,\"name\":\"default\",\"url\":\"classes/storage_BrowserStorage.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"storage/BrowserStorage\"},{\"id\":223,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/storage_BrowserStorage.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"storage/BrowserStorage.default\"},{\"id\":224,\"kind\":2048,\"name\":\"get\",\"url\":\"classes/storage_BrowserStorage.default.html#get\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"storage/BrowserStorage.default\"},{\"id\":225,\"kind\":2048,\"name\":\"set\",\"url\":\"classes/storage_BrowserStorage.default.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"storage/BrowserStorage.default\"},{\"id\":226,\"kind\":2048,\"name\":\"unset\",\"url\":\"classes/storage_BrowserStorage.default.html#unset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"storage/BrowserStorage.default\"},{\"id\":227,\"kind\":2,\"name\":\"storage/ServerStorage\",\"url\":\"modules/storage_ServerStorage.html\",\"classes\":\"tsd-kind-module\"},{\"id\":228,\"kind\":128,\"name\":\"default\",\"url\":\"classes/storage_ServerStorage.default.html\",\"classes\":\"tsd-kind-class tsd-parent-kind-module\",\"parent\":\"storage/ServerStorage\"},{\"id\":229,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/storage_ServerStorage.default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"storage/ServerStorage.default\"},{\"id\":230,\"kind\":1024,\"name\":\"request\",\"url\":\"classes/storage_ServerStorage.default.html#request\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"storage/ServerStorage.default\"},{\"id\":231,\"kind\":2048,\"name\":\"get\",\"url\":\"classes/storage_ServerStorage.default.html#get\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"storage/ServerStorage.default\"},{\"id\":232,\"kind\":2048,\"name\":\"set\",\"url\":\"classes/storage_ServerStorage.default.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"storage/ServerStorage.default\"},{\"id\":233,\"kind\":2048,\"name\":\"unset\",\"url\":\"classes/storage_ServerStorage.default.html#unset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"storage/ServerStorage.default\"},{\"id\":234,\"kind\":2,\"name\":\"strings\",\"url\":\"modules/strings.html\",\"classes\":\"tsd-kind-module\"},{\"id\":235,\"kind\":32,\"name\":\"default\",\"url\":\"modules/strings.html#default\",\"classes\":\"tsd-kind-variable tsd-parent-kind-module\",\"parent\":\"strings\"},{\"id\":236,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/strings.html#default.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"strings.default\"},{\"id\":237,\"kind\":1024,\"name\":\"expired\",\"url\":\"modules/strings.html#default.__type.expired\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"strings.default.__type\"},{\"id\":238,\"kind\":1024,\"name\":\"noScopeForId\",\"url\":\"modules/strings.html#default.__type.noScopeForId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"strings.default.__type\"},{\"id\":239,\"kind\":1024,\"name\":\"noIfNoAuth\",\"url\":\"modules/strings.html#default.__type.noIfNoAuth\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"strings.default.__type\"},{\"id\":240,\"kind\":1024,\"name\":\"noFreeContext\",\"url\":\"modules/strings.html#default.__type.noFreeContext\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"strings.default.__type\"},{\"id\":241,\"kind\":2,\"name\":\"types\",\"url\":\"modules/types.html\",\"classes\":\"tsd-kind-module\"},{\"id\":242,\"kind\":4,\"name\":\"fhirclient\",\"url\":\"modules/types.fhirclient.html\",\"classes\":\"tsd-kind-namespace tsd-parent-kind-module\",\"parent\":\"types\"},{\"id\":243,\"kind\":64,\"name\":\"WindowTargetFunction\",\"url\":\"modules/types.fhirclient.html#WindowTargetFunction\",\"classes\":\"tsd-kind-function tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":244,\"kind\":256,\"name\":\"RequestWithSession\",\"url\":\"interfaces/types.fhirclient.RequestWithSession.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":245,\"kind\":1024,\"name\":\"session\",\"url\":\"interfaces/types.fhirclient.RequestWithSession.html#session\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.RequestWithSession\"},{\"id\":246,\"kind\":256,\"name\":\"SMART\",\"url\":\"interfaces/types.fhirclient.SMART.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":247,\"kind\":1024,\"name\":\"options\",\"url\":\"interfaces/types.fhirclient.SMART.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.SMART\"},{\"id\":248,\"kind\":2048,\"name\":\"ready\",\"url\":\"interfaces/types.fhirclient.SMART.html#ready\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.SMART\"},{\"id\":249,\"kind\":2048,\"name\":\"authorize\",\"url\":\"interfaces/types.fhirclient.SMART.html#authorize\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.SMART\"},{\"id\":250,\"kind\":2048,\"name\":\"init\",\"url\":\"interfaces/types.fhirclient.SMART.html#init\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.SMART\"},{\"id\":251,\"kind\":2048,\"name\":\"client\",\"url\":\"interfaces/types.fhirclient.SMART.html#client\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.SMART\"},{\"id\":252,\"kind\":256,\"name\":\"BrowserFHIRSettings\",\"url\":\"interfaces/types.fhirclient.BrowserFHIRSettings.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":253,\"kind\":1024,\"name\":\"replaceBrowserHistory\",\"url\":\"interfaces/types.fhirclient.BrowserFHIRSettings.html#replaceBrowserHistory\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.BrowserFHIRSettings\"},{\"id\":254,\"kind\":1024,\"name\":\"fullSessionStorageSupport\",\"url\":\"interfaces/types.fhirclient.BrowserFHIRSettings.html#fullSessionStorageSupport\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.BrowserFHIRSettings\"},{\"id\":255,\"kind\":1024,\"name\":\"refreshTokenWithCredentials\",\"url\":\"interfaces/types.fhirclient.BrowserFHIRSettings.html#refreshTokenWithCredentials\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.BrowserFHIRSettings\"},{\"id\":256,\"kind\":256,\"name\":\"CodeValue\",\"url\":\"interfaces/types.fhirclient.CodeValue.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":257,\"kind\":1024,\"name\":\"code\",\"url\":\"interfaces/types.fhirclient.CodeValue.html#code\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.CodeValue\"},{\"id\":258,\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/types.fhirclient.CodeValue.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.CodeValue\"},{\"id\":259,\"kind\":256,\"name\":\"ObservationMap\",\"url\":\"interfaces/types.fhirclient.ObservationMap.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":260,\"kind\":256,\"name\":\"Adapter\",\"url\":\"interfaces/types.fhirclient.Adapter.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":261,\"kind\":1024,\"name\":\"options\",\"url\":\"interfaces/types.fhirclient.Adapter.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":262,\"kind\":2048,\"name\":\"getUrl\",\"url\":\"interfaces/types.fhirclient.Adapter.html#getUrl\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":263,\"kind\":2048,\"name\":\"redirect\",\"url\":\"interfaces/types.fhirclient.Adapter.html#redirect\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":264,\"kind\":2048,\"name\":\"getStorage\",\"url\":\"interfaces/types.fhirclient.Adapter.html#getStorage\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":265,\"kind\":2048,\"name\":\"relative\",\"url\":\"interfaces/types.fhirclient.Adapter.html#relative\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":266,\"kind\":2048,\"name\":\"btoa\",\"url\":\"interfaces/types.fhirclient.Adapter.html#btoa\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":267,\"kind\":2048,\"name\":\"atob\",\"url\":\"interfaces/types.fhirclient.Adapter.html#atob\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":268,\"kind\":2048,\"name\":\"base64urlencode\",\"url\":\"interfaces/types.fhirclient.Adapter.html#base64urlencode\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":269,\"kind\":2048,\"name\":\"base64urldecode\",\"url\":\"interfaces/types.fhirclient.Adapter.html#base64urldecode\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":270,\"kind\":2048,\"name\":\"getAbortController\",\"url\":\"interfaces/types.fhirclient.Adapter.html#getAbortController\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":271,\"kind\":2048,\"name\":\"getSmartApi\",\"url\":\"interfaces/types.fhirclient.Adapter.html#getSmartApi\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":272,\"kind\":1024,\"name\":\"security\",\"url\":\"interfaces/types.fhirclient.Adapter.html#security\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":273,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/types.fhirclient.Adapter.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Adapter\"},{\"id\":274,\"kind\":2048,\"name\":\"randomBytes\",\"url\":\"interfaces/types.fhirclient.Adapter.html#__type.randomBytes\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"types.fhirclient.Adapter.__type\"},{\"id\":275,\"kind\":2048,\"name\":\"digestSha256\",\"url\":\"interfaces/types.fhirclient.Adapter.html#__type.digestSha256\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"types.fhirclient.Adapter.__type\"},{\"id\":276,\"kind\":2048,\"name\":\"generatePKCEChallenge\",\"url\":\"interfaces/types.fhirclient.Adapter.html#__type.generatePKCEChallenge\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"types.fhirclient.Adapter.__type\"},{\"id\":277,\"kind\":2048,\"name\":\"importJWK\",\"url\":\"interfaces/types.fhirclient.Adapter.html#__type.importJWK\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"types.fhirclient.Adapter.__type\"},{\"id\":278,\"kind\":2048,\"name\":\"signCompactJws\",\"url\":\"interfaces/types.fhirclient.Adapter.html#__type.signCompactJws\",\"classes\":\"tsd-kind-method tsd-parent-kind-type-literal\",\"parent\":\"types.fhirclient.Adapter.__type\"},{\"id\":279,\"kind\":256,\"name\":\"Storage\",\"url\":\"interfaces/types.fhirclient.Storage.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":280,\"kind\":2048,\"name\":\"set\",\"url\":\"interfaces/types.fhirclient.Storage.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Storage\"},{\"id\":281,\"kind\":2048,\"name\":\"get\",\"url\":\"interfaces/types.fhirclient.Storage.html#get\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Storage\"},{\"id\":282,\"kind\":2048,\"name\":\"unset\",\"url\":\"interfaces/types.fhirclient.Storage.html#unset\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.Storage\"},{\"id\":283,\"kind\":4194304,\"name\":\"WindowTargetVariable\",\"url\":\"modules/types.fhirclient.html#WindowTargetVariable\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":284,\"kind\":4194304,\"name\":\"WindowTarget\",\"url\":\"modules/types.fhirclient.html#WindowTarget\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":285,\"kind\":4194304,\"name\":\"PkceMode\",\"url\":\"modules/types.fhirclient.html#PkceMode\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":286,\"kind\":4194304,\"name\":\"storageFactory\",\"url\":\"modules/types.fhirclient.html#storageFactory\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":287,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/types.fhirclient.html#storageFactory.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"types.fhirclient.storageFactory\"},{\"id\":288,\"kind\":256,\"name\":\"IncludeResponseHint\",\"url\":\"interfaces/types.fhirclient.IncludeResponseHint.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":289,\"kind\":1024,\"name\":\"includeResponse\",\"url\":\"interfaces/types.fhirclient.IncludeResponseHint.html#includeResponse\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IncludeResponseHint\"},{\"id\":290,\"kind\":4194304,\"name\":\"RequestFunction\",\"url\":\"modules/types.fhirclient.html#RequestFunction\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace tsd-has-type-parameter\",\"parent\":\"types.fhirclient\"},{\"id\":291,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules/types.fhirclient.html#RequestFunction.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-has-type-parameter\",\"parent\":\"types.fhirclient.RequestFunction\"},{\"id\":292,\"kind\":256,\"name\":\"FetchOptions\",\"url\":\"interfaces/types.fhirclient.FetchOptions.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":293,\"kind\":1024,\"name\":\"includeResponse\",\"url\":\"interfaces/types.fhirclient.FetchOptions.html#includeResponse\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FetchOptions\"},{\"id\":294,\"kind\":256,\"name\":\"CombinedFetchResult\",\"url\":\"interfaces/types.fhirclient.CombinedFetchResult.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace tsd-has-type-parameter\",\"parent\":\"types.fhirclient\"},{\"id\":295,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/types.fhirclient.CombinedFetchResult.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.CombinedFetchResult\"},{\"id\":296,\"kind\":1024,\"name\":\"response\",\"url\":\"interfaces/types.fhirclient.CombinedFetchResult.html#response\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.CombinedFetchResult\"},{\"id\":297,\"kind\":4194304,\"name\":\"FetchResult\",\"url\":\"modules/types.fhirclient.html#FetchResult\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":298,\"kind\":256,\"name\":\"ES384JWK\",\"url\":\"interfaces/types.fhirclient.ES384JWK.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":299,\"kind\":1024,\"name\":\"alg\",\"url\":\"interfaces/types.fhirclient.ES384JWK.html#alg\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.ES384JWK\"},{\"id\":300,\"kind\":1024,\"name\":\"kty\",\"url\":\"interfaces/types.fhirclient.ES384JWK.html#kty\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.ES384JWK\"},{\"id\":301,\"kind\":1024,\"name\":\"crv\",\"url\":\"interfaces/types.fhirclient.ES384JWK.html#crv\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.ES384JWK\"},{\"id\":302,\"kind\":1024,\"name\":\"kid\",\"url\":\"interfaces/types.fhirclient.ES384JWK.html#kid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ES384JWK\"},{\"id\":303,\"kind\":1024,\"name\":\"key_ops\",\"url\":\"interfaces/types.fhirclient.ES384JWK.html#key_ops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.ES384JWK\"},{\"id\":304,\"kind\":256,\"name\":\"RS384JWK\",\"url\":\"interfaces/types.fhirclient.RS384JWK.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":305,\"kind\":1024,\"name\":\"alg\",\"url\":\"interfaces/types.fhirclient.RS384JWK.html#alg\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.RS384JWK\"},{\"id\":306,\"kind\":1024,\"name\":\"kty\",\"url\":\"interfaces/types.fhirclient.RS384JWK.html#kty\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.RS384JWK\"},{\"id\":307,\"kind\":1024,\"name\":\"kid\",\"url\":\"interfaces/types.fhirclient.RS384JWK.html#kid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.RS384JWK\"},{\"id\":308,\"kind\":1024,\"name\":\"key_ops\",\"url\":\"interfaces/types.fhirclient.RS384JWK.html#key_ops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.RS384JWK\"},{\"id\":309,\"kind\":4194304,\"name\":\"JWK\",\"url\":\"modules/types.fhirclient.html#JWK\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":310,\"kind\":256,\"name\":\"RequestOptions\",\"url\":\"interfaces/types.fhirclient.RequestOptions.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":311,\"kind\":1024,\"name\":\"url\",\"url\":\"interfaces/types.fhirclient.RequestOptions.html#url\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.RequestOptions\"},{\"id\":312,\"kind\":1024,\"name\":\"includeResponse\",\"url\":\"interfaces/types.fhirclient.RequestOptions.html#includeResponse\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.RequestOptions\"},{\"id\":313,\"kind\":256,\"name\":\"OAuthSecurityExtensions\",\"url\":\"interfaces/types.fhirclient.OAuthSecurityExtensions.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":314,\"kind\":1024,\"name\":\"registrationUri\",\"url\":\"interfaces/types.fhirclient.OAuthSecurityExtensions.html#registrationUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.OAuthSecurityExtensions\"},{\"id\":315,\"kind\":1024,\"name\":\"authorizeUri\",\"url\":\"interfaces/types.fhirclient.OAuthSecurityExtensions.html#authorizeUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.OAuthSecurityExtensions\"},{\"id\":316,\"kind\":1024,\"name\":\"tokenUri\",\"url\":\"interfaces/types.fhirclient.OAuthSecurityExtensions.html#tokenUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.OAuthSecurityExtensions\"},{\"id\":317,\"kind\":1024,\"name\":\"codeChallengeMethods\",\"url\":\"interfaces/types.fhirclient.OAuthSecurityExtensions.html#codeChallengeMethods\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.OAuthSecurityExtensions\"},{\"id\":318,\"kind\":256,\"name\":\"ClientState\",\"url\":\"interfaces/types.fhirclient.ClientState.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":319,\"kind\":1024,\"name\":\"serverUrl\",\"url\":\"interfaces/types.fhirclient.ClientState.html#serverUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":320,\"kind\":1024,\"name\":\"clientId\",\"url\":\"interfaces/types.fhirclient.ClientState.html#clientId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":321,\"kind\":1024,\"name\":\"redirectUri\",\"url\":\"interfaces/types.fhirclient.ClientState.html#redirectUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":322,\"kind\":1024,\"name\":\"scope\",\"url\":\"interfaces/types.fhirclient.ClientState.html#scope\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":323,\"kind\":1024,\"name\":\"clientPublicKeySetUrl\",\"url\":\"interfaces/types.fhirclient.ClientState.html#clientPublicKeySetUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":324,\"kind\":1024,\"name\":\"clientPrivateJwk\",\"url\":\"interfaces/types.fhirclient.ClientState.html#clientPrivateJwk\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":325,\"kind\":1024,\"name\":\"clientSecret\",\"url\":\"interfaces/types.fhirclient.ClientState.html#clientSecret\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":326,\"kind\":1024,\"name\":\"tokenResponse\",\"url\":\"interfaces/types.fhirclient.ClientState.html#tokenResponse\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":327,\"kind\":1024,\"name\":\"username\",\"url\":\"interfaces/types.fhirclient.ClientState.html#username\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":328,\"kind\":1024,\"name\":\"password\",\"url\":\"interfaces/types.fhirclient.ClientState.html#password\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":329,\"kind\":1024,\"name\":\"registrationUri\",\"url\":\"interfaces/types.fhirclient.ClientState.html#registrationUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":330,\"kind\":1024,\"name\":\"authorizeUri\",\"url\":\"interfaces/types.fhirclient.ClientState.html#authorizeUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":331,\"kind\":1024,\"name\":\"tokenUri\",\"url\":\"interfaces/types.fhirclient.ClientState.html#tokenUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":332,\"kind\":1024,\"name\":\"key\",\"url\":\"interfaces/types.fhirclient.ClientState.html#key\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":333,\"kind\":1024,\"name\":\"completeInTarget\",\"url\":\"interfaces/types.fhirclient.ClientState.html#completeInTarget\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":334,\"kind\":1024,\"name\":\"expiresAt\",\"url\":\"interfaces/types.fhirclient.ClientState.html#expiresAt\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":335,\"kind\":1024,\"name\":\"codeChallenge\",\"url\":\"interfaces/types.fhirclient.ClientState.html#codeChallenge\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":336,\"kind\":1024,\"name\":\"codeVerifier\",\"url\":\"interfaces/types.fhirclient.ClientState.html#codeVerifier\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ClientState\"},{\"id\":337,\"kind\":256,\"name\":\"AuthorizeParams\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":338,\"kind\":1024,\"name\":\"iss\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#iss\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":339,\"kind\":1024,\"name\":\"issMatch\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#issMatch\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":340,\"kind\":1024,\"name\":\"launch\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#launch\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":341,\"kind\":1024,\"name\":\"fhirServiceUrl\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#fhirServiceUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":342,\"kind\":1024,\"name\":\"redirectUri\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#redirectUri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":343,\"kind\":1024,\"name\":\"redirect_uri\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#redirect_uri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":344,\"kind\":1024,\"name\":\"noRedirect\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#noRedirect\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":345,\"kind\":1024,\"name\":\"clientId\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#clientId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":346,\"kind\":1024,\"name\":\"client_id\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#client_id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":347,\"kind\":1024,\"name\":\"scope\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#scope\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":348,\"kind\":1024,\"name\":\"patientId\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#patientId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":349,\"kind\":1024,\"name\":\"encounterId\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#encounterId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":350,\"kind\":1024,\"name\":\"clientSecret\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#clientSecret\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":351,\"kind\":1024,\"name\":\"clientPublicKeySetUrl\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#clientPublicKeySetUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":352,\"kind\":1024,\"name\":\"clientPrivateJwk\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#clientPrivateJwk\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":353,\"kind\":1024,\"name\":\"fakeTokenResponse\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#fakeTokenResponse\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":354,\"kind\":1024,\"name\":\"target\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#target\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":355,\"kind\":1024,\"name\":\"width\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#width\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":356,\"kind\":1024,\"name\":\"height\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#height\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":357,\"kind\":1024,\"name\":\"completeInTarget\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#completeInTarget\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":358,\"kind\":1024,\"name\":\"pkceMode\",\"url\":\"interfaces/types.fhirclient.AuthorizeParams.html#pkceMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.AuthorizeParams\"},{\"id\":359,\"kind\":256,\"name\":\"ReadyOptions\",\"url\":\"interfaces/types.fhirclient.ReadyOptions.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":360,\"kind\":1024,\"name\":\"privateKey\",\"url\":\"interfaces/types.fhirclient.ReadyOptions.html#privateKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ReadyOptions\"},{\"id\":361,\"kind\":1024,\"name\":\"clientPublicKeySetUrl\",\"url\":\"interfaces/types.fhirclient.ReadyOptions.html#clientPublicKeySetUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.ReadyOptions\"},{\"id\":362,\"kind\":256,\"name\":\"FhirOptions\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":363,\"kind\":1024,\"name\":\"pageLimit\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html#pageLimit\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FhirOptions\"},{\"id\":364,\"kind\":2048,\"name\":\"onPage\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html#onPage\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FhirOptions\"},{\"id\":365,\"kind\":1024,\"name\":\"flat\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html#flat\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FhirOptions\"},{\"id\":366,\"kind\":1024,\"name\":\"graph\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html#graph\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FhirOptions\"},{\"id\":367,\"kind\":1024,\"name\":\"resolveReferences\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html#resolveReferences\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FhirOptions\"},{\"id\":368,\"kind\":1024,\"name\":\"useRefreshToken\",\"url\":\"interfaces/types.fhirclient.FhirOptions.html#useRefreshToken\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FhirOptions\"},{\"id\":369,\"kind\":256,\"name\":\"TokenResponse\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":370,\"kind\":1024,\"name\":\"need_patient_banner\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#need_patient_banner\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":371,\"kind\":1024,\"name\":\"smart_style_url\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#smart_style_url\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":372,\"kind\":1024,\"name\":\"patient\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#patient\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":373,\"kind\":1024,\"name\":\"encounter\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#encounter\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":374,\"kind\":1024,\"name\":\"client_id\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#client_id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":375,\"kind\":1024,\"name\":\"token_type\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#token_type\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":376,\"kind\":1024,\"name\":\"scope\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#scope\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":377,\"kind\":1024,\"name\":\"expires_in\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#expires_in\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":378,\"kind\":1024,\"name\":\"access_token\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#access_token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":379,\"kind\":1024,\"name\":\"id_token\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#id_token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":380,\"kind\":1024,\"name\":\"refresh_token\",\"url\":\"interfaces/types.fhirclient.TokenResponse.html#refresh_token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.TokenResponse\"},{\"id\":381,\"kind\":256,\"name\":\"IDToken\",\"url\":\"interfaces/types.fhirclient.IDToken.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":382,\"kind\":1024,\"name\":\"profile\",\"url\":\"interfaces/types.fhirclient.IDToken.html#profile\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IDToken\"},{\"id\":383,\"kind\":1024,\"name\":\"aud\",\"url\":\"interfaces/types.fhirclient.IDToken.html#aud\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IDToken\"},{\"id\":384,\"kind\":1024,\"name\":\"sub\",\"url\":\"interfaces/types.fhirclient.IDToken.html#sub\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IDToken\"},{\"id\":385,\"kind\":1024,\"name\":\"iss\",\"url\":\"interfaces/types.fhirclient.IDToken.html#iss\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IDToken\"},{\"id\":386,\"kind\":1024,\"name\":\"iat\",\"url\":\"interfaces/types.fhirclient.IDToken.html#iat\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IDToken\"},{\"id\":387,\"kind\":1024,\"name\":\"exp\",\"url\":\"interfaces/types.fhirclient.IDToken.html#exp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.IDToken\"},{\"id\":388,\"kind\":256,\"name\":\"JsonObject\",\"url\":\"interfaces/types.fhirclient.JsonObject.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":389,\"kind\":4194304,\"name\":\"JsonPrimitive\",\"url\":\"modules/types.fhirclient.html#JsonPrimitive\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":390,\"kind\":4194304,\"name\":\"JsonValue\",\"url\":\"modules/types.fhirclient.html#JsonValue\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":391,\"kind\":4194304,\"name\":\"JsonArray\",\"url\":\"modules/types.fhirclient.html#JsonArray\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":392,\"kind\":256,\"name\":\"JsonPatchAdd\",\"url\":\"interfaces/types.fhirclient.JsonPatchAdd.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":393,\"kind\":1024,\"name\":\"op\",\"url\":\"interfaces/types.fhirclient.JsonPatchAdd.html#op\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchAdd\"},{\"id\":394,\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/types.fhirclient.JsonPatchAdd.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchAdd\"},{\"id\":395,\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/types.fhirclient.JsonPatchAdd.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchAdd\"},{\"id\":396,\"kind\":256,\"name\":\"JsonPatchReplace\",\"url\":\"interfaces/types.fhirclient.JsonPatchReplace.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":397,\"kind\":1024,\"name\":\"op\",\"url\":\"interfaces/types.fhirclient.JsonPatchReplace.html#op\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchReplace\"},{\"id\":398,\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/types.fhirclient.JsonPatchReplace.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchReplace\"},{\"id\":399,\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/types.fhirclient.JsonPatchReplace.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchReplace\"},{\"id\":400,\"kind\":256,\"name\":\"JsonPatchTest\",\"url\":\"interfaces/types.fhirclient.JsonPatchTest.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":401,\"kind\":1024,\"name\":\"op\",\"url\":\"interfaces/types.fhirclient.JsonPatchTest.html#op\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchTest\"},{\"id\":402,\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/types.fhirclient.JsonPatchTest.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchTest\"},{\"id\":403,\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/types.fhirclient.JsonPatchTest.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchTest\"},{\"id\":404,\"kind\":256,\"name\":\"JsonPatchMove\",\"url\":\"interfaces/types.fhirclient.JsonPatchMove.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":405,\"kind\":1024,\"name\":\"op\",\"url\":\"interfaces/types.fhirclient.JsonPatchMove.html#op\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchMove\"},{\"id\":406,\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/types.fhirclient.JsonPatchMove.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchMove\"},{\"id\":407,\"kind\":1024,\"name\":\"from\",\"url\":\"interfaces/types.fhirclient.JsonPatchMove.html#from\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchMove\"},{\"id\":408,\"kind\":256,\"name\":\"JsonPatchCopy\",\"url\":\"interfaces/types.fhirclient.JsonPatchCopy.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":409,\"kind\":1024,\"name\":\"op\",\"url\":\"interfaces/types.fhirclient.JsonPatchCopy.html#op\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchCopy\"},{\"id\":410,\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/types.fhirclient.JsonPatchCopy.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchCopy\"},{\"id\":411,\"kind\":1024,\"name\":\"from\",\"url\":\"interfaces/types.fhirclient.JsonPatchCopy.html#from\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchCopy\"},{\"id\":412,\"kind\":256,\"name\":\"JsonPatchRemove\",\"url\":\"interfaces/types.fhirclient.JsonPatchRemove.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":413,\"kind\":1024,\"name\":\"op\",\"url\":\"interfaces/types.fhirclient.JsonPatchRemove.html#op\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchRemove\"},{\"id\":414,\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/types.fhirclient.JsonPatchRemove.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.JsonPatchRemove\"},{\"id\":415,\"kind\":4194304,\"name\":\"JsonPatchOperation\",\"url\":\"modules/types.fhirclient.html#JsonPatchOperation\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":416,\"kind\":4194304,\"name\":\"JsonPatch\",\"url\":\"modules/types.fhirclient.html#JsonPatch\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":417,\"kind\":4194304,\"name\":\"codeChallengeMethod\",\"url\":\"modules/types.fhirclient.html#codeChallengeMethod\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":418,\"kind\":4194304,\"name\":\"SMARTAuthenticationMethod\",\"url\":\"modules/types.fhirclient.html#SMARTAuthenticationMethod\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":419,\"kind\":4194304,\"name\":\"launchMode\",\"url\":\"modules/types.fhirclient.html#launchMode\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":420,\"kind\":4194304,\"name\":\"clientType\",\"url\":\"modules/types.fhirclient.html#clientType\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":421,\"kind\":4194304,\"name\":\"singleSignOn\",\"url\":\"modules/types.fhirclient.html#singleSignOn\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":422,\"kind\":4194304,\"name\":\"launchContext\",\"url\":\"modules/types.fhirclient.html#launchContext\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":423,\"kind\":4194304,\"name\":\"launchContextEHR\",\"url\":\"modules/types.fhirclient.html#launchContextEHR\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":424,\"kind\":4194304,\"name\":\"launchContextStandalone\",\"url\":\"modules/types.fhirclient.html#launchContextStandalone\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":425,\"kind\":4194304,\"name\":\"permissions\",\"url\":\"modules/types.fhirclient.html#permissions\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":426,\"kind\":256,\"name\":\"WellKnownSmartConfiguration\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":427,\"kind\":1024,\"name\":\"authorization_endpoint\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#authorization_endpoint\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":428,\"kind\":1024,\"name\":\"token_endpoint\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#token_endpoint\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":429,\"kind\":1024,\"name\":\"registration_endpoint\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#registration_endpoint\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":430,\"kind\":1024,\"name\":\"management_endpoint\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#management_endpoint\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":431,\"kind\":1024,\"name\":\"introspection_endpoint\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#introspection_endpoint\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":432,\"kind\":1024,\"name\":\"revocation_endpoint\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#revocation_endpoint\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":433,\"kind\":1024,\"name\":\"code_challenge_methods_supported\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#code_challenge_methods_supported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":434,\"kind\":1024,\"name\":\"token_endpoint_auth_methods\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#token_endpoint_auth_methods\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":435,\"kind\":1024,\"name\":\"scopes_supported\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#scopes_supported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":436,\"kind\":1024,\"name\":\"response_types_supported\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#response_types_supported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":437,\"kind\":1024,\"name\":\"capabilities\",\"url\":\"interfaces/types.fhirclient.WellKnownSmartConfiguration.html#capabilities\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.WellKnownSmartConfiguration\"},{\"id\":438,\"kind\":4,\"name\":\"FHIR\",\"url\":\"modules/types.fhirclient.FHIR.html\",\"classes\":\"tsd-kind-namespace tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient\"},{\"id\":439,\"kind\":4194304,\"name\":\"id\",\"url\":\"modules/types.fhirclient.FHIR.html#id\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":440,\"kind\":4194304,\"name\":\"uri\",\"url\":\"modules/types.fhirclient.FHIR.html#uri\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":441,\"kind\":4194304,\"name\":\"code\",\"url\":\"modules/types.fhirclient.FHIR.html#code\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":442,\"kind\":4194304,\"name\":\"instant\",\"url\":\"modules/types.fhirclient.FHIR.html#instant\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":443,\"kind\":4194304,\"name\":\"dateTime\",\"url\":\"modules/types.fhirclient.FHIR.html#dateTime\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":444,\"kind\":4194304,\"name\":\"unsignedInt\",\"url\":\"modules/types.fhirclient.FHIR.html#unsignedInt\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":445,\"kind\":4194304,\"name\":\"valueX\",\"url\":\"modules/types.fhirclient.FHIR.html#valueX\",\"classes\":\"tsd-kind-type-alias tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":446,\"kind\":256,\"name\":\"Element\",\"url\":\"interfaces/types.fhirclient.FHIR.Element.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":447,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Element.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Element\"},{\"id\":448,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Element.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Element\"},{\"id\":449,\"kind\":256,\"name\":\"Extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Extension.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace tsd-has-type-parameter\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":450,\"kind\":1024,\"name\":\"url\",\"url\":\"interfaces/types.fhirclient.FHIR.Extension.html#url\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Extension\"},{\"id\":451,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Extension.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Extension\"},{\"id\":452,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Extension.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Extension\"},{\"id\":453,\"kind\":256,\"name\":\"CapabilityStatement\",\"url\":\"interfaces/types.fhirclient.FHIR.CapabilityStatement.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":454,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.CapabilityStatement.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.CapabilityStatement\"},{\"id\":455,\"kind\":1024,\"name\":\"fhirVersion\",\"url\":\"interfaces/types.fhirclient.FHIR.CapabilityStatement.html#fhirVersion\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.CapabilityStatement\"},{\"id\":456,\"kind\":1024,\"name\":\"rest\",\"url\":\"interfaces/types.fhirclient.FHIR.CapabilityStatement.html#rest\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.CapabilityStatement\"},{\"id\":457,\"kind\":256,\"name\":\"Resource\",\"url\":\"interfaces/types.fhirclient.FHIR.Resource.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":458,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Resource.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Resource\"},{\"id\":459,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.Resource.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Resource\"},{\"id\":460,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Resource.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Resource\"},{\"id\":461,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.Resource.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Resource\"},{\"id\":462,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.Resource.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Resource\"},{\"id\":463,\"kind\":256,\"name\":\"Meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Meta.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":464,\"kind\":1024,\"name\":\"lastUpdated\",\"url\":\"interfaces/types.fhirclient.FHIR.Meta.html#lastUpdated\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Meta\"},{\"id\":465,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Meta.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Meta\"},{\"id\":466,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Meta.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Meta\"},{\"id\":467,\"kind\":256,\"name\":\"Observation\",\"url\":\"interfaces/types.fhirclient.FHIR.Observation.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":468,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.Observation.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.FHIR.Observation\"},{\"id\":469,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Observation.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Observation\"},{\"id\":470,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Observation.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Observation\"},{\"id\":471,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.Observation.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Observation\"},{\"id\":472,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.Observation.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Observation\"},{\"id\":473,\"kind\":256,\"name\":\"Patient\",\"url\":\"interfaces/types.fhirclient.FHIR.Patient.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":474,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.Patient.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.FHIR.Patient\"},{\"id\":475,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Patient.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Patient\"},{\"id\":476,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Patient.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Patient\"},{\"id\":477,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.Patient.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Patient\"},{\"id\":478,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.Patient.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Patient\"},{\"id\":479,\"kind\":256,\"name\":\"Practitioner\",\"url\":\"interfaces/types.fhirclient.FHIR.Practitioner.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":480,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.Practitioner.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.FHIR.Practitioner\"},{\"id\":481,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Practitioner.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Practitioner\"},{\"id\":482,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Practitioner.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Practitioner\"},{\"id\":483,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.Practitioner.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Practitioner\"},{\"id\":484,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.Practitioner.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Practitioner\"},{\"id\":485,\"kind\":256,\"name\":\"RelatedPerson\",\"url\":\"interfaces/types.fhirclient.FHIR.RelatedPerson.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":486,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.RelatedPerson.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.FHIR.RelatedPerson\"},{\"id\":487,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.RelatedPerson.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.RelatedPerson\"},{\"id\":488,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.RelatedPerson.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.RelatedPerson\"},{\"id\":489,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.RelatedPerson.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.RelatedPerson\"},{\"id\":490,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.RelatedPerson.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.RelatedPerson\"},{\"id\":491,\"kind\":256,\"name\":\"Encounter\",\"url\":\"interfaces/types.fhirclient.FHIR.Encounter.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":492,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.Encounter.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"types.fhirclient.FHIR.Encounter\"},{\"id\":493,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Encounter.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Encounter\"},{\"id\":494,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Encounter.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Encounter\"},{\"id\":495,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.Encounter.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Encounter\"},{\"id\":496,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.Encounter.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Encounter\"},{\"id\":497,\"kind\":256,\"name\":\"Period\",\"url\":\"interfaces/types.fhirclient.FHIR.Period.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":498,\"kind\":1024,\"name\":\"start\",\"url\":\"interfaces/types.fhirclient.FHIR.Period.html#start\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Period\"},{\"id\":499,\"kind\":1024,\"name\":\"end\",\"url\":\"interfaces/types.fhirclient.FHIR.Period.html#end\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Period\"},{\"id\":500,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Period.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Period\"},{\"id\":501,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Period.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Period\"},{\"id\":502,\"kind\":256,\"name\":\"BackboneElement\",\"url\":\"interfaces/types.fhirclient.FHIR.BackboneElement.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":503,\"kind\":1024,\"name\":\"modifierExtension\",\"url\":\"interfaces/types.fhirclient.FHIR.BackboneElement.html#modifierExtension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.BackboneElement\"},{\"id\":504,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.BackboneElement.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BackboneElement\"},{\"id\":505,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.BackboneElement.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BackboneElement\"},{\"id\":506,\"kind\":256,\"name\":\"CodeableConcept\",\"url\":\"interfaces/types.fhirclient.FHIR.CodeableConcept.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":507,\"kind\":1024,\"name\":\"coding\",\"url\":\"interfaces/types.fhirclient.FHIR.CodeableConcept.html#coding\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.CodeableConcept\"},{\"id\":508,\"kind\":1024,\"name\":\"text\",\"url\":\"interfaces/types.fhirclient.FHIR.CodeableConcept.html#text\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.CodeableConcept\"},{\"id\":509,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.CodeableConcept.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.CodeableConcept\"},{\"id\":510,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.CodeableConcept.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.CodeableConcept\"},{\"id\":511,\"kind\":256,\"name\":\"Coding\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":512,\"kind\":1024,\"name\":\"system\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#system\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":513,\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":514,\"kind\":1024,\"name\":\"code\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#code\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":515,\"kind\":1024,\"name\":\"display\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#display\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":516,\"kind\":1024,\"name\":\"userSelected\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#userSelected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":517,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":518,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Coding.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Coding\"},{\"id\":519,\"kind\":256,\"name\":\"Identifier\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":520,\"kind\":1024,\"name\":\"use\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#use\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":521,\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#type\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":522,\"kind\":1024,\"name\":\"system\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#system\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":523,\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":524,\"kind\":1024,\"name\":\"period\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#period\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":525,\"kind\":1024,\"name\":\"assigner\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#assigner\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":526,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":527,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Identifier.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Identifier\"},{\"id\":528,\"kind\":256,\"name\":\"Reference\",\"url\":\"interfaces/types.fhirclient.FHIR.Reference.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":529,\"kind\":1024,\"name\":\"reference\",\"url\":\"interfaces/types.fhirclient.FHIR.Reference.html#reference\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Reference\"},{\"id\":530,\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/types.fhirclient.FHIR.Reference.html#identifier\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Reference\"},{\"id\":531,\"kind\":1024,\"name\":\"display\",\"url\":\"interfaces/types.fhirclient.FHIR.Reference.html#display\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Reference\"},{\"id\":532,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Reference.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Reference\"},{\"id\":533,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.Reference.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Reference\"},{\"id\":534,\"kind\":256,\"name\":\"BundleLink\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleLink.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":535,\"kind\":1024,\"name\":\"relation\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleLink.html#relation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.BundleLink\"},{\"id\":536,\"kind\":1024,\"name\":\"url\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleLink.html#url\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.BundleLink\"},{\"id\":537,\"kind\":1024,\"name\":\"modifierExtension\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleLink.html#modifierExtension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BundleLink\"},{\"id\":538,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleLink.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BundleLink\"},{\"id\":539,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleLink.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BundleLink\"},{\"id\":540,\"kind\":256,\"name\":\"BundleEntry\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleEntry.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":541,\"kind\":1024,\"name\":\"fullUrl\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleEntry.html#fullUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.BundleEntry\"},{\"id\":542,\"kind\":1024,\"name\":\"resource\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleEntry.html#resource\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.BundleEntry\"},{\"id\":543,\"kind\":1024,\"name\":\"modifierExtension\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleEntry.html#modifierExtension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BundleEntry\"},{\"id\":544,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleEntry.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BundleEntry\"},{\"id\":545,\"kind\":1024,\"name\":\"extension\",\"url\":\"interfaces/types.fhirclient.FHIR.BundleEntry.html#extension\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.BundleEntry\"},{\"id\":546,\"kind\":256,\"name\":\"Bundle\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html\",\"classes\":\"tsd-kind-interface tsd-parent-kind-namespace\",\"parent\":\"types.fhirclient.FHIR\"},{\"id\":547,\"kind\":1024,\"name\":\"identifier\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#identifier\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":548,\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#type\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":549,\"kind\":1024,\"name\":\"total\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#total\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":550,\"kind\":1024,\"name\":\"link\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#link\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":551,\"kind\":1024,\"name\":\"entry\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#entry\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":552,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":553,\"kind\":1024,\"name\":\"resourceType\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#resourceType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":554,\"kind\":1024,\"name\":\"meta\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#meta\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":555,\"kind\":1024,\"name\":\"implicitRules\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#implicitRules\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":556,\"kind\":1024,\"name\":\"language\",\"url\":\"interfaces/types.fhirclient.FHIR.Bundle.html#language\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"types.fhirclient.FHIR.Bundle\"},{\"id\":557,\"kind\":16777216,\"name\":\"KEY\",\"url\":\"modules/smart.html#KEY\",\"classes\":\"tsd-kind-reference tsd-parent-kind-module\",\"parent\":\"smart\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,48.431]],[\"parent/0\",[]],[\"name/1\",[1,42.044]],[\"parent/1\",[0,4.84]],[\"name/2\",[2,43.301]],[\"parent/2\",[3,2.767]],[\"name/3\",[4,59.466]],[\"parent/3\",[3,2.767]],[\"name/4\",[5,59.466]],[\"parent/4\",[3,2.767]],[\"name/5\",[6,50.956]],[\"parent/5\",[3,2.767]],[\"name/6\",[7,32.267]],[\"parent/6\",[3,2.767]],[\"name/7\",[8,32.267]],[\"parent/7\",[9,3.737]],[\"name/8\",[10,50.956]],[\"parent/8\",[9,3.737]],[\"name/9\",[11,48.431]],[\"parent/9\",[9,3.737]],[\"name/10\",[12,54.335]],[\"parent/10\",[9,3.737]],[\"name/11\",[13,50.956]],[\"parent/11\",[3,2.767]],[\"name/12\",[7,32.267]],[\"parent/12\",[3,2.767]],[\"name/13\",[8,32.267]],[\"parent/13\",[9,3.737]],[\"name/14\",[10,50.956]],[\"parent/14\",[9,3.737]],[\"name/15\",[14,59.466]],[\"parent/15\",[3,2.767]],[\"name/16\",[7,32.267]],[\"parent/16\",[3,2.767]],[\"name/17\",[8,32.267]],[\"parent/17\",[9,3.737]],[\"name/18\",[10,50.956]],[\"parent/18\",[9,3.737]],[\"name/19\",[15,59.466]],[\"parent/19\",[9,3.737]],[\"name/20\",[16,40.927]],[\"parent/20\",[9,3.737]],[\"name/21\",[12,54.335]],[\"parent/21\",[3,2.767]],[\"name/22\",[17,59.466]],[\"parent/22\",[3,2.767]],[\"name/23\",[18,59.466]],[\"parent/23\",[3,2.767]],[\"name/24\",[19,59.466]],[\"parent/24\",[3,2.767]],[\"name/25\",[20,59.466]],[\"parent/25\",[3,2.767]],[\"name/26\",[21,59.466]],[\"parent/26\",[3,2.767]],[\"name/27\",[22,59.466]],[\"parent/27\",[3,2.767]],[\"name/28\",[23,59.466]],[\"parent/28\",[3,2.767]],[\"name/29\",[24,59.466]],[\"parent/29\",[3,2.767]],[\"name/30\",[25,59.466]],[\"parent/30\",[3,2.767]],[\"name/31\",[26,59.466]],[\"parent/31\",[3,2.767]],[\"name/32\",[27,59.466]],[\"parent/32\",[3,2.767]],[\"name/33\",[28,59.466]],[\"parent/33\",[3,2.767]],[\"name/34\",[29,59.466]],[\"parent/34\",[3,2.767]],[\"name/35\",[30,59.466]],[\"parent/35\",[3,2.767]],[\"name/36\",[11,48.431]],[\"parent/36\",[3,2.767]],[\"name/37\",[31,59.466]],[\"parent/37\",[3,2.767]],[\"name/38\",[32,59.466]],[\"parent/38\",[3,2.767]],[\"name/39\",[33,54.335]],[\"parent/39\",[3,2.767]],[\"name/40\",[34,54.335]],[\"parent/40\",[3,2.767]],[\"name/41\",[35,54.335]],[\"parent/41\",[3,2.767]],[\"name/42\",[7,32.267]],[\"parent/42\",[3,2.767]],[\"name/43\",[36,54.335]],[\"parent/43\",[9,3.737]],[\"name/44\",[37,54.335]],[\"parent/44\",[9,3.737]],[\"name/45\",[38,54.335]],[\"parent/45\",[9,3.737]],[\"name/46\",[39,54.335]],[\"parent/46\",[3,2.767]],[\"name/47\",[40,59.466]],[\"parent/47\",[3,2.767]],[\"name/48\",[41,59.466]],[\"parent/48\",[3,2.767]],[\"name/49\",[42,59.466]],[\"parent/49\",[3,2.767]],[\"name/50\",[43,54.335]],[\"parent/50\",[]],[\"name/51\",[1,42.044]],[\"parent/51\",[43,5.43]],[\"name/52\",[7,32.267]],[\"parent/52\",[44,4.201]],[\"name/53\",[2,43.301]],[\"parent/53\",[44,4.201]],[\"name/54\",[45,59.466]],[\"parent/54\",[44,4.201]],[\"name/55\",[46,59.466]],[\"parent/55\",[44,4.201]],[\"name/56\",[47,59.466]],[\"parent/56\",[44,4.201]],[\"name/57\",[48,54.335]],[\"parent/57\",[44,4.201]],[\"name/58\",[49,59.466]],[\"parent/58\",[44,4.201]],[\"name/59\",[50,59.466]],[\"parent/59\",[44,4.201]],[\"name/60\",[51,25.156,52,30.786]],[\"parent/60\",[]],[\"name/61\",[51,19.515,53,26.713,54,29.969]],[\"parent/61\",[51,2.513,52,3.075]],[\"name/62\",[51,35.382]],[\"parent/62\",[51,1.592,53,2.179,54,2.445,55,2.013]],[\"name/63\",[7,32.267]],[\"parent/63\",[51,1.592,53,2.179,55,2.013,56,2.676]],[\"name/64\",[57,50.956]],[\"parent/64\",[51,1.592,53,2.179,55,2.013,58,2.676]],[\"name/65\",[51,15.941,52,19.509,59,21.821,60,24.48]],[\"parent/65\",[51,2.513,52,3.075]],[\"name/66\",[51,35.382]],[\"parent/66\",[51,1.346,52,1.647,55,1.701,59,1.842,60,2.066]],[\"name/67\",[7,32.267]],[\"parent/67\",[51,1.346,52,1.647,55,1.701,59,1.842,61,2.261]],[\"name/68\",[57,50.956]],[\"parent/68\",[51,1.346,52,1.647,55,1.701,59,1.842,62,2.261]],[\"name/69\",[63,54.335]],[\"parent/69\",[]],[\"name/70\",[1,42.044]],[\"parent/70\",[63,5.43]],[\"name/71\",[2,43.301]],[\"parent/71\",[64,3.536]],[\"name/72\",[65,59.466]],[\"parent/72\",[64,3.536]],[\"name/73\",[66,50.956]],[\"parent/73\",[64,3.536]],[\"name/74\",[67,46.416]],[\"parent/74\",[64,3.536]],[\"name/75\",[68,48.431]],[\"parent/75\",[64,3.536]],[\"name/76\",[69,48.431]],[\"parent/76\",[64,3.536]],[\"name/77\",[70,54.335]],[\"parent/77\",[64,3.536]],[\"name/78\",[71,48.431]],[\"parent/78\",[64,3.536]],[\"name/79\",[72,48.431]],[\"parent/79\",[64,3.536]],[\"name/80\",[73,48.431]],[\"parent/80\",[64,3.536]],[\"name/81\",[74,48.431]],[\"parent/81\",[64,3.536]],[\"name/82\",[75,48.431]],[\"parent/82\",[64,3.536]],[\"name/83\",[76,48.431]],[\"parent/83\",[64,3.536]],[\"name/84\",[77,48.431]],[\"parent/84\",[64,3.536]],[\"name/85\",[78,48.431]],[\"parent/85\",[64,3.536]],[\"name/86\",[79,48.431]],[\"parent/86\",[64,3.536]],[\"name/87\",[80,54.335]],[\"parent/87\",[]],[\"name/88\",[1,42.044]],[\"parent/88\",[80,5.43]],[\"name/89\",[81,37.397]],[\"parent/89\",[82,3.421]],[\"name/90\",[2,43.301]],[\"parent/90\",[82,3.421]],[\"name/91\",[83,59.466]],[\"parent/91\",[82,3.421]],[\"name/92\",[84,59.466]],[\"parent/92\",[82,3.421]],[\"name/93\",[66,50.956]],[\"parent/93\",[82,3.421]],[\"name/94\",[73,48.431]],[\"parent/94\",[82,3.421]],[\"name/95\",[72,48.431]],[\"parent/95\",[82,3.421]],[\"name/96\",[67,46.416]],[\"parent/96\",[82,3.421]],[\"name/97\",[68,48.431]],[\"parent/97\",[82,3.421]],[\"name/98\",[69,48.431]],[\"parent/98\",[82,3.421]],[\"name/99\",[85,54.335]],[\"parent/99\",[82,3.421]],[\"name/100\",[71,48.431]],[\"parent/100\",[82,3.421]],[\"name/101\",[76,48.431]],[\"parent/101\",[82,3.421]],[\"name/102\",[75,48.431]],[\"parent/102\",[82,3.421]],[\"name/103\",[77,48.431]],[\"parent/103\",[82,3.421]],[\"name/104\",[78,48.431]],[\"parent/104\",[82,3.421]],[\"name/105\",[74,48.431]],[\"parent/105\",[82,3.421]],[\"name/106\",[79,48.431]],[\"parent/106\",[82,3.421]],[\"name/107\",[86,54.335]],[\"parent/107\",[]],[\"name/108\",[1,42.044]],[\"parent/108\",[86,5.43]],[\"name/109\",[2,43.301]],[\"parent/109\",[87,3.598]],[\"name/110\",[66,50.956]],[\"parent/110\",[87,3.598]],[\"name/111\",[67,46.416]],[\"parent/111\",[87,3.598]],[\"name/112\",[68,48.431]],[\"parent/112\",[87,3.598]],[\"name/113\",[69,48.431]],[\"parent/113\",[87,3.598]],[\"name/114\",[85,54.335]],[\"parent/114\",[87,3.598]],[\"name/115\",[71,48.431]],[\"parent/115\",[87,3.598]],[\"name/116\",[72,48.431]],[\"parent/116\",[87,3.598]],[\"name/117\",[73,48.431]],[\"parent/117\",[87,3.598]],[\"name/118\",[76,48.431]],[\"parent/118\",[87,3.598]],[\"name/119\",[75,48.431]],[\"parent/119\",[87,3.598]],[\"name/120\",[77,48.431]],[\"parent/120\",[87,3.598]],[\"name/121\",[78,48.431]],[\"parent/121\",[87,3.598]],[\"name/122\",[74,48.431]],[\"parent/122\",[87,3.598]],[\"name/123\",[79,48.431]],[\"parent/123\",[87,3.598]],[\"name/124\",[88,54.335]],[\"parent/124\",[]],[\"name/125\",[89,46.416]],[\"parent/125\",[88,5.43]],[\"name/126\",[7,32.267]],[\"parent/126\",[90,5.942]],[\"name/127\",[51,35.382]],[\"parent/127\",[91,4.327]],[\"name/128\",[7,32.267]],[\"parent/128\",[91,4.327]],[\"name/129\",[0,48.431]],[\"parent/129\",[91,4.327]],[\"name/130\",[7,32.267]],[\"parent/130\",[91,4.327]],[\"name/131\",[92,59.466]],[\"parent/131\",[91,4.327]],[\"name/132\",[93,59.466]],[\"parent/132\",[91,4.327]],[\"name/133\",[7,32.267]],[\"parent/133\",[91,4.327]],[\"name/134\",[94,44.738]],[\"parent/134\",[95,4.327]],[\"name/135\",[96,50.956]],[\"parent/135\",[95,4.327]],[\"name/136\",[7,32.267]],[\"parent/136\",[95,4.327]],[\"name/137\",[97,50.956]],[\"parent/137\",[95,4.327]],[\"name/138\",[7,32.267]],[\"parent/138\",[95,4.327]],[\"name/139\",[98,50.956]],[\"parent/139\",[95,4.327]],[\"name/140\",[7,32.267]],[\"parent/140\",[95,4.327]],[\"name/141\",[99,50.956]],[\"parent/141\",[]],[\"name/142\",[89,46.416]],[\"parent/142\",[99,5.092]],[\"name/143\",[89,46.416]],[\"parent/143\",[99,5.092]],[\"name/144\",[51,35.382]],[\"parent/144\",[100,5.43]],[\"name/145\",[7,32.267]],[\"parent/145\",[100,5.43]],[\"name/146\",[57,50.956]],[\"parent/146\",[101,5.942]],[\"name/147\",[102,50.956]],[\"parent/147\",[]],[\"name/148\",[89,46.416]],[\"parent/148\",[102,5.092]],[\"name/149\",[89,46.416]],[\"parent/149\",[102,5.092]],[\"name/150\",[51,35.382]],[\"parent/150\",[103,5.43]],[\"name/151\",[7,32.267]],[\"parent/151\",[103,5.43]],[\"name/152\",[104,31.83]],[\"parent/152\",[]],[\"name/153\",[105,59.466]],[\"parent/153\",[104,3.181]],[\"name/154\",[106,59.466]],[\"parent/154\",[104,3.181]],[\"name/155\",[107,59.466]],[\"parent/155\",[104,3.181]],[\"name/156\",[11,48.431]],[\"parent/156\",[104,3.181]],[\"name/157\",[108,59.466]],[\"parent/157\",[104,3.181]],[\"name/158\",[109,59.466]],[\"parent/158\",[104,3.181]],[\"name/159\",[39,54.335]],[\"parent/159\",[104,3.181]],[\"name/160\",[110,59.466]],[\"parent/160\",[104,3.181]],[\"name/161\",[111,59.466]],[\"parent/161\",[104,3.181]],[\"name/162\",[112,59.466]],[\"parent/162\",[104,3.181]],[\"name/163\",[113,59.466]],[\"parent/163\",[104,3.181]],[\"name/164\",[114,59.466]],[\"parent/164\",[104,3.181]],[\"name/165\",[115,59.466]],[\"parent/165\",[104,3.181]],[\"name/166\",[116,59.466]],[\"parent/166\",[104,3.181]],[\"name/167\",[33,54.335]],[\"parent/167\",[104,3.181]],[\"name/168\",[34,54.335]],[\"parent/168\",[104,3.181]],[\"name/169\",[117,59.466]],[\"parent/169\",[104,3.181]],[\"name/170\",[118,59.466]],[\"parent/170\",[104,3.181]],[\"name/171\",[119,59.466]],[\"parent/171\",[104,3.181]],[\"name/172\",[120,59.466]],[\"parent/172\",[104,3.181]],[\"name/173\",[121,59.466]],[\"parent/173\",[104,3.181]],[\"name/174\",[35,54.335]],[\"parent/174\",[104,3.181]],[\"name/175\",[7,32.267]],[\"parent/175\",[122,5.942]],[\"name/176\",[36,54.335]],[\"parent/176\",[123,5.092]],[\"name/177\",[37,54.335]],[\"parent/177\",[123,5.092]],[\"name/178\",[38,54.335]],[\"parent/178\",[123,5.092]],[\"name/179\",[124,44.738]],[\"parent/179\",[]],[\"name/180\",[125,54.335]],[\"parent/180\",[124,4.471]],[\"name/181\",[126,50.956]],[\"parent/181\",[124,4.471]],[\"name/182\",[127,50.956]],[\"parent/182\",[124,4.471]],[\"name/183\",[128,50.956]],[\"parent/183\",[124,4.471]],[\"name/184\",[129,50.956]],[\"parent/184\",[124,4.471]],[\"name/185\",[130,46.416]],[\"parent/185\",[]],[\"name/186\",[126,50.956]],[\"parent/186\",[130,4.638]],[\"name/187\",[129,50.956]],[\"parent/187\",[130,4.638]],[\"name/188\",[127,50.956]],[\"parent/188\",[130,4.638]],[\"name/189\",[128,50.956]],[\"parent/189\",[130,4.638]],[\"name/190\",[94,44.738]],[\"parent/190\",[]],[\"name/191\",[131,59.466]],[\"parent/191\",[94,4.471]],[\"name/192\",[132,59.466]],[\"parent/192\",[94,4.471]],[\"name/193\",[7,32.267]],[\"parent/193\",[133,5.942]],[\"name/194\",[134,59.466]],[\"parent/194\",[135,3.598]],[\"name/195\",[136,59.466]],[\"parent/195\",[135,3.598]],[\"name/196\",[137,59.466]],[\"parent/196\",[135,3.598]],[\"name/197\",[138,59.466]],[\"parent/197\",[135,3.598]],[\"name/198\",[139,59.466]],[\"parent/198\",[135,3.598]],[\"name/199\",[140,59.466]],[\"parent/199\",[135,3.598]],[\"name/200\",[141,59.466]],[\"parent/200\",[135,3.598]],[\"name/201\",[142,59.466]],[\"parent/201\",[135,3.598]],[\"name/202\",[143,59.466]],[\"parent/202\",[135,3.598]],[\"name/203\",[144,59.466]],[\"parent/203\",[135,3.598]],[\"name/204\",[145,59.466]],[\"parent/204\",[135,3.598]],[\"name/205\",[146,59.466]],[\"parent/205\",[135,3.598]],[\"name/206\",[147,59.466]],[\"parent/206\",[135,3.598]],[\"name/207\",[148,59.466]],[\"parent/207\",[135,3.598]],[\"name/208\",[149,59.466]],[\"parent/208\",[135,3.598]],[\"name/209\",[150,59.466]],[\"parent/209\",[94,4.471]],[\"name/210\",[151,59.466]],[\"parent/210\",[94,4.471]],[\"name/211\",[81,37.397]],[\"parent/211\",[]],[\"name/212\",[152,59.466]],[\"parent/212\",[81,3.737]],[\"name/213\",[153,59.466]],[\"parent/213\",[81,3.737]],[\"name/214\",[97,50.956]],[\"parent/214\",[81,3.737]],[\"name/215\",[154,59.466]],[\"parent/215\",[81,3.737]],[\"name/216\",[155,59.466]],[\"parent/216\",[81,3.737]],[\"name/217\",[156,59.466]],[\"parent/217\",[81,3.737]],[\"name/218\",[96,50.956]],[\"parent/218\",[81,3.737]],[\"name/219\",[157,59.466]],[\"parent/219\",[81,3.737]],[\"name/220\",[98,50.956]],[\"parent/220\",[81,3.737]],[\"name/221\",[158,54.335]],[\"parent/221\",[]],[\"name/222\",[1,42.044]],[\"parent/222\",[158,5.43]],[\"name/223\",[2,43.301]],[\"parent/223\",[159,4.84]],[\"name/224\",[160,50.956]],[\"parent/224\",[159,4.84]],[\"name/225\",[161,50.956]],[\"parent/225\",[159,4.84]],[\"name/226\",[162,50.956]],[\"parent/226\",[159,4.84]],[\"name/227\",[163,54.335]],[\"parent/227\",[]],[\"name/228\",[1,42.044]],[\"parent/228\",[163,5.43]],[\"name/229\",[2,43.301]],[\"parent/229\",[164,4.638]],[\"name/230\",[11,48.431]],[\"parent/230\",[164,4.638]],[\"name/231\",[160,50.956]],[\"parent/231\",[164,4.638]],[\"name/232\",[161,50.956]],[\"parent/232\",[164,4.638]],[\"name/233\",[162,50.956]],[\"parent/233\",[164,4.638]],[\"name/234\",[165,54.335]],[\"parent/234\",[]],[\"name/235\",[1,42.044]],[\"parent/235\",[165,5.43]],[\"name/236\",[7,32.267]],[\"parent/236\",[166,5.942]],[\"name/237\",[167,59.466]],[\"parent/237\",[168,4.84]],[\"name/238\",[169,59.466]],[\"parent/238\",[168,4.84]],[\"name/239\",[170,59.466]],[\"parent/239\",[168,4.84]],[\"name/240\",[171,59.466]],[\"parent/240\",[168,4.84]],[\"name/241\",[172,54.335]],[\"parent/241\",[]],[\"name/242\",[173,59.466]],[\"parent/242\",[172,5.43]],[\"name/243\",[174,59.466]],[\"parent/243\",[175,2.393]],[\"name/244\",[176,59.466]],[\"parent/244\",[175,2.393]],[\"name/245\",[177,59.466]],[\"parent/245\",[178,5.942]],[\"name/246\",[81,37.397]],[\"parent/246\",[175,2.393]],[\"name/247\",[67,46.416]],[\"parent/247\",[179,4.638]],[\"name/248\",[96,50.956]],[\"parent/248\",[179,4.638]],[\"name/249\",[97,50.956]],[\"parent/249\",[179,4.638]],[\"name/250\",[98,50.956]],[\"parent/250\",[179,4.638]],[\"name/251\",[0,48.431]],[\"parent/251\",[179,4.638]],[\"name/252\",[180,59.466]],[\"parent/252\",[175,2.393]],[\"name/253\",[181,59.466]],[\"parent/253\",[182,5.092]],[\"name/254\",[183,59.466]],[\"parent/254\",[182,5.092]],[\"name/255\",[184,59.466]],[\"parent/255\",[182,5.092]],[\"name/256\",[185,59.466]],[\"parent/256\",[175,2.393]],[\"name/257\",[186,50.956]],[\"parent/257\",[187,5.43]],[\"name/258\",[188,46.416]],[\"parent/258\",[187,5.43]],[\"name/259\",[189,59.466]],[\"parent/259\",[175,2.393]],[\"name/260\",[190,59.466]],[\"parent/260\",[175,2.393]],[\"name/261\",[67,46.416]],[\"parent/261\",[191,3.737]],[\"name/262\",[71,48.431]],[\"parent/262\",[191,3.737]],[\"name/263\",[72,48.431]],[\"parent/263\",[191,3.737]],[\"name/264\",[73,48.431]],[\"parent/264\",[191,3.737]],[\"name/265\",[69,48.431]],[\"parent/265\",[191,3.737]],[\"name/266\",[76,48.431]],[\"parent/266\",[191,3.737]],[\"name/267\",[75,48.431]],[\"parent/267\",[191,3.737]],[\"name/268\",[77,48.431]],[\"parent/268\",[191,3.737]],[\"name/269\",[78,48.431]],[\"parent/269\",[191,3.737]],[\"name/270\",[74,48.431]],[\"parent/270\",[191,3.737]],[\"name/271\",[79,48.431]],[\"parent/271\",[191,3.737]],[\"name/272\",[68,48.431]],[\"parent/272\",[191,3.737]],[\"name/273\",[7,32.267]],[\"parent/273\",[191,3.737]],[\"name/274\",[125,54.335]],[\"parent/274\",[192,4.638]],[\"name/275\",[126,50.956]],[\"parent/275\",[192,4.638]],[\"name/276\",[129,50.956]],[\"parent/276\",[192,4.638]],[\"name/277\",[127,50.956]],[\"parent/277\",[192,4.638]],[\"name/278\",[128,50.956]],[\"parent/278\",[192,4.638]],[\"name/279\",[193,59.466]],[\"parent/279\",[175,2.393]],[\"name/280\",[161,50.956]],[\"parent/280\",[194,5.092]],[\"name/281\",[160,50.956]],[\"parent/281\",[194,5.092]],[\"name/282\",[162,50.956]],[\"parent/282\",[194,5.092]],[\"name/283\",[195,59.466]],[\"parent/283\",[175,2.393]],[\"name/284\",[196,59.466]],[\"parent/284\",[175,2.393]],[\"name/285\",[197,54.335]],[\"parent/285\",[175,2.393]],[\"name/286\",[198,59.466]],[\"parent/286\",[175,2.393]],[\"name/287\",[7,32.267]],[\"parent/287\",[199,5.942]],[\"name/288\",[200,59.466]],[\"parent/288\",[175,2.393]],[\"name/289\",[201,50.956]],[\"parent/289\",[202,5.942]],[\"name/290\",[203,59.466]],[\"parent/290\",[175,2.393]],[\"name/291\",[7,32.267]],[\"parent/291\",[204,5.942]],[\"name/292\",[205,59.466]],[\"parent/292\",[175,2.393]],[\"name/293\",[201,50.956]],[\"parent/293\",[206,5.942]],[\"name/294\",[207,59.466]],[\"parent/294\",[175,2.393]],[\"name/295\",[208,59.466]],[\"parent/295\",[209,5.43]],[\"name/296\",[48,54.335]],[\"parent/296\",[209,5.43]],[\"name/297\",[210,59.466]],[\"parent/297\",[175,2.393]],[\"name/298\",[211,59.466]],[\"parent/298\",[175,2.393]],[\"name/299\",[212,54.335]],[\"parent/299\",[213,4.638]],[\"name/300\",[214,54.335]],[\"parent/300\",[213,4.638]],[\"name/301\",[215,59.466]],[\"parent/301\",[213,4.638]],[\"name/302\",[216,54.335]],[\"parent/302\",[213,4.638]],[\"name/303\",[217,54.335]],[\"parent/303\",[213,4.638]],[\"name/304\",[218,59.466]],[\"parent/304\",[175,2.393]],[\"name/305\",[212,54.335]],[\"parent/305\",[219,4.84]],[\"name/306\",[214,54.335]],[\"parent/306\",[219,4.84]],[\"name/307\",[216,54.335]],[\"parent/307\",[219,4.84]],[\"name/308\",[217,54.335]],[\"parent/308\",[219,4.84]],[\"name/309\",[220,59.466]],[\"parent/309\",[175,2.393]],[\"name/310\",[221,59.466]],[\"parent/310\",[175,2.393]],[\"name/311\",[222,50.956]],[\"parent/311\",[223,5.43]],[\"name/312\",[201,50.956]],[\"parent/312\",[223,5.43]],[\"name/313\",[224,59.466]],[\"parent/313\",[175,2.393]],[\"name/314\",[225,54.335]],[\"parent/314\",[226,4.84]],[\"name/315\",[227,54.335]],[\"parent/315\",[226,4.84]],[\"name/316\",[228,54.335]],[\"parent/316\",[226,4.84]],[\"name/317\",[229,59.466]],[\"parent/317\",[226,4.84]],[\"name/318\",[230,59.466]],[\"parent/318\",[175,2.393]],[\"name/319\",[231,59.466]],[\"parent/319\",[232,3.421]],[\"name/320\",[233,54.335]],[\"parent/320\",[232,3.421]],[\"name/321\",[234,54.335]],[\"parent/321\",[232,3.421]],[\"name/322\",[235,50.956]],[\"parent/322\",[232,3.421]],[\"name/323\",[236,50.956]],[\"parent/323\",[232,3.421]],[\"name/324\",[237,54.335]],[\"parent/324\",[232,3.421]],[\"name/325\",[238,54.335]],[\"parent/325\",[232,3.421]],[\"name/326\",[239,54.335]],[\"parent/326\",[232,3.421]],[\"name/327\",[240,59.466]],[\"parent/327\",[232,3.421]],[\"name/328\",[241,59.466]],[\"parent/328\",[232,3.421]],[\"name/329\",[225,54.335]],[\"parent/329\",[232,3.421]],[\"name/330\",[227,54.335]],[\"parent/330\",[232,3.421]],[\"name/331\",[228,54.335]],[\"parent/331\",[232,3.421]],[\"name/332\",[242,54.335]],[\"parent/332\",[232,3.421]],[\"name/333\",[243,54.335]],[\"parent/333\",[232,3.421]],[\"name/334\",[244,59.466]],[\"parent/334\",[232,3.421]],[\"name/335\",[245,59.466]],[\"parent/335\",[232,3.421]],[\"name/336\",[246,59.466]],[\"parent/336\",[232,3.421]],[\"name/337\",[247,59.466]],[\"parent/337\",[175,2.393]],[\"name/338\",[248,54.335]],[\"parent/338\",[249,3.27]],[\"name/339\",[250,59.466]],[\"parent/339\",[249,3.27]],[\"name/340\",[251,59.466]],[\"parent/340\",[249,3.27]],[\"name/341\",[252,59.466]],[\"parent/341\",[249,3.27]],[\"name/342\",[234,54.335]],[\"parent/342\",[249,3.27]],[\"name/343\",[253,59.466]],[\"parent/343\",[249,3.27]],[\"name/344\",[254,59.466]],[\"parent/344\",[249,3.27]],[\"name/345\",[233,54.335]],[\"parent/345\",[249,3.27]],[\"name/346\",[255,54.335]],[\"parent/346\",[249,3.27]],[\"name/347\",[235,50.956]],[\"parent/347\",[249,3.27]],[\"name/348\",[256,59.466]],[\"parent/348\",[249,3.27]],[\"name/349\",[257,59.466]],[\"parent/349\",[249,3.27]],[\"name/350\",[238,54.335]],[\"parent/350\",[249,3.27]],[\"name/351\",[236,50.956]],[\"parent/351\",[249,3.27]],[\"name/352\",[237,54.335]],[\"parent/352\",[249,3.27]],[\"name/353\",[258,59.466]],[\"parent/353\",[249,3.27]],[\"name/354\",[259,59.466]],[\"parent/354\",[249,3.27]],[\"name/355\",[260,59.466]],[\"parent/355\",[249,3.27]],[\"name/356\",[261,59.466]],[\"parent/356\",[249,3.27]],[\"name/357\",[243,54.335]],[\"parent/357\",[249,3.27]],[\"name/358\",[197,54.335]],[\"parent/358\",[249,3.27]],[\"name/359\",[262,59.466]],[\"parent/359\",[175,2.393]],[\"name/360\",[263,59.466]],[\"parent/360\",[264,5.43]],[\"name/361\",[236,50.956]],[\"parent/361\",[264,5.43]],[\"name/362\",[265,59.466]],[\"parent/362\",[175,2.393]],[\"name/363\",[266,59.466]],[\"parent/363\",[267,4.471]],[\"name/364\",[268,59.466]],[\"parent/364\",[267,4.471]],[\"name/365\",[269,59.466]],[\"parent/365\",[267,4.471]],[\"name/366\",[270,59.466]],[\"parent/366\",[267,4.471]],[\"name/367\",[271,59.466]],[\"parent/367\",[267,4.471]],[\"name/368\",[272,59.466]],[\"parent/368\",[267,4.471]],[\"name/369\",[239,54.335]],[\"parent/369\",[175,2.393]],[\"name/370\",[273,59.466]],[\"parent/370\",[274,3.898]],[\"name/371\",[275,59.466]],[\"parent/371\",[274,3.898]],[\"name/372\",[6,50.956]],[\"parent/372\",[274,3.898]],[\"name/373\",[13,50.956]],[\"parent/373\",[274,3.898]],[\"name/374\",[255,54.335]],[\"parent/374\",[274,3.898]],[\"name/375\",[276,59.466]],[\"parent/375\",[274,3.898]],[\"name/376\",[235,50.956]],[\"parent/376\",[274,3.898]],[\"name/377\",[277,59.466]],[\"parent/377\",[274,3.898]],[\"name/378\",[278,59.466]],[\"parent/378\",[274,3.898]],[\"name/379\",[279,59.466]],[\"parent/379\",[274,3.898]],[\"name/380\",[280,59.466]],[\"parent/380\",[274,3.898]],[\"name/381\",[281,59.466]],[\"parent/381\",[175,2.393]],[\"name/382\",[282,59.466]],[\"parent/382\",[283,4.471]],[\"name/383\",[284,59.466]],[\"parent/383\",[283,4.471]],[\"name/384\",[285,59.466]],[\"parent/384\",[283,4.471]],[\"name/385\",[248,54.335]],[\"parent/385\",[283,4.471]],[\"name/386\",[286,59.466]],[\"parent/386\",[283,4.471]],[\"name/387\",[287,59.466]],[\"parent/387\",[283,4.471]],[\"name/388\",[288,59.466]],[\"parent/388\",[175,2.393]],[\"name/389\",[289,59.466]],[\"parent/389\",[175,2.393]],[\"name/390\",[290,59.466]],[\"parent/390\",[175,2.393]],[\"name/391\",[291,59.466]],[\"parent/391\",[175,2.393]],[\"name/392\",[292,59.466]],[\"parent/392\",[175,2.393]],[\"name/393\",[293,44.738]],[\"parent/393\",[294,5.092]],[\"name/394\",[295,44.738]],[\"parent/394\",[294,5.092]],[\"name/395\",[188,46.416]],[\"parent/395\",[294,5.092]],[\"name/396\",[296,59.466]],[\"parent/396\",[175,2.393]],[\"name/397\",[293,44.738]],[\"parent/397\",[297,5.092]],[\"name/398\",[295,44.738]],[\"parent/398\",[297,5.092]],[\"name/399\",[188,46.416]],[\"parent/399\",[297,5.092]],[\"name/400\",[298,59.466]],[\"parent/400\",[175,2.393]],[\"name/401\",[293,44.738]],[\"parent/401\",[299,5.092]],[\"name/402\",[295,44.738]],[\"parent/402\",[299,5.092]],[\"name/403\",[188,46.416]],[\"parent/403\",[299,5.092]],[\"name/404\",[300,59.466]],[\"parent/404\",[175,2.393]],[\"name/405\",[293,44.738]],[\"parent/405\",[301,5.092]],[\"name/406\",[295,44.738]],[\"parent/406\",[301,5.092]],[\"name/407\",[302,54.335]],[\"parent/407\",[301,5.092]],[\"name/408\",[303,59.466]],[\"parent/408\",[175,2.393]],[\"name/409\",[293,44.738]],[\"parent/409\",[304,5.092]],[\"name/410\",[295,44.738]],[\"parent/410\",[304,5.092]],[\"name/411\",[302,54.335]],[\"parent/411\",[304,5.092]],[\"name/412\",[305,59.466]],[\"parent/412\",[175,2.393]],[\"name/413\",[293,44.738]],[\"parent/413\",[306,5.43]],[\"name/414\",[295,44.738]],[\"parent/414\",[306,5.43]],[\"name/415\",[307,59.466]],[\"parent/415\",[175,2.393]],[\"name/416\",[308,59.466]],[\"parent/416\",[175,2.393]],[\"name/417\",[309,59.466]],[\"parent/417\",[175,2.393]],[\"name/418\",[310,59.466]],[\"parent/418\",[175,2.393]],[\"name/419\",[311,59.466]],[\"parent/419\",[175,2.393]],[\"name/420\",[312,59.466]],[\"parent/420\",[175,2.393]],[\"name/421\",[313,59.466]],[\"parent/421\",[175,2.393]],[\"name/422\",[314,59.466]],[\"parent/422\",[175,2.393]],[\"name/423\",[315,59.466]],[\"parent/423\",[175,2.393]],[\"name/424\",[316,59.466]],[\"parent/424\",[175,2.393]],[\"name/425\",[317,59.466]],[\"parent/425\",[175,2.393]],[\"name/426\",[318,59.466]],[\"parent/426\",[175,2.393]],[\"name/427\",[319,59.466]],[\"parent/427\",[320,3.898]],[\"name/428\",[321,59.466]],[\"parent/428\",[320,3.898]],[\"name/429\",[322,59.466]],[\"parent/429\",[320,3.898]],[\"name/430\",[323,59.466]],[\"parent/430\",[320,3.898]],[\"name/431\",[324,59.466]],[\"parent/431\",[320,3.898]],[\"name/432\",[325,59.466]],[\"parent/432\",[320,3.898]],[\"name/433\",[326,59.466]],[\"parent/433\",[320,3.898]],[\"name/434\",[327,59.466]],[\"parent/434\",[320,3.898]],[\"name/435\",[328,59.466]],[\"parent/435\",[320,3.898]],[\"name/436\",[329,59.466]],[\"parent/436\",[320,3.898]],[\"name/437\",[330,59.466]],[\"parent/437\",[320,3.898]],[\"name/438\",[70,54.335]],[\"parent/438\",[175,2.393]],[\"name/439\",[8,32.267]],[\"parent/439\",[331,3.06]],[\"name/440\",[332,59.466]],[\"parent/440\",[331,3.06]],[\"name/441\",[186,50.956]],[\"parent/441\",[331,3.06]],[\"name/442\",[333,59.466]],[\"parent/442\",[331,3.06]],[\"name/443\",[334,59.466]],[\"parent/443\",[331,3.06]],[\"name/444\",[335,59.466]],[\"parent/444\",[331,3.06]],[\"name/445\",[336,59.466]],[\"parent/445\",[331,3.06]],[\"name/446\",[337,59.466]],[\"parent/446\",[331,3.06]],[\"name/447\",[8,32.267]],[\"parent/447\",[338,5.43]],[\"name/448\",[339,38.17]],[\"parent/448\",[338,5.43]],[\"name/449\",[339,38.17]],[\"parent/449\",[331,3.06]],[\"name/450\",[222,50.956]],[\"parent/450\",[340,5.092]],[\"name/451\",[8,32.267]],[\"parent/451\",[340,5.092]],[\"name/452\",[339,38.17]],[\"parent/452\",[340,5.092]],[\"name/453\",[341,59.466]],[\"parent/453\",[331,3.06]],[\"name/454\",[16,40.927]],[\"parent/454\",[342,5.092]],[\"name/455\",[343,59.466]],[\"parent/455\",[342,5.092]],[\"name/456\",[344,59.466]],[\"parent/456\",[342,5.092]],[\"name/457\",[345,54.335]],[\"parent/457\",[331,3.06]],[\"name/458\",[8,32.267]],[\"parent/458\",[346,4.638]],[\"name/459\",[16,40.927]],[\"parent/459\",[346,4.638]],[\"name/460\",[347,42.044]],[\"parent/460\",[346,4.638]],[\"name/461\",[348,43.301]],[\"parent/461\",[346,4.638]],[\"name/462\",[349,43.301]],[\"parent/462\",[346,4.638]],[\"name/463\",[347,42.044]],[\"parent/463\",[331,3.06]],[\"name/464\",[350,59.466]],[\"parent/464\",[351,5.092]],[\"name/465\",[8,32.267]],[\"parent/465\",[351,5.092]],[\"name/466\",[339,38.17]],[\"parent/466\",[351,5.092]],[\"name/467\",[352,59.466]],[\"parent/467\",[331,3.06]],[\"name/468\",[16,40.927]],[\"parent/468\",[353,4.638]],[\"name/469\",[8,32.267]],[\"parent/469\",[353,4.638]],[\"name/470\",[347,42.044]],[\"parent/470\",[353,4.638]],[\"name/471\",[348,43.301]],[\"parent/471\",[353,4.638]],[\"name/472\",[349,43.301]],[\"parent/472\",[353,4.638]],[\"name/473\",[6,50.956]],[\"parent/473\",[331,3.06]],[\"name/474\",[16,40.927]],[\"parent/474\",[354,4.638]],[\"name/475\",[8,32.267]],[\"parent/475\",[354,4.638]],[\"name/476\",[347,42.044]],[\"parent/476\",[354,4.638]],[\"name/477\",[348,43.301]],[\"parent/477\",[354,4.638]],[\"name/478\",[349,43.301]],[\"parent/478\",[354,4.638]],[\"name/479\",[355,59.466]],[\"parent/479\",[331,3.06]],[\"name/480\",[16,40.927]],[\"parent/480\",[356,4.638]],[\"name/481\",[8,32.267]],[\"parent/481\",[356,4.638]],[\"name/482\",[347,42.044]],[\"parent/482\",[356,4.638]],[\"name/483\",[348,43.301]],[\"parent/483\",[356,4.638]],[\"name/484\",[349,43.301]],[\"parent/484\",[356,4.638]],[\"name/485\",[357,59.466]],[\"parent/485\",[331,3.06]],[\"name/486\",[16,40.927]],[\"parent/486\",[358,4.638]],[\"name/487\",[8,32.267]],[\"parent/487\",[358,4.638]],[\"name/488\",[347,42.044]],[\"parent/488\",[358,4.638]],[\"name/489\",[348,43.301]],[\"parent/489\",[358,4.638]],[\"name/490\",[349,43.301]],[\"parent/490\",[358,4.638]],[\"name/491\",[13,50.956]],[\"parent/491\",[331,3.06]],[\"name/492\",[16,40.927]],[\"parent/492\",[359,4.638]],[\"name/493\",[8,32.267]],[\"parent/493\",[359,4.638]],[\"name/494\",[347,42.044]],[\"parent/494\",[359,4.638]],[\"name/495\",[348,43.301]],[\"parent/495\",[359,4.638]],[\"name/496\",[349,43.301]],[\"parent/496\",[359,4.638]],[\"name/497\",[360,54.335]],[\"parent/497\",[331,3.06]],[\"name/498\",[361,59.466]],[\"parent/498\",[362,4.84]],[\"name/499\",[363,59.466]],[\"parent/499\",[362,4.84]],[\"name/500\",[8,32.267]],[\"parent/500\",[362,4.84]],[\"name/501\",[339,38.17]],[\"parent/501\",[362,4.84]],[\"name/502\",[364,59.466]],[\"parent/502\",[331,3.06]],[\"name/503\",[365,50.956]],[\"parent/503\",[366,5.092]],[\"name/504\",[8,32.267]],[\"parent/504\",[366,5.092]],[\"name/505\",[339,38.17]],[\"parent/505\",[366,5.092]],[\"name/506\",[367,59.466]],[\"parent/506\",[331,3.06]],[\"name/507\",[368,54.335]],[\"parent/507\",[369,4.84]],[\"name/508\",[370,59.466]],[\"parent/508\",[369,4.84]],[\"name/509\",[8,32.267]],[\"parent/509\",[369,4.84]],[\"name/510\",[339,38.17]],[\"parent/510\",[369,4.84]],[\"name/511\",[368,54.335]],[\"parent/511\",[331,3.06]],[\"name/512\",[371,54.335]],[\"parent/512\",[372,4.327]],[\"name/513\",[373,59.466]],[\"parent/513\",[372,4.327]],[\"name/514\",[186,50.956]],[\"parent/514\",[372,4.327]],[\"name/515\",[374,54.335]],[\"parent/515\",[372,4.327]],[\"name/516\",[375,59.466]],[\"parent/516\",[372,4.327]],[\"name/517\",[8,32.267]],[\"parent/517\",[372,4.327]],[\"name/518\",[339,38.17]],[\"parent/518\",[372,4.327]],[\"name/519\",[376,50.956]],[\"parent/519\",[331,3.06]],[\"name/520\",[377,59.466]],[\"parent/520\",[378,4.201]],[\"name/521\",[379,54.335]],[\"parent/521\",[378,4.201]],[\"name/522\",[371,54.335]],[\"parent/522\",[378,4.201]],[\"name/523\",[188,46.416]],[\"parent/523\",[378,4.201]],[\"name/524\",[360,54.335]],[\"parent/524\",[378,4.201]],[\"name/525\",[380,59.466]],[\"parent/525\",[378,4.201]],[\"name/526\",[8,32.267]],[\"parent/526\",[378,4.201]],[\"name/527\",[339,38.17]],[\"parent/527\",[378,4.201]],[\"name/528\",[381,54.335]],[\"parent/528\",[331,3.06]],[\"name/529\",[381,54.335]],[\"parent/529\",[382,4.638]],[\"name/530\",[376,50.956]],[\"parent/530\",[382,4.638]],[\"name/531\",[374,54.335]],[\"parent/531\",[382,4.638]],[\"name/532\",[8,32.267]],[\"parent/532\",[382,4.638]],[\"name/533\",[339,38.17]],[\"parent/533\",[382,4.638]],[\"name/534\",[383,59.466]],[\"parent/534\",[331,3.06]],[\"name/535\",[384,59.466]],[\"parent/535\",[385,4.638]],[\"name/536\",[222,50.956]],[\"parent/536\",[385,4.638]],[\"name/537\",[365,50.956]],[\"parent/537\",[385,4.638]],[\"name/538\",[8,32.267]],[\"parent/538\",[385,4.638]],[\"name/539\",[339,38.17]],[\"parent/539\",[385,4.638]],[\"name/540\",[386,59.466]],[\"parent/540\",[331,3.06]],[\"name/541\",[387,59.466]],[\"parent/541\",[388,4.638]],[\"name/542\",[345,54.335]],[\"parent/542\",[388,4.638]],[\"name/543\",[365,50.956]],[\"parent/543\",[388,4.638]],[\"name/544\",[8,32.267]],[\"parent/544\",[388,4.638]],[\"name/545\",[339,38.17]],[\"parent/545\",[388,4.638]],[\"name/546\",[389,59.466]],[\"parent/546\",[331,3.06]],[\"name/547\",[376,50.956]],[\"parent/547\",[390,3.989]],[\"name/548\",[379,54.335]],[\"parent/548\",[390,3.989]],[\"name/549\",[391,59.466]],[\"parent/549\",[390,3.989]],[\"name/550\",[392,59.466]],[\"parent/550\",[390,3.989]],[\"name/551\",[393,59.466]],[\"parent/551\",[390,3.989]],[\"name/552\",[8,32.267]],[\"parent/552\",[390,3.989]],[\"name/553\",[16,40.927]],[\"parent/553\",[390,3.989]],[\"name/554\",[347,42.044]],[\"parent/554\",[390,3.989]],[\"name/555\",[348,43.301]],[\"parent/555\",[390,3.989]],[\"name/556\",[349,43.301]],[\"parent/556\",[390,3.989]],[\"name/557\",[242,54.335]],[\"parent/557\",[81,3.737]]],\"invertedIndex\":[[\"0.4.0\",{\"_index\":134,\"name\":{\"194\":{}},\"parent\":{}}],[\"0.5.0\",{\"_index\":136,\"name\":{\"195\":{}},\"parent\":{}}],[\"1.0.0\",{\"_index\":137,\"name\":{\"196\":{}},\"parent\":{}}],[\"1.0.1\",{\"_index\":138,\"name\":{\"197\":{}},\"parent\":{}}],[\"1.0.2\",{\"_index\":139,\"name\":{\"198\":{}},\"parent\":{}}],[\"1.1.0\",{\"_index\":140,\"name\":{\"199\":{}},\"parent\":{}}],[\"1.4.0\",{\"_index\":141,\"name\":{\"200\":{}},\"parent\":{}}],[\"1.6.0\",{\"_index\":142,\"name\":{\"201\":{}},\"parent\":{}}],[\"1.8.0\",{\"_index\":143,\"name\":{\"202\":{}},\"parent\":{}}],[\"3.0.0\",{\"_index\":144,\"name\":{\"203\":{}},\"parent\":{}}],[\"3.0.1\",{\"_index\":145,\"name\":{\"204\":{}},\"parent\":{}}],[\"3.3.0\",{\"_index\":146,\"name\":{\"205\":{}},\"parent\":{}}],[\"3.5.0\",{\"_index\":147,\"name\":{\"206\":{}},\"parent\":{}}],[\"4.0.0\",{\"_index\":148,\"name\":{\"207\":{}},\"parent\":{}}],[\"4.0.1\",{\"_index\":149,\"name\":{\"208\":{}},\"parent\":{}}],[\"__type\",{\"_index\":7,\"name\":{\"6\":{},\"12\":{},\"16\":{},\"42\":{},\"52\":{},\"63\":{},\"67\":{},\"126\":{},\"128\":{},\"130\":{},\"133\":{},\"136\":{},\"138\":{},\"140\":{},\"145\":{},\"151\":{},\"175\":{},\"193\":{},\"236\":{},\"273\":{},\"287\":{},\"291\":{}},\"parent\":{}}],[\"_clearstate\",{\"_index\":26,\"name\":{\"31\":{}},\"parent\":{}}],[\"_refreshtask\",{\"_index\":17,\"name\":{\"22\":{}},\"parent\":{}}],[\"_request\",{\"_index\":84,\"name\":{\"92\":{}},\"parent\":{}}],[\"_responsetoolkit\",{\"_index\":83,\"name\":{\"91\":{}},\"parent\":{}}],[\"_storage\",{\"_index\":66,\"name\":{\"73\":{},\"93\":{},\"110\":{}},\"parent\":{}}],[\"_url\",{\"_index\":65,\"name\":{\"72\":{}},\"parent\":{}}],[\"abortcontroller\",{\"_index\":51,\"name\":{\"60\":{},\"61\":{},\"62\":{},\"65\":{},\"66\":{},\"127\":{},\"144\":{},\"150\":{}},\"parent\":{\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{}}}],[\"absolute\",{\"_index\":112,\"name\":{\"162\":{}},\"parent\":{}}],[\"access_token\",{\"_index\":278,\"name\":{\"378\":{}},\"parent\":{}}],[\"adapter\",{\"_index\":190,\"name\":{\"260\":{}},\"parent\":{}}],[\"adapters/browseradapter\",{\"_index\":63,\"name\":{\"69\":{}},\"parent\":{\"70\":{}}}],[\"adapters/browseradapter.default\",{\"_index\":64,\"name\":{},\"parent\":{\"71\":{},\"72\":{},\"73\":{},\"74\":{},\"75\":{},\"76\":{},\"77\":{},\"78\":{},\"79\":{},\"80\":{},\"81\":{},\"82\":{},\"83\":{},\"84\":{},\"85\":{},\"86\":{}}}],[\"adapters/hapiadapter\",{\"_index\":80,\"name\":{\"87\":{}},\"parent\":{\"88\":{}}}],[\"adapters/hapiadapter.default\",{\"_index\":82,\"name\":{},\"parent\":{\"89\":{},\"90\":{},\"91\":{},\"92\":{},\"93\":{},\"94\":{},\"95\":{},\"96\":{},\"97\":{},\"98\":{},\"99\":{},\"100\":{},\"101\":{},\"102\":{},\"103\":{},\"104\":{},\"105\":{},\"106\":{}}}],[\"adapters/nodeadapter\",{\"_index\":86,\"name\":{\"107\":{}},\"parent\":{\"108\":{}}}],[\"adapters/nodeadapter.default\",{\"_index\":87,\"name\":{},\"parent\":{\"109\":{},\"110\":{},\"111\":{},\"112\":{},\"113\":{},\"114\":{},\"115\":{},\"116\":{},\"117\":{},\"118\":{},\"119\":{},\"120\":{},\"121\":{},\"122\":{},\"123\":{}}}],[\"alg\",{\"_index\":212,\"name\":{\"299\":{},\"305\":{}},\"parent\":{}}],[\"any\",{\"_index\":38,\"name\":{\"45\":{},\"178\":{}},\"parent\":{}}],[\"api\",{\"_index\":12,\"name\":{\"10\":{},\"21\":{}},\"parent\":{}}],[\"assert\",{\"_index\":119,\"name\":{\"171\":{}},\"parent\":{}}],[\"assertjsonpatch\",{\"_index\":120,\"name\":{\"172\":{}},\"parent\":{}}],[\"assigner\",{\"_index\":380,\"name\":{\"525\":{}},\"parent\":{}}],[\"atob\",{\"_index\":75,\"name\":{\"82\":{},\"102\":{},\"119\":{},\"267\":{}},\"parent\":{}}],[\"aud\",{\"_index\":284,\"name\":{\"383\":{}},\"parent\":{}}],[\"authorization_endpoint\",{\"_index\":319,\"name\":{\"427\":{}},\"parent\":{}}],[\"authorize\",{\"_index\":97,\"name\":{\"137\":{},\"214\":{},\"249\":{}},\"parent\":{}}],[\"authorizeparams\",{\"_index\":247,\"name\":{\"337\":{}},\"parent\":{}}],[\"authorizeuri\",{\"_index\":227,\"name\":{\"315\":{},\"330\":{}},\"parent\":{}}],[\"backboneelement\",{\"_index\":364,\"name\":{\"502\":{}},\"parent\":{}}],[\"base64urldecode\",{\"_index\":78,\"name\":{\"85\":{},\"104\":{},\"121\":{},\"269\":{}},\"parent\":{}}],[\"base64urlencode\",{\"_index\":77,\"name\":{\"84\":{},\"103\":{},\"120\":{},\"268\":{}},\"parent\":{}}],[\"body\",{\"_index\":208,\"name\":{\"295\":{}},\"parent\":{}}],[\"browserfhirsettings\",{\"_index\":180,\"name\":{\"252\":{}},\"parent\":{}}],[\"btoa\",{\"_index\":76,\"name\":{\"83\":{},\"101\":{},\"118\":{},\"266\":{}},\"parent\":{}}],[\"buildtokenrequest\",{\"_index\":157,\"name\":{\"219\":{}},\"parent\":{}}],[\"bundle\",{\"_index\":389,\"name\":{\"546\":{}},\"parent\":{}}],[\"bundleentry\",{\"_index\":386,\"name\":{\"540\":{}},\"parent\":{}}],[\"bundlelink\",{\"_index\":383,\"name\":{\"534\":{}},\"parent\":{}}],[\"bycode\",{\"_index\":33,\"name\":{\"39\":{},\"167\":{}},\"parent\":{}}],[\"bycodes\",{\"_index\":34,\"name\":{\"40\":{},\"168\":{}},\"parent\":{}}],[\"capabilities\",{\"_index\":330,\"name\":{\"437\":{}},\"parent\":{}}],[\"capabilitystatement\",{\"_index\":341,\"name\":{\"453\":{}},\"parent\":{}}],[\"checkresponse\",{\"_index\":105,\"name\":{\"153\":{}},\"parent\":{}}],[\"client\",{\"_index\":0,\"name\":{\"0\":{},\"129\":{},\"251\":{}},\"parent\":{\"1\":{}}}],[\"client.default\",{\"_index\":3,\"name\":{},\"parent\":{\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"11\":{},\"12\":{},\"15\":{},\"16\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{}}}],[\"client.default.__type\",{\"_index\":9,\"name\":{},\"parent\":{\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"13\":{},\"14\":{},\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"43\":{},\"44\":{},\"45\":{}}}],[\"client_id\",{\"_index\":255,\"name\":{\"346\":{},\"374\":{}},\"parent\":{}}],[\"clientid\",{\"_index\":233,\"name\":{\"320\":{},\"345\":{}},\"parent\":{}}],[\"clientprivatejwk\",{\"_index\":237,\"name\":{\"324\":{},\"352\":{}},\"parent\":{}}],[\"clientpublickeyseturl\",{\"_index\":236,\"name\":{\"323\":{},\"351\":{},\"361\":{}},\"parent\":{}}],[\"clientsecret\",{\"_index\":238,\"name\":{\"325\":{},\"350\":{}},\"parent\":{}}],[\"clientstate\",{\"_index\":230,\"name\":{\"318\":{}},\"parent\":{}}],[\"clienttype\",{\"_index\":312,\"name\":{\"420\":{}},\"parent\":{}}],[\"cm\",{\"_index\":36,\"name\":{\"43\":{},\"176\":{}},\"parent\":{}}],[\"code\",{\"_index\":186,\"name\":{\"257\":{},\"441\":{},\"514\":{}},\"parent\":{}}],[\"code_challenge_methods_supported\",{\"_index\":326,\"name\":{\"433\":{}},\"parent\":{}}],[\"codeableconcept\",{\"_index\":367,\"name\":{\"506\":{}},\"parent\":{}}],[\"codechallenge\",{\"_index\":245,\"name\":{\"335\":{}},\"parent\":{}}],[\"codechallengemethod\",{\"_index\":309,\"name\":{\"417\":{}},\"parent\":{}}],[\"codechallengemethods\",{\"_index\":229,\"name\":{\"317\":{}},\"parent\":{}}],[\"codevalue\",{\"_index\":185,\"name\":{\"256\":{}},\"parent\":{}}],[\"codeverifier\",{\"_index\":246,\"name\":{\"336\":{}},\"parent\":{}}],[\"coding\",{\"_index\":368,\"name\":{\"507\":{},\"511\":{}},\"parent\":{}}],[\"combinedfetchresult\",{\"_index\":207,\"name\":{\"294\":{}},\"parent\":{}}],[\"completeintarget\",{\"_index\":243,\"name\":{\"333\":{},\"357\":{}},\"parent\":{}}],[\"connect\",{\"_index\":18,\"name\":{\"23\":{}},\"parent\":{}}],[\"constructor\",{\"_index\":2,\"name\":{\"2\":{},\"53\":{},\"71\":{},\"90\":{},\"109\":{},\"223\":{},\"229\":{}},\"parent\":{}}],[\"create\",{\"_index\":27,\"name\":{\"32\":{}},\"parent\":{}}],[\"crv\",{\"_index\":215,\"name\":{\"301\":{}},\"parent\":{}}],[\"datetime\",{\"_index\":334,\"name\":{\"443\":{}},\"parent\":{}}],[\"debug\",{\"_index\":121,\"name\":{\"173\":{}},\"parent\":{}}],[\"default\",{\"_index\":1,\"name\":{\"1\":{},\"51\":{},\"70\":{},\"88\":{},\"108\":{},\"222\":{},\"228\":{},\"235\":{}},\"parent\":{}}],[\"delete\",{\"_index\":29,\"name\":{\"34\":{}},\"parent\":{}}],[\"digestsha256\",{\"_index\":126,\"name\":{\"181\":{},\"186\":{},\"275\":{}},\"parent\":{}}],[\"display\",{\"_index\":374,\"name\":{\"515\":{},\"531\":{}},\"parent\":{}}],[\"element\",{\"_index\":337,\"name\":{\"446\":{}},\"parent\":{}}],[\"encounter\",{\"_index\":13,\"name\":{\"11\":{},\"373\":{},\"491\":{}},\"parent\":{}}],[\"encounterid\",{\"_index\":257,\"name\":{\"349\":{}},\"parent\":{}}],[\"end\",{\"_index\":363,\"name\":{\"499\":{}},\"parent\":{}}],[\"entry\",{\"_index\":393,\"name\":{\"551\":{}},\"parent\":{}}],[\"entry/browser\",{\"_index\":88,\"name\":{\"124\":{}},\"parent\":{\"125\":{}}}],[\"entry/browser.export\",{\"_index\":90,\"name\":{},\"parent\":{\"126\":{}}}],[\"entry/browser.export=.__type\",{\"_index\":91,\"name\":{},\"parent\":{\"127\":{},\"128\":{},\"129\":{},\"130\":{},\"131\":{},\"132\":{},\"133\":{}}}],[\"entry/browser.export=.__type.__type\",{\"_index\":95,\"name\":{},\"parent\":{\"134\":{},\"135\":{},\"136\":{},\"137\":{},\"138\":{},\"139\":{},\"140\":{}}}],[\"entry/hapi\",{\"_index\":99,\"name\":{\"141\":{}},\"parent\":{\"142\":{},\"143\":{}}}],[\"entry/hapi.export\",{\"_index\":100,\"name\":{},\"parent\":{\"144\":{},\"145\":{}}}],[\"entry/hapi.export=.__type\",{\"_index\":101,\"name\":{},\"parent\":{\"146\":{}}}],[\"entry/node\",{\"_index\":102,\"name\":{\"147\":{}},\"parent\":{\"148\":{},\"149\":{}}}],[\"entry/node.export\",{\"_index\":103,\"name\":{},\"parent\":{\"150\":{},\"151\":{}}}],[\"environment\",{\"_index\":5,\"name\":{\"4\":{}},\"parent\":{}}],[\"es384jwk\",{\"_index\":211,\"name\":{\"298\":{}},\"parent\":{}}],[\"exp\",{\"_index\":287,\"name\":{\"387\":{}},\"parent\":{}}],[\"expired\",{\"_index\":167,\"name\":{\"237\":{}},\"parent\":{}}],[\"expires_in\",{\"_index\":277,\"name\":{\"377\":{}},\"parent\":{}}],[\"expiresat\",{\"_index\":244,\"name\":{\"334\":{}},\"parent\":{}}],[\"export\",{\"_index\":89,\"name\":{\"125\":{},\"142\":{},\"143\":{},\"148\":{},\"149\":{}},\"parent\":{}}],[\"extension\",{\"_index\":339,\"name\":{\"448\":{},\"449\":{},\"452\":{},\"466\":{},\"501\":{},\"505\":{},\"510\":{},\"518\":{},\"527\":{},\"533\":{},\"539\":{},\"545\":{}},\"parent\":{}}],[\"faketokenresponse\",{\"_index\":258,\"name\":{\"353\":{}},\"parent\":{}}],[\"fetchconformancestatement\",{\"_index\":109,\"name\":{\"158\":{}},\"parent\":{}}],[\"fetchoptions\",{\"_index\":205,\"name\":{\"292\":{}},\"parent\":{}}],[\"fetchresult\",{\"_index\":210,\"name\":{\"297\":{}},\"parent\":{}}],[\"fetchwellknownjson\",{\"_index\":152,\"name\":{\"212\":{}},\"parent\":{}}],[\"fhir\",{\"_index\":70,\"name\":{\"77\":{},\"438\":{}},\"parent\":{}}],[\"fhirclient\",{\"_index\":173,\"name\":{\"242\":{}},\"parent\":{}}],[\"fhiroptions\",{\"_index\":265,\"name\":{\"362\":{}},\"parent\":{}}],[\"fhirserviceurl\",{\"_index\":252,\"name\":{\"341\":{}},\"parent\":{}}],[\"fhiruser\",{\"_index\":15,\"name\":{\"19\":{}},\"parent\":{}}],[\"fhirversion\",{\"_index\":343,\"name\":{\"455\":{}},\"parent\":{}}],[\"fhirversions\",{\"_index\":132,\"name\":{\"192\":{}},\"parent\":{}}],[\"flat\",{\"_index\":269,\"name\":{\"365\":{}},\"parent\":{}}],[\"from\",{\"_index\":302,\"name\":{\"407\":{},\"411\":{}},\"parent\":{}}],[\"fullsessionstoragesupport\",{\"_index\":183,\"name\":{\"254\":{}},\"parent\":{}}],[\"fullurl\",{\"_index\":387,\"name\":{\"541\":{}},\"parent\":{}}],[\"generatepkcechallenge\",{\"_index\":129,\"name\":{\"184\":{},\"187\":{},\"276\":{}},\"parent\":{}}],[\"get\",{\"_index\":160,\"name\":{\"224\":{},\"231\":{},\"281\":{}},\"parent\":{}}],[\"getabortcontroller\",{\"_index\":74,\"name\":{\"81\":{},\"105\":{},\"122\":{},\"270\":{}},\"parent\":{}}],[\"getaccesstokenexpiration\",{\"_index\":116,\"name\":{\"166\":{}},\"parent\":{}}],[\"getandcache\",{\"_index\":108,\"name\":{\"157\":{}},\"parent\":{}}],[\"getauthorizationheader\",{\"_index\":25,\"name\":{\"30\":{}},\"parent\":{}}],[\"getencounterid\",{\"_index\":20,\"name\":{\"25\":{}},\"parent\":{}}],[\"getfhirrelease\",{\"_index\":42,\"name\":{\"49\":{}},\"parent\":{}}],[\"getfhiruser\",{\"_index\":22,\"name\":{\"27\":{}},\"parent\":{}}],[\"getfhirversion\",{\"_index\":41,\"name\":{\"48\":{}},\"parent\":{}}],[\"getidtoken\",{\"_index\":21,\"name\":{\"26\":{}},\"parent\":{}}],[\"getpath\",{\"_index\":39,\"name\":{\"46\":{},\"159\":{}},\"parent\":{}}],[\"getpatientid\",{\"_index\":19,\"name\":{\"24\":{}},\"parent\":{}}],[\"getpatientparam\",{\"_index\":117,\"name\":{\"169\":{}},\"parent\":{}}],[\"getprotocol\",{\"_index\":85,\"name\":{\"99\":{},\"114\":{}},\"parent\":{}}],[\"getsecurityextensions\",{\"_index\":153,\"name\":{\"213\":{}},\"parent\":{}}],[\"getsmartapi\",{\"_index\":79,\"name\":{\"86\":{},\"106\":{},\"123\":{},\"271\":{}},\"parent\":{}}],[\"getstate\",{\"_index\":40,\"name\":{\"47\":{}},\"parent\":{}}],[\"getstorage\",{\"_index\":73,\"name\":{\"80\":{},\"94\":{},\"117\":{},\"264\":{}},\"parent\":{}}],[\"gettargetwindow\",{\"_index\":118,\"name\":{\"170\":{}},\"parent\":{}}],[\"gettimeinfuture\",{\"_index\":115,\"name\":{\"165\":{}},\"parent\":{}}],[\"geturl\",{\"_index\":71,\"name\":{\"78\":{},\"100\":{},\"115\":{},\"262\":{}},\"parent\":{}}],[\"getuserid\",{\"_index\":23,\"name\":{\"28\":{}},\"parent\":{}}],[\"getusertype\",{\"_index\":24,\"name\":{\"29\":{}},\"parent\":{}}],[\"graph\",{\"_index\":270,\"name\":{\"366\":{}},\"parent\":{}}],[\"height\",{\"_index\":261,\"name\":{\"356\":{}},\"parent\":{}}],[\"httperror\",{\"_index\":43,\"name\":{\"50\":{}},\"parent\":{\"51\":{}}}],[\"httperror.default\",{\"_index\":44,\"name\":{},\"parent\":{\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{},\"59\":{}}}],[\"iat\",{\"_index\":286,\"name\":{\"386\":{}},\"parent\":{}}],[\"id\",{\"_index\":8,\"name\":{\"7\":{},\"13\":{},\"17\":{},\"439\":{},\"447\":{},\"451\":{},\"458\":{},\"465\":{},\"469\":{},\"475\":{},\"481\":{},\"487\":{},\"493\":{},\"500\":{},\"504\":{},\"509\":{},\"517\":{},\"526\":{},\"532\":{},\"538\":{},\"544\":{},\"552\":{}},\"parent\":{}}],[\"id_token\",{\"_index\":279,\"name\":{\"379\":{}},\"parent\":{}}],[\"identifier\",{\"_index\":376,\"name\":{\"519\":{},\"530\":{},\"547\":{}},\"parent\":{}}],[\"idtoken\",{\"_index\":281,\"name\":{\"381\":{}},\"parent\":{}}],[\"implicitrules\",{\"_index\":348,\"name\":{\"461\":{},\"471\":{},\"477\":{},\"483\":{},\"489\":{},\"495\":{},\"555\":{}},\"parent\":{}}],[\"importjwk\",{\"_index\":127,\"name\":{\"182\":{},\"188\":{},\"277\":{}},\"parent\":{}}],[\"includeresponse\",{\"_index\":201,\"name\":{\"289\":{},\"293\":{},\"312\":{}},\"parent\":{}}],[\"includeresponsehint\",{\"_index\":200,\"name\":{\"288\":{}},\"parent\":{}}],[\"init\",{\"_index\":98,\"name\":{\"139\":{},\"220\":{},\"250\":{}},\"parent\":{}}],[\"instant\",{\"_index\":333,\"name\":{\"442\":{}},\"parent\":{}}],[\"introspection_endpoint\",{\"_index\":324,\"name\":{\"431\":{}},\"parent\":{}}],[\"isinframe\",{\"_index\":154,\"name\":{\"215\":{}},\"parent\":{}}],[\"isinpopup\",{\"_index\":155,\"name\":{\"216\":{}},\"parent\":{}}],[\"iss\",{\"_index\":248,\"name\":{\"338\":{},\"385\":{}},\"parent\":{}}],[\"issmatch\",{\"_index\":250,\"name\":{\"339\":{}},\"parent\":{}}],[\"jsonarray\",{\"_index\":291,\"name\":{\"391\":{}},\"parent\":{}}],[\"jsonobject\",{\"_index\":288,\"name\":{\"388\":{}},\"parent\":{}}],[\"jsonpatch\",{\"_index\":308,\"name\":{\"416\":{}},\"parent\":{}}],[\"jsonpatchadd\",{\"_index\":292,\"name\":{\"392\":{}},\"parent\":{}}],[\"jsonpatchcopy\",{\"_index\":303,\"name\":{\"408\":{}},\"parent\":{}}],[\"jsonpatchmove\",{\"_index\":300,\"name\":{\"404\":{}},\"parent\":{}}],[\"jsonpatchoperation\",{\"_index\":307,\"name\":{\"415\":{}},\"parent\":{}}],[\"jsonpatchremove\",{\"_index\":305,\"name\":{\"412\":{}},\"parent\":{}}],[\"jsonpatchreplace\",{\"_index\":296,\"name\":{\"396\":{}},\"parent\":{}}],[\"jsonpatchtest\",{\"_index\":298,\"name\":{\"400\":{}},\"parent\":{}}],[\"jsonprimitive\",{\"_index\":289,\"name\":{\"389\":{}},\"parent\":{}}],[\"jsonvalue\",{\"_index\":290,\"name\":{\"390\":{}},\"parent\":{}}],[\"jwk\",{\"_index\":220,\"name\":{\"309\":{}},\"parent\":{}}],[\"jwtdecode\",{\"_index\":114,\"name\":{\"164\":{}},\"parent\":{}}],[\"key\",{\"_index\":242,\"name\":{\"332\":{},\"557\":{}},\"parent\":{}}],[\"key_ops\",{\"_index\":217,\"name\":{\"303\":{},\"308\":{}},\"parent\":{}}],[\"kg\",{\"_index\":37,\"name\":{\"44\":{},\"177\":{}},\"parent\":{}}],[\"kid\",{\"_index\":216,\"name\":{\"302\":{},\"307\":{}},\"parent\":{}}],[\"kty\",{\"_index\":214,\"name\":{\"300\":{},\"306\":{}},\"parent\":{}}],[\"language\",{\"_index\":349,\"name\":{\"462\":{},\"472\":{},\"478\":{},\"484\":{},\"490\":{},\"496\":{},\"556\":{}},\"parent\":{}}],[\"lastupdated\",{\"_index\":350,\"name\":{\"464\":{}},\"parent\":{}}],[\"launch\",{\"_index\":251,\"name\":{\"340\":{}},\"parent\":{}}],[\"launchcontext\",{\"_index\":314,\"name\":{\"422\":{}},\"parent\":{}}],[\"launchcontextehr\",{\"_index\":315,\"name\":{\"423\":{}},\"parent\":{}}],[\"launchcontextstandalone\",{\"_index\":316,\"name\":{\"424\":{}},\"parent\":{}}],[\"launchmode\",{\"_index\":311,\"name\":{\"419\":{}},\"parent\":{}}],[\"lib\",{\"_index\":104,\"name\":{\"152\":{}},\"parent\":{\"153\":{},\"154\":{},\"155\":{},\"156\":{},\"157\":{},\"158\":{},\"159\":{},\"160\":{},\"161\":{},\"162\":{},\"163\":{},\"164\":{},\"165\":{},\"166\":{},\"167\":{},\"168\":{},\"169\":{},\"170\":{},\"171\":{},\"172\":{},\"173\":{},\"174\":{}}}],[\"lib.units\",{\"_index\":122,\"name\":{},\"parent\":{\"175\":{}}}],[\"lib.units.__type\",{\"_index\":123,\"name\":{},\"parent\":{\"176\":{},\"177\":{},\"178\":{}}}],[\"link\",{\"_index\":392,\"name\":{\"550\":{}},\"parent\":{}}],[\"lowecasekeys\",{\"_index\":107,\"name\":{\"155\":{}},\"parent\":{}}],[\"makearray\",{\"_index\":111,\"name\":{\"161\":{}},\"parent\":{}}],[\"management_endpoint\",{\"_index\":323,\"name\":{\"430\":{}},\"parent\":{}}],[\"meta\",{\"_index\":347,\"name\":{\"460\":{},\"463\":{},\"470\":{},\"476\":{},\"482\":{},\"488\":{},\"494\":{},\"554\":{}},\"parent\":{}}],[\"modifierextension\",{\"_index\":365,\"name\":{\"503\":{},\"537\":{},\"543\":{}},\"parent\":{}}],[\"need_patient_banner\",{\"_index\":273,\"name\":{\"370\":{}},\"parent\":{}}],[\"nofreecontext\",{\"_index\":171,\"name\":{\"240\":{}},\"parent\":{}}],[\"noifnoauth\",{\"_index\":170,\"name\":{\"239\":{}},\"parent\":{}}],[\"noredirect\",{\"_index\":254,\"name\":{\"344\":{}},\"parent\":{}}],[\"noscopeforid\",{\"_index\":169,\"name\":{\"238\":{}},\"parent\":{}}],[\"oauth2\",{\"_index\":93,\"name\":{\"132\":{}},\"parent\":{}}],[\"oauthsecurityextensions\",{\"_index\":224,\"name\":{\"313\":{}},\"parent\":{}}],[\"observation\",{\"_index\":352,\"name\":{\"467\":{}},\"parent\":{}}],[\"observationmap\",{\"_index\":189,\"name\":{\"259\":{}},\"parent\":{}}],[\"only\",{\"_index\":60,\"name\":{\"65\":{}},\"parent\":{\"66\":{}}}],[\"only\\\".abortcontroller\",{\"_index\":61,\"name\":{},\"parent\":{\"67\":{}}}],[\"only\\\".abortcontroller.__type\",{\"_index\":62,\"name\":{},\"parent\":{\"68\":{}}}],[\"onmessage\",{\"_index\":156,\"name\":{\"217\":{}},\"parent\":{}}],[\"onpage\",{\"_index\":268,\"name\":{\"364\":{}},\"parent\":{}}],[\"op\",{\"_index\":293,\"name\":{\"393\":{},\"397\":{},\"401\":{},\"405\":{},\"409\":{},\"413\":{}},\"parent\":{}}],[\"options\",{\"_index\":67,\"name\":{\"74\":{},\"96\":{},\"111\":{},\"247\":{},\"261\":{}},\"parent\":{}}],[\"pagelimit\",{\"_index\":266,\"name\":{\"363\":{}},\"parent\":{}}],[\"parse\",{\"_index\":49,\"name\":{\"58\":{}},\"parent\":{}}],[\"password\",{\"_index\":241,\"name\":{\"328\":{}},\"parent\":{}}],[\"patch\",{\"_index\":30,\"name\":{\"35\":{}},\"parent\":{}}],[\"path\",{\"_index\":295,\"name\":{\"394\":{},\"398\":{},\"402\":{},\"406\":{},\"410\":{},\"414\":{}},\"parent\":{}}],[\"patient\",{\"_index\":6,\"name\":{\"5\":{},\"372\":{},\"473\":{}},\"parent\":{}}],[\"patientcompartment\",{\"_index\":131,\"name\":{\"191\":{}},\"parent\":{}}],[\"patientid\",{\"_index\":256,\"name\":{\"348\":{}},\"parent\":{}}],[\"patientparams\",{\"_index\":150,\"name\":{\"209\":{}},\"parent\":{}}],[\"period\",{\"_index\":360,\"name\":{\"497\":{},\"524\":{}},\"parent\":{}}],[\"permissions\",{\"_index\":317,\"name\":{\"425\":{}},\"parent\":{}}],[\"pkcemode\",{\"_index\":197,\"name\":{\"285\":{},\"358\":{}},\"parent\":{}}],[\"polyfill\",{\"_index\":52,\"name\":{\"60\":{},\"65\":{}},\"parent\":{\"61\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{}}}],[\"polyfill.\\\"abortcontroller\",{\"_index\":55,\"name\":{},\"parent\":{\"62\":{},\"63\":{},\"64\":{},\"66\":{},\"67\":{},\"68\":{}}}],[\"polyfill/dist/abortcontroller\",{\"_index\":59,\"name\":{\"65\":{}},\"parent\":{\"66\":{},\"67\":{},\"68\":{}}}],[\"polyfill/dist/cjs\",{\"_index\":53,\"name\":{\"61\":{}},\"parent\":{\"62\":{},\"63\":{},\"64\":{}}}],[\"ponyfill\",{\"_index\":54,\"name\":{\"61\":{}},\"parent\":{\"62\":{}}}],[\"ponyfill\\\".abortcontroller\",{\"_index\":56,\"name\":{},\"parent\":{\"63\":{}}}],[\"ponyfill\\\".abortcontroller.__type\",{\"_index\":58,\"name\":{},\"parent\":{\"64\":{}}}],[\"practitioner\",{\"_index\":355,\"name\":{\"479\":{}},\"parent\":{}}],[\"privatekey\",{\"_index\":263,\"name\":{\"360\":{}},\"parent\":{}}],[\"profile\",{\"_index\":282,\"name\":{\"382\":{}},\"parent\":{}}],[\"prototype\",{\"_index\":57,\"name\":{\"64\":{},\"68\":{},\"146\":{}},\"parent\":{}}],[\"randombytes\",{\"_index\":125,\"name\":{\"180\":{},\"274\":{}},\"parent\":{}}],[\"randomstring\",{\"_index\":113,\"name\":{\"163\":{}},\"parent\":{}}],[\"read\",{\"_index\":10,\"name\":{\"8\":{},\"14\":{},\"18\":{}},\"parent\":{}}],[\"ready\",{\"_index\":96,\"name\":{\"135\":{},\"218\":{},\"248\":{}},\"parent\":{}}],[\"readyoptions\",{\"_index\":262,\"name\":{\"359\":{}},\"parent\":{}}],[\"redirect\",{\"_index\":72,\"name\":{\"79\":{},\"95\":{},\"116\":{},\"263\":{}},\"parent\":{}}],[\"redirect_uri\",{\"_index\":253,\"name\":{\"343\":{}},\"parent\":{}}],[\"redirecturi\",{\"_index\":234,\"name\":{\"321\":{},\"342\":{}},\"parent\":{}}],[\"reference\",{\"_index\":381,\"name\":{\"528\":{},\"529\":{}},\"parent\":{}}],[\"refresh\",{\"_index\":32,\"name\":{\"38\":{}},\"parent\":{}}],[\"refresh_token\",{\"_index\":280,\"name\":{\"380\":{}},\"parent\":{}}],[\"refreshifneeded\",{\"_index\":31,\"name\":{\"37\":{}},\"parent\":{}}],[\"refreshtokenwithcredentials\",{\"_index\":184,\"name\":{\"255\":{}},\"parent\":{}}],[\"registration_endpoint\",{\"_index\":322,\"name\":{\"429\":{}},\"parent\":{}}],[\"registrationuri\",{\"_index\":225,\"name\":{\"314\":{},\"329\":{}},\"parent\":{}}],[\"relatedperson\",{\"_index\":357,\"name\":{\"485\":{}},\"parent\":{}}],[\"relation\",{\"_index\":384,\"name\":{\"535\":{}},\"parent\":{}}],[\"relative\",{\"_index\":69,\"name\":{\"76\":{},\"98\":{},\"113\":{},\"265\":{}},\"parent\":{}}],[\"replacebrowserhistory\",{\"_index\":181,\"name\":{\"253\":{}},\"parent\":{}}],[\"request\",{\"_index\":11,\"name\":{\"9\":{},\"36\":{},\"156\":{},\"230\":{}},\"parent\":{}}],[\"requestfunction\",{\"_index\":203,\"name\":{\"290\":{}},\"parent\":{}}],[\"requestoptions\",{\"_index\":221,\"name\":{\"310\":{}},\"parent\":{}}],[\"requestwithsession\",{\"_index\":176,\"name\":{\"244\":{}},\"parent\":{}}],[\"resolvereferences\",{\"_index\":271,\"name\":{\"367\":{}},\"parent\":{}}],[\"resource\",{\"_index\":345,\"name\":{\"457\":{},\"542\":{}},\"parent\":{}}],[\"resourcetype\",{\"_index\":16,\"name\":{\"20\":{},\"454\":{},\"459\":{},\"468\":{},\"474\":{},\"480\":{},\"486\":{},\"492\":{},\"553\":{}},\"parent\":{}}],[\"response\",{\"_index\":48,\"name\":{\"57\":{},\"296\":{}},\"parent\":{}}],[\"response_types_supported\",{\"_index\":329,\"name\":{\"436\":{}},\"parent\":{}}],[\"responsetojson\",{\"_index\":106,\"name\":{\"154\":{}},\"parent\":{}}],[\"rest\",{\"_index\":344,\"name\":{\"456\":{}},\"parent\":{}}],[\"revocation_endpoint\",{\"_index\":325,\"name\":{\"432\":{}},\"parent\":{}}],[\"rs384jwk\",{\"_index\":218,\"name\":{\"304\":{}},\"parent\":{}}],[\"scope\",{\"_index\":235,\"name\":{\"322\":{},\"347\":{},\"376\":{}},\"parent\":{}}],[\"scopes_supported\",{\"_index\":328,\"name\":{\"435\":{}},\"parent\":{}}],[\"security\",{\"_index\":68,\"name\":{\"75\":{},\"97\":{},\"112\":{},\"272\":{}},\"parent\":{}}],[\"security/browser\",{\"_index\":124,\"name\":{\"179\":{}},\"parent\":{\"180\":{},\"181\":{},\"182\":{},\"183\":{},\"184\":{}}}],[\"security/server\",{\"_index\":130,\"name\":{\"185\":{}},\"parent\":{\"186\":{},\"187\":{},\"188\":{},\"189\":{}}}],[\"serverurl\",{\"_index\":231,\"name\":{\"319\":{}},\"parent\":{}}],[\"session\",{\"_index\":177,\"name\":{\"245\":{}},\"parent\":{}}],[\"set\",{\"_index\":161,\"name\":{\"225\":{},\"232\":{},\"280\":{}},\"parent\":{}}],[\"setpath\",{\"_index\":110,\"name\":{\"160\":{}},\"parent\":{}}],[\"settings\",{\"_index\":94,\"name\":{\"134\":{},\"190\":{}},\"parent\":{\"191\":{},\"192\":{},\"209\":{},\"210\":{}}}],[\"settings.fhirversions\",{\"_index\":133,\"name\":{},\"parent\":{\"193\":{}}}],[\"settings.fhirversions.__type\",{\"_index\":135,\"name\":{},\"parent\":{\"194\":{},\"195\":{},\"196\":{},\"197\":{},\"198\":{},\"199\":{},\"200\":{},\"201\":{},\"202\":{},\"203\":{},\"204\":{},\"205\":{},\"206\":{},\"207\":{},\"208\":{}}}],[\"signcompactjws\",{\"_index\":128,\"name\":{\"183\":{},\"189\":{},\"278\":{}},\"parent\":{}}],[\"singlesignon\",{\"_index\":313,\"name\":{\"421\":{}},\"parent\":{}}],[\"smart\",{\"_index\":81,\"name\":{\"89\":{},\"211\":{},\"246\":{}},\"parent\":{\"212\":{},\"213\":{},\"214\":{},\"215\":{},\"216\":{},\"217\":{},\"218\":{},\"219\":{},\"220\":{},\"557\":{}}}],[\"smart_key\",{\"_index\":151,\"name\":{\"210\":{}},\"parent\":{}}],[\"smart_style_url\",{\"_index\":275,\"name\":{\"371\":{}},\"parent\":{}}],[\"smartauthenticationmethod\",{\"_index\":310,\"name\":{\"418\":{}},\"parent\":{}}],[\"start\",{\"_index\":361,\"name\":{\"498\":{}},\"parent\":{}}],[\"state\",{\"_index\":4,\"name\":{\"3\":{}},\"parent\":{}}],[\"status\",{\"_index\":46,\"name\":{\"55\":{}},\"parent\":{}}],[\"statuscode\",{\"_index\":45,\"name\":{\"54\":{}},\"parent\":{}}],[\"statustext\",{\"_index\":47,\"name\":{\"56\":{}},\"parent\":{}}],[\"storage\",{\"_index\":193,\"name\":{\"279\":{}},\"parent\":{}}],[\"storage/browserstorage\",{\"_index\":158,\"name\":{\"221\":{}},\"parent\":{\"222\":{}}}],[\"storage/browserstorage.default\",{\"_index\":159,\"name\":{},\"parent\":{\"223\":{},\"224\":{},\"225\":{},\"226\":{}}}],[\"storage/serverstorage\",{\"_index\":163,\"name\":{\"227\":{}},\"parent\":{\"228\":{}}}],[\"storage/serverstorage.default\",{\"_index\":164,\"name\":{},\"parent\":{\"229\":{},\"230\":{},\"231\":{},\"232\":{},\"233\":{}}}],[\"storagefactory\",{\"_index\":198,\"name\":{\"286\":{}},\"parent\":{}}],[\"strings\",{\"_index\":165,\"name\":{\"234\":{}},\"parent\":{\"235\":{}}}],[\"strings.default\",{\"_index\":166,\"name\":{},\"parent\":{\"236\":{}}}],[\"strings.default.__type\",{\"_index\":168,\"name\":{},\"parent\":{\"237\":{},\"238\":{},\"239\":{},\"240\":{}}}],[\"sub\",{\"_index\":285,\"name\":{\"384\":{}},\"parent\":{}}],[\"system\",{\"_index\":371,\"name\":{\"512\":{},\"522\":{}},\"parent\":{}}],[\"target\",{\"_index\":259,\"name\":{\"354\":{}},\"parent\":{}}],[\"text\",{\"_index\":370,\"name\":{\"508\":{}},\"parent\":{}}],[\"tojson\",{\"_index\":50,\"name\":{\"59\":{}},\"parent\":{}}],[\"token_endpoint\",{\"_index\":321,\"name\":{\"428\":{}},\"parent\":{}}],[\"token_endpoint_auth_methods\",{\"_index\":327,\"name\":{\"434\":{}},\"parent\":{}}],[\"token_type\",{\"_index\":276,\"name\":{\"375\":{}},\"parent\":{}}],[\"tokenresponse\",{\"_index\":239,\"name\":{\"326\":{},\"369\":{}},\"parent\":{}}],[\"tokenuri\",{\"_index\":228,\"name\":{\"316\":{},\"331\":{}},\"parent\":{}}],[\"total\",{\"_index\":391,\"name\":{\"549\":{}},\"parent\":{}}],[\"type\",{\"_index\":379,\"name\":{\"521\":{},\"548\":{}},\"parent\":{}}],[\"types\",{\"_index\":172,\"name\":{\"241\":{}},\"parent\":{\"242\":{}}}],[\"types.fhirclient\",{\"_index\":175,\"name\":{},\"parent\":{\"243\":{},\"244\":{},\"246\":{},\"252\":{},\"256\":{},\"259\":{},\"260\":{},\"279\":{},\"283\":{},\"284\":{},\"285\":{},\"286\":{},\"288\":{},\"290\":{},\"292\":{},\"294\":{},\"297\":{},\"298\":{},\"304\":{},\"309\":{},\"310\":{},\"313\":{},\"318\":{},\"337\":{},\"359\":{},\"362\":{},\"369\":{},\"381\":{},\"388\":{},\"389\":{},\"390\":{},\"391\":{},\"392\":{},\"396\":{},\"400\":{},\"404\":{},\"408\":{},\"412\":{},\"415\":{},\"416\":{},\"417\":{},\"418\":{},\"419\":{},\"420\":{},\"421\":{},\"422\":{},\"423\":{},\"424\":{},\"425\":{},\"426\":{},\"438\":{}}}],[\"types.fhirclient.adapter\",{\"_index\":191,\"name\":{},\"parent\":{\"261\":{},\"262\":{},\"263\":{},\"264\":{},\"265\":{},\"266\":{},\"267\":{},\"268\":{},\"269\":{},\"270\":{},\"271\":{},\"272\":{},\"273\":{}}}],[\"types.fhirclient.adapter.__type\",{\"_index\":192,\"name\":{},\"parent\":{\"274\":{},\"275\":{},\"276\":{},\"277\":{},\"278\":{}}}],[\"types.fhirclient.authorizeparams\",{\"_index\":249,\"name\":{},\"parent\":{\"338\":{},\"339\":{},\"340\":{},\"341\":{},\"342\":{},\"343\":{},\"344\":{},\"345\":{},\"346\":{},\"347\":{},\"348\":{},\"349\":{},\"350\":{},\"351\":{},\"352\":{},\"353\":{},\"354\":{},\"355\":{},\"356\":{},\"357\":{},\"358\":{}}}],[\"types.fhirclient.browserfhirsettings\",{\"_index\":182,\"name\":{},\"parent\":{\"253\":{},\"254\":{},\"255\":{}}}],[\"types.fhirclient.clientstate\",{\"_index\":232,\"name\":{},\"parent\":{\"319\":{},\"320\":{},\"321\":{},\"322\":{},\"323\":{},\"324\":{},\"325\":{},\"326\":{},\"327\":{},\"328\":{},\"329\":{},\"330\":{},\"331\":{},\"332\":{},\"333\":{},\"334\":{},\"335\":{},\"336\":{}}}],[\"types.fhirclient.codevalue\",{\"_index\":187,\"name\":{},\"parent\":{\"257\":{},\"258\":{}}}],[\"types.fhirclient.combinedfetchresult\",{\"_index\":209,\"name\":{},\"parent\":{\"295\":{},\"296\":{}}}],[\"types.fhirclient.es384jwk\",{\"_index\":213,\"name\":{},\"parent\":{\"299\":{},\"300\":{},\"301\":{},\"302\":{},\"303\":{}}}],[\"types.fhirclient.fetchoptions\",{\"_index\":206,\"name\":{},\"parent\":{\"293\":{}}}],[\"types.fhirclient.fhir\",{\"_index\":331,\"name\":{},\"parent\":{\"439\":{},\"440\":{},\"441\":{},\"442\":{},\"443\":{},\"444\":{},\"445\":{},\"446\":{},\"449\":{},\"453\":{},\"457\":{},\"463\":{},\"467\":{},\"473\":{},\"479\":{},\"485\":{},\"491\":{},\"497\":{},\"502\":{},\"506\":{},\"511\":{},\"519\":{},\"528\":{},\"534\":{},\"540\":{},\"546\":{}}}],[\"types.fhirclient.fhir.backboneelement\",{\"_index\":366,\"name\":{},\"parent\":{\"503\":{},\"504\":{},\"505\":{}}}],[\"types.fhirclient.fhir.bundle\",{\"_index\":390,\"name\":{},\"parent\":{\"547\":{},\"548\":{},\"549\":{},\"550\":{},\"551\":{},\"552\":{},\"553\":{},\"554\":{},\"555\":{},\"556\":{}}}],[\"types.fhirclient.fhir.bundleentry\",{\"_index\":388,\"name\":{},\"parent\":{\"541\":{},\"542\":{},\"543\":{},\"544\":{},\"545\":{}}}],[\"types.fhirclient.fhir.bundlelink\",{\"_index\":385,\"name\":{},\"parent\":{\"535\":{},\"536\":{},\"537\":{},\"538\":{},\"539\":{}}}],[\"types.fhirclient.fhir.capabilitystatement\",{\"_index\":342,\"name\":{},\"parent\":{\"454\":{},\"455\":{},\"456\":{}}}],[\"types.fhirclient.fhir.codeableconcept\",{\"_index\":369,\"name\":{},\"parent\":{\"507\":{},\"508\":{},\"509\":{},\"510\":{}}}],[\"types.fhirclient.fhir.coding\",{\"_index\":372,\"name\":{},\"parent\":{\"512\":{},\"513\":{},\"514\":{},\"515\":{},\"516\":{},\"517\":{},\"518\":{}}}],[\"types.fhirclient.fhir.element\",{\"_index\":338,\"name\":{},\"parent\":{\"447\":{},\"448\":{}}}],[\"types.fhirclient.fhir.encounter\",{\"_index\":359,\"name\":{},\"parent\":{\"492\":{},\"493\":{},\"494\":{},\"495\":{},\"496\":{}}}],[\"types.fhirclient.fhir.extension\",{\"_index\":340,\"name\":{},\"parent\":{\"450\":{},\"451\":{},\"452\":{}}}],[\"types.fhirclient.fhir.identifier\",{\"_index\":378,\"name\":{},\"parent\":{\"520\":{},\"521\":{},\"522\":{},\"523\":{},\"524\":{},\"525\":{},\"526\":{},\"527\":{}}}],[\"types.fhirclient.fhir.meta\",{\"_index\":351,\"name\":{},\"parent\":{\"464\":{},\"465\":{},\"466\":{}}}],[\"types.fhirclient.fhir.observation\",{\"_index\":353,\"name\":{},\"parent\":{\"468\":{},\"469\":{},\"470\":{},\"471\":{},\"472\":{}}}],[\"types.fhirclient.fhir.patient\",{\"_index\":354,\"name\":{},\"parent\":{\"474\":{},\"475\":{},\"476\":{},\"477\":{},\"478\":{}}}],[\"types.fhirclient.fhir.period\",{\"_index\":362,\"name\":{},\"parent\":{\"498\":{},\"499\":{},\"500\":{},\"501\":{}}}],[\"types.fhirclient.fhir.practitioner\",{\"_index\":356,\"name\":{},\"parent\":{\"480\":{},\"481\":{},\"482\":{},\"483\":{},\"484\":{}}}],[\"types.fhirclient.fhir.reference\",{\"_index\":382,\"name\":{},\"parent\":{\"529\":{},\"530\":{},\"531\":{},\"532\":{},\"533\":{}}}],[\"types.fhirclient.fhir.relatedperson\",{\"_index\":358,\"name\":{},\"parent\":{\"486\":{},\"487\":{},\"488\":{},\"489\":{},\"490\":{}}}],[\"types.fhirclient.fhir.resource\",{\"_index\":346,\"name\":{},\"parent\":{\"458\":{},\"459\":{},\"460\":{},\"461\":{},\"462\":{}}}],[\"types.fhirclient.fhiroptions\",{\"_index\":267,\"name\":{},\"parent\":{\"363\":{},\"364\":{},\"365\":{},\"366\":{},\"367\":{},\"368\":{}}}],[\"types.fhirclient.idtoken\",{\"_index\":283,\"name\":{},\"parent\":{\"382\":{},\"383\":{},\"384\":{},\"385\":{},\"386\":{},\"387\":{}}}],[\"types.fhirclient.includeresponsehint\",{\"_index\":202,\"name\":{},\"parent\":{\"289\":{}}}],[\"types.fhirclient.jsonpatchadd\",{\"_index\":294,\"name\":{},\"parent\":{\"393\":{},\"394\":{},\"395\":{}}}],[\"types.fhirclient.jsonpatchcopy\",{\"_index\":304,\"name\":{},\"parent\":{\"409\":{},\"410\":{},\"411\":{}}}],[\"types.fhirclient.jsonpatchmove\",{\"_index\":301,\"name\":{},\"parent\":{\"405\":{},\"406\":{},\"407\":{}}}],[\"types.fhirclient.jsonpatchremove\",{\"_index\":306,\"name\":{},\"parent\":{\"413\":{},\"414\":{}}}],[\"types.fhirclient.jsonpatchreplace\",{\"_index\":297,\"name\":{},\"parent\":{\"397\":{},\"398\":{},\"399\":{}}}],[\"types.fhirclient.jsonpatchtest\",{\"_index\":299,\"name\":{},\"parent\":{\"401\":{},\"402\":{},\"403\":{}}}],[\"types.fhirclient.oauthsecurityextensions\",{\"_index\":226,\"name\":{},\"parent\":{\"314\":{},\"315\":{},\"316\":{},\"317\":{}}}],[\"types.fhirclient.readyoptions\",{\"_index\":264,\"name\":{},\"parent\":{\"360\":{},\"361\":{}}}],[\"types.fhirclient.requestfunction\",{\"_index\":204,\"name\":{},\"parent\":{\"291\":{}}}],[\"types.fhirclient.requestoptions\",{\"_index\":223,\"name\":{},\"parent\":{\"311\":{},\"312\":{}}}],[\"types.fhirclient.requestwithsession\",{\"_index\":178,\"name\":{},\"parent\":{\"245\":{}}}],[\"types.fhirclient.rs384jwk\",{\"_index\":219,\"name\":{},\"parent\":{\"305\":{},\"306\":{},\"307\":{},\"308\":{}}}],[\"types.fhirclient.smart\",{\"_index\":179,\"name\":{},\"parent\":{\"247\":{},\"248\":{},\"249\":{},\"250\":{},\"251\":{}}}],[\"types.fhirclient.storage\",{\"_index\":194,\"name\":{},\"parent\":{\"280\":{},\"281\":{},\"282\":{}}}],[\"types.fhirclient.storagefactory\",{\"_index\":199,\"name\":{},\"parent\":{\"287\":{}}}],[\"types.fhirclient.tokenresponse\",{\"_index\":274,\"name\":{},\"parent\":{\"370\":{},\"371\":{},\"372\":{},\"373\":{},\"374\":{},\"375\":{},\"376\":{},\"377\":{},\"378\":{},\"379\":{},\"380\":{}}}],[\"types.fhirclient.wellknownsmartconfiguration\",{\"_index\":320,\"name\":{},\"parent\":{\"427\":{},\"428\":{},\"429\":{},\"430\":{},\"431\":{},\"432\":{},\"433\":{},\"434\":{},\"435\":{},\"436\":{},\"437\":{}}}],[\"units\",{\"_index\":35,\"name\":{\"41\":{},\"174\":{}},\"parent\":{}}],[\"unset\",{\"_index\":162,\"name\":{\"226\":{},\"233\":{},\"282\":{}},\"parent\":{}}],[\"unsignedint\",{\"_index\":335,\"name\":{\"444\":{}},\"parent\":{}}],[\"update\",{\"_index\":28,\"name\":{\"33\":{}},\"parent\":{}}],[\"uri\",{\"_index\":332,\"name\":{\"440\":{}},\"parent\":{}}],[\"url\",{\"_index\":222,\"name\":{\"311\":{},\"450\":{},\"536\":{}},\"parent\":{}}],[\"use\",{\"_index\":377,\"name\":{\"520\":{}},\"parent\":{}}],[\"user\",{\"_index\":14,\"name\":{\"15\":{}},\"parent\":{}}],[\"userefreshtoken\",{\"_index\":272,\"name\":{\"368\":{}},\"parent\":{}}],[\"username\",{\"_index\":240,\"name\":{\"327\":{}},\"parent\":{}}],[\"userselected\",{\"_index\":375,\"name\":{\"516\":{}},\"parent\":{}}],[\"utils\",{\"_index\":92,\"name\":{\"131\":{}},\"parent\":{}}],[\"value\",{\"_index\":188,\"name\":{\"258\":{},\"395\":{},\"399\":{},\"403\":{},\"523\":{}},\"parent\":{}}],[\"valuex\",{\"_index\":336,\"name\":{\"445\":{}},\"parent\":{}}],[\"version\",{\"_index\":373,\"name\":{\"513\":{}},\"parent\":{}}],[\"wellknownsmartconfiguration\",{\"_index\":318,\"name\":{\"426\":{}},\"parent\":{}}],[\"width\",{\"_index\":260,\"name\":{\"355\":{}},\"parent\":{}}],[\"windowtarget\",{\"_index\":196,\"name\":{\"284\":{}},\"parent\":{}}],[\"windowtargetfunction\",{\"_index\":174,\"name\":{\"243\":{}},\"parent\":{}}],[\"windowtargetvariable\",{\"_index\":195,\"name\":{\"283\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/typedoc/assets/style.css b/docs/typedoc/assets/style.css new file mode 100644 index 00000000..6127b27c --- /dev/null +++ b/docs/typedoc/assets/style.css @@ -0,0 +1,1414 @@ +@import url("./icons.css"); + +:root { + /* Light */ + --light-color-background: #fcfcfc; + --light-color-secondary-background: #fff; + --light-color-text: #222; + --light-color-text-aside: #707070; + --light-color-link: #4da6ff; + --light-color-menu-divider: #eee; + --light-color-menu-divider-focus: #000; + --light-color-menu-label: #707070; + --light-color-panel: var(--light-color-secondary-background); + --light-color-panel-divider: #eee; + --light-color-comment-tag: #707070; + --light-color-comment-tag-text: #fff; + --light-color-ts: #9600ff; + --light-color-ts-interface: #647f1b; + --light-color-ts-enum: #937210; + --light-color-ts-class: #0672de; + --light-color-ts-private: #707070; + --light-color-toolbar: #fff; + --light-color-toolbar-text: #333; + --light-icon-filter: invert(0); + --light-external-icon: url("data:image/svg+xml;utf8,"); + + /* Dark */ + --dark-color-background: #36393f; + --dark-color-secondary-background: #2f3136; + --dark-color-text: #ffffff; + --dark-color-text-aside: #e6e4e4; + --dark-color-link: #00aff4; + --dark-color-menu-divider: #eee; + --dark-color-menu-divider-focus: #000; + --dark-color-menu-label: #707070; + --dark-color-panel: var(--dark-color-secondary-background); + --dark-color-panel-divider: #818181; + --dark-color-comment-tag: #dcddde; + --dark-color-comment-tag-text: #2f3136; + --dark-color-ts: #c97dff; + --dark-color-ts-interface: #9cbe3c; + --dark-color-ts-enum: #d6ab29; + --dark-color-ts-class: #3695f3; + --dark-color-ts-private: #e2e2e2; + --dark-color-toolbar: #34373c; + --dark-color-toolbar-text: #ffffff; + --dark-icon-filter: invert(1); + --dark-external-icon: url("data:image/svg+xml;utf8,"); +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-secondary-background: var(--light-color-secondary-background); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-menu-divider: var(--light-color-menu-divider); + --color-menu-divider-focus: var(--light-color-menu-divider-focus); + --color-menu-label: var(--light-color-menu-label); + --color-panel: var(--light-color-panel); + --color-panel-divider: var(--light-color-panel-divider); + --color-comment-tag: var(--light-color-comment-tag); + --color-comment-tag-text: var(--light-color-comment-tag-text); + --color-ts: var(--light-color-ts); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-class: var(--light-color-ts-class); + --color-ts-private: var(--light-color-ts-private); + --color-toolbar: var(--light-color-toolbar); + --color-toolbar-text: var(--light-color-toolbar-text); + --icon-filter: var(--light-icon-filter); + --external-icon: var(--light-external-icon); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-secondary-background: var(--dark-color-secondary-background); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-menu-divider: var(--dark-color-menu-divider); + --color-menu-divider-focus: var(--dark-color-menu-divider-focus); + --color-menu-label: var(--dark-color-menu-label); + --color-panel: var(--dark-color-panel); + --color-panel-divider: var(--dark-color-panel-divider); + --color-comment-tag: var(--dark-color-comment-tag); + --color-comment-tag-text: var(--dark-color-comment-tag-text); + --color-ts: var(--dark-color-ts); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-private: var(--dark-color-ts-private); + --color-toolbar: var(--dark-color-toolbar); + --color-toolbar-text: var(--dark-color-toolbar-text); + --icon-filter: var(--dark-icon-filter); + --external-icon: var(--dark-external-icon); + } +} + +body { + margin: 0; +} + +body.light { + --color-background: var(--light-color-background); + --color-secondary-background: var(--light-color-secondary-background); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-menu-divider: var(--light-color-menu-divider); + --color-menu-divider-focus: var(--light-color-menu-divider-focus); + --color-menu-label: var(--light-color-menu-label); + --color-panel: var(--light-color-panel); + --color-panel-divider: var(--light-color-panel-divider); + --color-comment-tag: var(--light-color-comment-tag); + --color-comment-tag-text: var(--light-color-comment-tag-text); + --color-ts: var(--light-color-ts); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-class: var(--light-color-ts-class); + --color-ts-private: var(--light-color-ts-private); + --color-toolbar: var(--light-color-toolbar); + --color-toolbar-text: var(--light-color-toolbar-text); + --icon-filter: var(--light-icon-filter); + --external-icon: var(--light-external-icon); +} + +body.dark { + --color-background: var(--dark-color-background); + --color-secondary-background: var(--dark-color-secondary-background); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-menu-divider: var(--dark-color-menu-divider); + --color-menu-divider-focus: var(--dark-color-menu-divider-focus); + --color-menu-label: var(--dark-color-menu-label); + --color-panel: var(--dark-color-panel); + --color-panel-divider: var(--dark-color-panel-divider); + --color-comment-tag: var(--dark-color-comment-tag); + --color-comment-tag-text: var(--dark-color-comment-tag-text); + --color-ts: var(--dark-color-ts); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-private: var(--dark-color-ts-private); + --color-toolbar: var(--dark-color-toolbar); + --color-toolbar-text: var(--dark-color-toolbar-text); + --icon-filter: var(--dark-icon-filter); + --external-icon: var(--dark-external-icon); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4, +.tsd-index-panel h3 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 40px; +} +@media (max-width: 640px) { + .container { + padding: 0 20px; + } +} + +.container-main { + padding-bottom: 200px; +} + +.row { + display: flex; + position: relative; + margin: 0 -10px; +} +.row:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +.col-4, +.col-8 { + box-sizing: border-box; + float: left; + padding: 0 10px; +} + +.col-4 { + width: 33.3333333333%; +} +.col-8 { + width: 66.6666666667%; +} + +ul.tsd-descriptions > li > :first-child, +.tsd-panel > :first-child, +.col-8 > :first-child, +.col-4 > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child, +.tsd-panel > :first-child > :first-child, +.col-8 > :first-child > :first-child, +.col-4 > :first-child > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child > :first-child, +.tsd-panel > :first-child > :first-child > :first-child, +.col-8 > :first-child > :first-child > :first-child, +.col-4 > :first-child > :first-child > :first-child { + margin-top: 0; +} +ul.tsd-descriptions > li > :last-child, +.tsd-panel > :last-child, +.col-8 > :last-child, +.col-4 > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child, +.tsd-panel > :last-child > :last-child, +.col-8 > :last-child > :last-child, +.col-4 > :last-child > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child > :last-child, +.tsd-panel > :last-child > :last-child > :last-child, +.col-8 > :last-child > :last-child > :last-child, +.col-4 > :last-child > :last-child > :last-child { + margin-bottom: 0; +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes shift-to-left { + from { + transform: translate(0, 0); + } + to { + transform: translate(-25%, 0); + } +} +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 14px; +} + +pre { + padding: 10px; +} +pre code { + padding: 0; + font-size: 100%; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography h4, +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; + margin: 0; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} + +@media (min-width: 901px) and (max-width: 1024px) { + html .col-content { + width: 72%; + } + html .col-menu { + width: 28%; + } + html .tsd-navigation { + padding-left: 10px; + } +} +@media (max-width: 900px) { + html .col-content { + float: none; + width: 100%; + } + html .col-menu { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + width: 100%; + padding: 20px 20px 0 0; + max-width: 450px; + visibility: hidden; + background-color: var(--color-panel); + transform: translate(100%, 0); + } + html .col-menu > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu :is(header, footer, .col-content) { + animation: shift-to-left 0.4s; + } + + .to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu :is(header, footer, .col-content) { + animation: unshift-to-left 0.4s; + } + + .from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu :is(header, footer, .col-content) { + transform: translate(-25%, 0); + } + .has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); + display: grid; + grid-template-rows: auto 1fr; + max-height: 100vh; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +.tsd-page-title { + padding: 70px 0 20px 0; + margin: 0 0 40px 0; + background: var(--color-panel); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +} +.tsd-page-title h1 { + margin: 0; +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +dl.tsd-comment-tags { + overflow: hidden; +} +dl.tsd-comment-tags dt { + float: left; + padding: 1px 5px; + margin: 0 10px 0 0; + border-radius: 4px; + border: 1px solid var(--color-comment-tag); + color: var(--color-comment-tag); + font-size: 0.8em; + font-weight: normal; +} +dl.tsd-comment-tags dd { + margin: 0 0 10px 0; +} +dl.tsd-comment-tags dd:before, +dl.tsd-comment-tags dd:after { + display: table; + content: " "; +} +dl.tsd-comment-tags dd pre, +dl.tsd-comment-tags dd:after { + clear: both; +} +dl.tsd-comment-tags p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.toggle-protected .tsd-is-private { + display: none; +} + +.toggle-public .tsd-is-private, +.toggle-public .tsd-is-protected, +.toggle-public .tsd-is-private-protected { + display: none; +} + +.toggle-inherited .tsd-is-inherited { + display: none; +} + +.toggle-externals .tsd-is-external { + display: none; +} + +#tsd-filter { + position: relative; + display: inline-block; + height: 40px; + vertical-align: bottom; +} +.no-filter #tsd-filter { + display: none; +} +#tsd-filter .tsd-filter-group { + display: inline-block; + height: 40px; + vertical-align: bottom; + white-space: nowrap; +} +#tsd-filter input { + display: none; +} +@media (max-width: 900px) { + #tsd-filter .tsd-filter-group { + display: block; + position: absolute; + top: 40px; + right: 20px; + height: auto; + background-color: var(--color-panel); + visibility: hidden; + transform: translate(50%, 0); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + } + .has-options #tsd-filter .tsd-filter-group { + visibility: visible; + } + .to-has-options #tsd-filter .tsd-filter-group { + animation: fade-in 0.2s; + } + .from-has-options #tsd-filter .tsd-filter-group { + animation: fade-out 0.2s; + } + #tsd-filter label, + #tsd-filter .tsd-select { + display: block; + padding-right: 20px; + } +} + +footer { + border-top: 1px solid var(--color-panel-divider); + background-color: var(--color-panel); +} +footer:after { + content: ""; + display: table; +} +footer.with-border-bottom { + border-bottom: 1px solid var(--color-panel-divider); +} +footer .tsd-legend-group { + font-size: 0; +} +footer .tsd-legend { + display: inline-block; + width: 25%; + padding: 0; + font-size: 16px; + list-style: none; + line-height: 1.333em; + vertical-align: top; +} +@media (max-width: 900px) { + footer .tsd-legend { + width: 50%; + } +} + +.tsd-hierarchy { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-index-panel .tsd-index-content { + margin-bottom: -30px !important; +} +.tsd-index-panel .tsd-index-section { + margin-bottom: 30px !important; +} +.tsd-index-panel h3 { + margin: 0 -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid var(--color-panel-divider); +} +.tsd-index-panel ul.tsd-index-list { + -webkit-column-count: 3; + -moz-column-count: 3; + -ms-column-count: 3; + -o-column-count: 3; + column-count: 3; + -webkit-column-gap: 20px; + -moz-column-gap: 20px; + -ms-column-gap: 20px; + -o-column-gap: 20px; + column-gap: 20px; + padding: 0; + list-style: none; + line-height: 1.333em; +} +@media (max-width: 900px) { + .tsd-index-panel ul.tsd-index-list { + -webkit-column-count: 1; + -moz-column-count: 1; + -ms-column-count: 1; + -o-column-count: 1; + column-count: 1; + } +} +@media (min-width: 901px) and (max-width: 1024px) { + .tsd-index-panel ul.tsd-index-list { + -webkit-column-count: 2; + -moz-column-count: 2; + -ms-column-count: 2; + -o-column-count: 2; + column-count: 2; + } +} +.tsd-index-panel ul.tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} +.tsd-index-panel a, +.tsd-index-panel .tsd-parent-kind-module a { + color: var(--color-ts); +} +.tsd-index-panel .tsd-parent-kind-interface a { + color: var(--color-ts-interface); +} +.tsd-index-panel .tsd-parent-kind-enum a { + color: var(--color-ts-enum); +} +.tsd-index-panel .tsd-parent-kind-class a { + color: var(--color-ts-class); +} +.tsd-index-panel .tsd-kind-module a { + color: var(--color-ts); +} +.tsd-index-panel .tsd-kind-interface a { + color: var(--color-ts-interface); +} +.tsd-index-panel .tsd-kind-enum a { + color: var(--color-ts-enum); +} +.tsd-index-panel .tsd-kind-class a { + color: var(--color-ts-class); +} +.tsd-index-panel .tsd-is-private a { + color: var(--color-ts-private); +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: absolute; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} +.tsd-member [data-tsd-kind] { + color: var(--color-ts); +} +.tsd-member [data-tsd-kind="Interface"] { + color: var(--color-ts-interface); +} +.tsd-member [data-tsd-kind="Enum"] { + color: var(--color-ts-enum); +} +.tsd-member [data-tsd-kind="Class"] { + color: var(--color-ts-class); +} +.tsd-member [data-tsd-kind="Private"] { + color: var(--color-ts-private); +} + +.tsd-navigation { + margin: 0 0 0 40px; +} +.tsd-navigation a { + display: block; + padding-top: 2px; + padding-bottom: 2px; + border-left: 2px solid transparent; + color: var(--color-text); + text-decoration: none; + transition: border-left-color 0.1s; +} +.tsd-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul { + margin: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li { + padding: 0; +} + +.tsd-navigation.primary { + padding-bottom: 40px; +} +.tsd-navigation.primary a { + display: block; + padding-top: 6px; + padding-bottom: 6px; +} +.tsd-navigation.primary ul li a { + padding-left: 5px; +} +.tsd-navigation.primary ul li li a { + padding-left: 25px; +} +.tsd-navigation.primary ul li li li a { + padding-left: 45px; +} +.tsd-navigation.primary ul li li li li a { + padding-left: 65px; +} +.tsd-navigation.primary ul li li li li li a { + padding-left: 85px; +} +.tsd-navigation.primary ul li li li li li li a { + padding-left: 105px; +} +.tsd-navigation.primary > ul { + border-bottom: 1px solid var(--color-panel-divider); +} +.tsd-navigation.primary li { + border-top: 1px solid var(--color-panel-divider); +} +.tsd-navigation.primary li.current > a { + font-weight: bold; +} +.tsd-navigation.primary li.label span { + display: block; + padding: 20px 0 6px 5px; + color: var(--color-menu-label); +} +.tsd-navigation.primary li.globals + li > span, +.tsd-navigation.primary li.globals + li > a { + padding-top: 20px; +} + +.tsd-navigation.secondary { + max-height: calc(100vh - 1rem - 40px); + overflow: auto; + position: sticky; + top: calc(0.5rem + 40px); + transition: 0.3s; +} +.tsd-navigation.secondary.tsd-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: 0.5rem; +} +.tsd-navigation.secondary ul { + transition: opacity 0.2s; +} +.tsd-navigation.secondary ul li a { + padding-left: 25px; +} +.tsd-navigation.secondary ul li li a { + padding-left: 45px; +} +.tsd-navigation.secondary ul li li li a { + padding-left: 65px; +} +.tsd-navigation.secondary ul li li li li a { + padding-left: 85px; +} +.tsd-navigation.secondary ul li li li li li a { + padding-left: 105px; +} +.tsd-navigation.secondary ul li li li li li li a { + padding-left: 125px; +} +.tsd-navigation.secondary ul.current a { + border-left-color: var(--color-panel-divider); +} +.tsd-navigation.secondary li.focus > a, +.tsd-navigation.secondary ul.current li.focus > a { + border-left-color: var(--color-menu-divider-focus); +} +.tsd-navigation.secondary li.current { + margin-top: 20px; + margin-bottom: 20px; + border-left-color: var(--color-panel-divider); +} +.tsd-navigation.secondary li.current > a { + font-weight: bold; +} + +@media (min-width: 901px) { + .menu-sticky-wrap { + position: static; + } +} + +.tsd-panel { + margin: 20px 0; + padding: 20px; + background-color: var(--color-panel); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5em -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid var(--color-panel-divider); +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: 0; +} +.tsd-panel table { + display: block; + width: 100%; + overflow: auto; + margin-top: 10px; + word-break: normal; + word-break: keep-all; + border-collapse: collapse; +} +.tsd-panel table th { + font-weight: bold; +} +.tsd-panel table th, +.tsd-panel table td { + padding: 6px 13px; + border: 1px solid var(--color-panel-divider); +} +.tsd-panel table tr { + background: var(--color-background); +} +.tsd-panel table tr:nth-child(even) { + background: var(--color-secondary-background); +} + +.tsd-panel-group { + margin: 60px 0; +} +.tsd-panel-group > h1, +.tsd-panel-group > h2, +.tsd-panel-group > h3 { + padding-left: 20px; + padding-right: 20px; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 40px; + height: 40px; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + padding: 0 10px; + background-color: var(--color-background); +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-panel); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current, +#tsd-search .results li:hover { + background-color: var(--color-panel-divider); +} +#tsd-search .results a { + display: block; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-panel-divider); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +.tsd-signature { + margin: 0 0 1em 0; + padding: 10px; + border: 1px solid var(--color-panel-divider); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} +.tsd-signature.tsd-kind-icon { + padding-left: 30px; +} +.tsd-signature.tsd-kind-icon:before { + top: 10px; + left: 10px; +} +.tsd-panel > .tsd-signature { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; +} +.tsd-panel > .tsd-signature.tsd-kind-icon { + padding-left: 40px; +} +.tsd-panel > .tsd-signature.tsd-kind-icon:before { + left: 20px; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + border: 1px solid var(--color-panel-divider); +} +.tsd-signatures .tsd-signature { + margin: 0; + border-width: 1px 0 0 0; + transition: background-color 0.1s; +} +.tsd-signatures .tsd-signature:first-child { + border-top-width: 0; +} +.tsd-signatures .tsd-signature.current { + background-color: var(--color-panel-divider); +} +.tsd-signatures.active > .tsd-signature { + cursor: pointer; +} +.tsd-panel > .tsd-signatures { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; +} +.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { + padding-left: 40px; +} +.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { + left: 20px; +} +.tsd-panel > a.anchor + .tsd-signatures { + border-top-width: 0; + margin-top: -20px; +} + +ul.tsd-descriptions { + position: relative; + overflow: hidden; + padding: 0; + list-style: none; +} +ul.tsd-descriptions.active > .tsd-description { + display: none; +} +ul.tsd-descriptions.active > .tsd-description.current { + display: block; +} +ul.tsd-descriptions.active > .tsd-description.fade-in { + animation: fade-in-delayed 0.3s; +} +ul.tsd-descriptions.active > .tsd-description.fade-out { + animation: fade-out-delayed 0.3s; + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + opacity: 0; + visibility: hidden; +} +ul.tsd-descriptions h4, +ul.tsd-descriptions .tsd-index-panel h3, +.tsd-index-panel ul.tsd-descriptions h3 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} + +ul.tsd-parameters, +ul.tsd-type-parameters { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameters > li.tsd-parameter-signature, +ul.tsd-type-parameters > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameters h5, +ul.tsd-type-parameters h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +ul.tsd-parameters .tsd-comment, +ul.tsd-type-parameters .tsd-comment { + margin-top: -0.5em; +} + +.tsd-sources { + font-size: 14px; + color: var(--color-text-aside); + margin: 0 0 1em 0; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul, +.tsd-sources p { + margin: 0 !important; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: fixed; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 40px; + color: var(--color-toolbar-text); + background: var(--color-toolbar); + border-bottom: 1px solid var(--color-panel-divider); + transition: transform 0.3s linear; +} +.tsd-page-toolbar a { + color: var(--color-toolbar-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .table-wrap { + display: table; + width: 100%; + height: 40px; +} +.tsd-page-toolbar .table-cell { + display: table-cell; + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} + +.tsd-page-toolbar--hide { + transform: translateY(-100%); +} + +.tsd-select .tsd-select-list li:before, +.tsd-select .tsd-select-label:before, +.tsd-widget:before { + content: ""; + display: inline-block; + width: 40px; + height: 40px; + margin: 0 -8px 0 0; + background-image: url(./widgets.png); + background-repeat: no-repeat; + text-indent: -1024px; + vertical-align: bottom; + filter: var(--icon-filter); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-select .tsd-select-list li:before, + .tsd-select .tsd-select-label:before, + .tsd-widget:before { + background-image: url(./widgets@2x.png); + background-size: 320px 40px; + } +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-panel-divider); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} +.tsd-widget.search:before { + background-position: 0 0; +} +.tsd-widget.menu:before { + background-position: -40px 0; +} +.tsd-widget.options:before { + background-position: -80px 0; +} +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +@media (max-width: 900px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +.tsd-select { + position: relative; + display: inline-block; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-select .tsd-select-label { + opacity: 0.6; + transition: opacity 0.2s; +} +.tsd-select .tsd-select-label:before { + background-position: -240px 0; +} +.tsd-select.active .tsd-select-label { + opacity: 0.8; +} +.tsd-select.active .tsd-select-list { + visibility: visible; + opacity: 1; + transition-delay: 0s; +} +.tsd-select .tsd-select-list { + position: absolute; + visibility: hidden; + top: 40px; + left: 0; + margin: 0; + padding: 0; + opacity: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + transition: visibility 0s 0.2s, opacity 0.2s; +} +.tsd-select .tsd-select-list li { + padding: 0 20px 0 0; + background-color: var(--color-background); +} +.tsd-select .tsd-select-list li:before { + background-position: 40px 0; +} +.tsd-select .tsd-select-list li:nth-child(even) { + background-color: var(--color-panel); +} +.tsd-select .tsd-select-list li:hover { + background-color: var(--color-panel-divider); +} +.tsd-select .tsd-select-list li.selected:before { + background-position: -200px 0; +} +@media (max-width: 900px) { + .tsd-select .tsd-select-list { + top: 0; + left: auto; + right: 100%; + margin-right: -5px; + } + .tsd-select .tsd-select-label:before { + background-position: -280px 0; + } +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + margin-left: 10px; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} diff --git a/docs/typedoc/assets/widgets.png b/docs/typedoc/assets/widgets.png new file mode 100644 index 00000000..c7380532 Binary files /dev/null and b/docs/typedoc/assets/widgets.png differ diff --git a/docs/typedoc/assets/widgets@2x.png b/docs/typedoc/assets/widgets@2x.png new file mode 100644 index 00000000..4bbbd572 Binary files /dev/null and b/docs/typedoc/assets/widgets@2x.png differ diff --git a/docs/typedoc/classes/Client.default.html b/docs/typedoc/classes/Client.default.html new file mode 100644 index 00000000..e73235a2 --- /dev/null +++ b/docs/typedoc/classes/Client.default.html @@ -0,0 +1,248 @@ +default | FHIRClient - v2.5.4
    +

    This is a FHIR client that is returned to you from the ready() call of the +SMART API. You can also create it yourself if needed:

    +
    // BROWSER
    const client = FHIR.client("https://r4.smarthealthit.org");

    // SERVER
    const client = smart(req, res).client("https://r4.smarthealthit.org"); +
    +

    Hierarchy

    • default

    Index

    Constructors

    • +

      Validates the parameters, creates an instance and tries to connect it to +FhirJS, if one is available globally.

      +

      Parameters

      Returns default

    Other Properties

    _refreshTask: null | Promise<any>
    +

    Refers to the refresh task while it is being performed.

    +
    see

    refresh

    +
    api: undefined | Record<string, any>
    +

    The FhirJS API. +NOTE: This will only be available if fhir.js is used. Otherwise it +will be undefined.

    +
    encounter: { id: null | string; read: RequestFunction<Encounter> }
    +

    The client may be associated with a specific encounter, if the scopes +permit that and if the back-end server supports that. This is a namespace +for encounter-related functionality.

    +

    Type declaration

    • id: null | string
      +

      The ID of the current encounter or null if there is no current +encounter

      +
    • read: RequestFunction<Encounter>
      +

      A method to fetch the current encounter resource from the FHIR server. +If there is no encounter context, it will reject with an error.

      +
      param Any

      options to pass to the fetch call.

      +
    environment: Adapter
    +

    The adapter to use to connect to the current environment. Currently we have:

    +
      +
    • BrowserAdapter - for browsers
    • +
    • NodeAdapter - for Express or vanilla NodeJS servers
    • +
    • HapiAdapter - for HAPI NodeJS servers
    • +
    +
    patient: { api?: Record<string, any>; id: null | string; read: RequestFunction<Patient>; request: any }
    +

    A SMART app is typically associated with a patient. This is a namespace +for the patient-related functionality of the client.

    +

    Type declaration

    • Optional api?: Record<string, any>
      +

      This is the FhirJS Patient API. It will ONLY exist if the Client +instance is "connected" to FhirJS.

      +
    • id: null | string
      +

      The ID of the current patient or null if there is no current patient

      +
    • read: RequestFunction<Patient>
      +

      A method to fetch the current patient resource from the FHIR server. +If there is no patient context, it will reject with an error.

      +
      param [requestOptions]

      Any options to pass to the fetch call.

      +
    • request:function
      • +

        This is similar to request but it makes requests in the +context of the current patient. For example, instead of doing

        +
        client.request("Observation?patient=" + client.patient.id)
        +
        +

        you can do

        +
        client.patient.request("Observation")
        +
        +

        The return type depends on the arguments. Typically it will be the +response payload JSON object. Can also be a string or the Response +object itself if we have received a non-json result, which allows us +to handle even binary responses. Can also be a CombinedFetchResult +object if the requestOptions.includeResponses has been set to true.

        +

        Type Parameters

        Parameters

        Returns Promise<R>

    +

    The state of the client instance is an object with various properties. +It contains some details about how the client has been authorized and +determines the behavior of the client instance. This state is persisted +in SessionStorage in browsers or in request session on the servers.

    +
    user: { fhirUser: null | string; id: null | string; read: RequestFunction<Patient | Practitioner | RelatedPerson>; resourceType: null | string }
    +

    The client may be associated with a specific user, if the scopes +permit that. This is a namespace for user-related functionality.

    +

    Type declaration

    • fhirUser: null | string
      +

      Returns the profile of the logged_in user (if any), or null if the +user is not available. This is a string having the shape +{user type}/{user id}. For example Practitioner/abc or +Patient/xyz.

      +
      alias

      client.getFhirUser()

      +
    • id: null | string
      +

      The ID of the current user or null if there is no current user

      +
    • read: RequestFunction<Patient | Practitioner | RelatedPerson>
      +

      A method to fetch the current user resource from the FHIR server. +If there is no user context, it will reject with an error.

      +
      param Any

      options to pass to the fetch call.

      +
    • resourceType: null | string
      +

      Returns the type of the logged-in user or null. The result can be +Practitioner, Patient or RelatedPerson.

      +
      alias

      client.getUserType()

      +

    Utility Properties

    units: { any: any; cm: any; kg: any } = units

    Type declaration

    Other Methods

    • _clearState(): Promise<void>
    • +

      Used internally to clear the state of the instance and the state in the +associated storage.

      +

      Returns Promise<void>

    • connect(fhirJs?: ((options: Record<string, any>) => Record<string, any>)): default
    • +

      This method is used to make the "link" between the fhirclient and the +fhir.js, if one is available. +Note: This is called by the constructor. If fhir.js is available in +the global scope as fhir, it will automatically be linked to any Client +instance. You should only use this method to connect to fhir.js which +is not global.

      +

      Parameters

      • Optional fhirJs: ((options: Record<string, any>) => Record<string, any>)
          • (options: Record<string, any>): Record<string, any>
          • Parameters

            • options: Record<string, any>

            Returns Record<string, any>

      Returns default

    • getAuthorizationHeader(): null | string
    • +

      Builds and returns the value of the Authorization header that can be +sent to the FHIR server

      +

      Returns null | string

    • getEncounterId(): null | string
    • +

      Returns the ID of the selected encounter or null. You should have +requested "launch/encounter" scope. Otherwise this will return null. +Note that not all servers support the "launch/encounter" scope so this +will be null if they don't.

      +

      Returns null | string

    • getFhirRelease(): Promise<number>
    • +

      Returns a promise that will be resolved with the numeric fhir version

      +
        +
      • 2 for DSTU2
      • +
      • 3 for STU3
      • +
      • 4 for R4
      • +
      • 0 if the version is not known
      • +
      +

      Returns Promise<number>

    • getFhirUser(): null | string
    • +

      Returns the profile of the logged_in user (if any). This is a string +having the following shape "{user type}/{user id}". For example: +"Practitioner/abc" or "Patient/xyz".

      +

      Returns null | string

    • getFhirVersion(): Promise<string>
    • +

      Returns a promise that will be resolved with the fhir version as defined +in the CapabilityStatement.

      +

      Returns Promise<string>

    • +

      Returns the (decoded) id_token if any. You need to request "openid" and +"profile" scopes if you need to receive an id_token (if you need to know +who the logged-in user is).

      +

      Returns null | IDToken

    • getPatientId(): null | string
    • +

      Returns the ID of the selected patient or null. You should have requested +"launch/patient" scope. Otherwise this will return null.

      +

      Returns null | string

    • getState(path?: string): any
    • +

      Returns a copy of the client state. Accepts a dot-separated path argument +(same as for getPath) to allow for selecting specific properties. +Examples:

      +
      client.getState(); // -> the entire state object
      client.getState("serverUrl"); // -> the URL we are connected to
      client.getState("tokenResponse.patient"); // -> The selected patient ID (if any) +
      +

      Parameters

      • path: string = ""
        +

        The path (eg. "a.b.4.c")

        +

      Returns any

      Whatever is found in the path or undefined

      +
    • getUserId(): null | string
    • getUserType(): null | string
    • +

      Returns the type of the logged-in user or null. The result can be +"Practitioner", "Patient" or "RelatedPerson".

      +

      Returns null | string

    Request Methods

    • delete<R>(url: string, requestOptions?: FetchOptions): Promise<R>
    • +

      Removes an existing resource.

      +
      see

      http://hl7.org/fhir/http.html#delete

      +

      Type Parameters

      • R = unknown

      Parameters

      • url: string
        +

        Relative URI of the FHIR resource to be deleted +(format: resourceType/id)

        +
      • requestOptions: FetchOptions = {}
        +

        Any options (except method which will be fixed +to DELETE) to be passed to the fetch call.

        +

      Returns Promise<R>

    • +

      Makes a JSON Patch to the given resource

      +
      see

      http://hl7.org/fhir/http.html#patch

      +
      since

      2.4.0

      +

      Type Parameters

      • ResolveType = Resource

        +

        This method would typically resolve with the +patched resource or reject with an OperationOutcome. However, this may +depend on the server implementation or even on the request headers. +For that reason, if the default resolve type (which is +fhirclient.FHIR.Resource) does not work for you, you can pass +in your own resolve type parameter.

        +

      Parameters

      • url: string
        +

        Relative URI of the FHIR resource to be patched +(format: resourceType/id)

        +
      • patch: JsonPatch
        +

        A JSON Patch array to send to the server, For details +see https://datatracker.ietf.org/doc/html/rfc6902

        +
      • requestOptions: FetchOptions = {}
        +

        Any options to be passed to the fetch call, +except for method, url and body which cannot be overridden.

        +

      Returns Promise<ResolveType>

    • refresh(requestOptions?: RequestInit): Promise<ClientState>
    • +

      Use the refresh token to obtain new access token. If the refresh token is +expired (or this fails for any other reason) it will be deleted from the +state, so that we don't enter into loops trying to re-authorize.

      +

      This method is typically called internally from request if +certain request fails with 401.

      +

      Parameters

      • requestOptions: RequestInit = {}
        +

        Any options to pass to the fetch call. Most of them +will be overridden, bit it might still be useful for passing additional +request options or an abort signal.

        +

      Returns Promise<ClientState>

    • refreshIfNeeded(requestOptions?: RequestInit): Promise<ClientState>
    • +

      Checks if access token and refresh token are present. If they are, and if +the access token is expired or is about to expire in the next 10 seconds, +calls this.refresh() to obtain new access token.

      +

      Parameters

      • requestOptions: RequestInit = {}
        +

        Any options to pass to the fetch call. Most of them +will be overridden, bit it might still be useful for passing additional +request options or an abort signal.

        +

      Returns Promise<ClientState>

    • Type Parameters

      • T = any

      Parameters

      • requestOptions: string | URL | RequestOptions
        +

        Can be a string URL (relative to the serviceUrl), +or an object which will be passed to fetch()

        +
      • fhirOptions: FhirOptions = {}
        +

        Additional options to control the behavior

        +
      • _resolvedRefs: JsonObject = {}
        +

        DO NOT USE! Used internally.

        +

      Returns Promise<T>

    • +

      Creates a new current version for an existing resource or creates an +initial version if no resource already exists for the given id.

      +
      see

      http://hl7.org/fhir/http.html#update

      +

      Type Parameters

      Parameters

      • resource: Resource
        +

        A FHIR resource to be updated

        +
      • Optional requestOptions: O
        +

        Any options to be passed to the fetch call. +Note that method and body will be ignored.

        +

      Returns Promise<O["includeResponse"] extends true ? CombinedFetchResult<R> : R>

    Utility Methods

    • +

      Groups the observations by code. Returns a map that will look like:

      +
      const map = client.byCodes(observations, "code");
      // map = {
      // "55284-4": [ observation1, observation2 ],
      // "6082-2": [ observation3 ]
      // } +
      +
      todo

      This should be deprecated and moved elsewhere. One should not have +to obtain an instance of Client just to use utility functions like this.

      +
      deprecated

      Parameters

      • observations: Observation | Observation[]
        +

        Array of observations

        +
      • property: string
        +

        The name of a CodeableConcept property to group by

        +

      Returns ObservationMap

    • +

      First groups the observations by code using byCode. Then returns a function +that accepts codes as arguments and will return a flat array of observations +having that codes. Example:

      +
      const filter = client.byCodes(observations, "category");
      filter("laboratory") // => [ observation1, observation2 ]
      filter("vital-signs") // => [ observation3 ]
      filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] +
      +
      todo

      This should be deprecated and moved elsewhere. One should not have +to obtain an instance of Client just to use utility functions like this.

      +
      deprecated

      Parameters

      • observations: Observation | Observation[]
        +

        Array of observations

        +
      • property: string
        +

        The name of a CodeableConcept property to group by

        +

      Returns ((...codes: string[]) => any[])

        • (...codes: string[]): any[]
        • +

          First groups the observations by code using byCode. Then returns a function +that accepts codes as arguments and will return a flat array of observations +having that codes. Example:

          +
          const filter = client.byCodes(observations, "category");
          filter("laboratory") // => [ observation1, observation2 ]
          filter("vital-signs") // => [ observation3 ]
          filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] +
          +
          todo

          This should be deprecated and moved elsewhere. One should not have +to obtain an instance of Client just to use utility functions like this.

          +
          deprecated
          category

          Utility

          +

          Parameters

          • Rest ...codes: string[]

          Returns any[]

    • getPath(obj: Record<string, any>, path?: string): any
    • +

      Walks through an object (or array) and returns the value found at the +provided path. This function is very simple so it intentionally does not +support any argument polymorphism, meaning that the path can only be a +dot-separated string. If the path is invalid returns undefined.

      +
      todo

      This should be deprecated and moved elsewhere. One should not have +to obtain an instance of Client just to use utility functions like this.

      +
      deprecated

      Parameters

      • obj: Record<string, any>
        +

        The object (or Array) to walk through

        +
      • path: string = ""
        +

        The path (eg. "a.b.4.c")

        +

      Returns any

      Whatever is found in the path or undefined

      +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Property
    • Method
    • Private property
    • Private method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/classes/HttpError.default.html b/docs/typedoc/classes/HttpError.default.html new file mode 100644 index 00000000..af468e58 --- /dev/null +++ b/docs/typedoc/classes/HttpError.default.html @@ -0,0 +1,16 @@ +default | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • Error
      • default

    Index

    Constructors

    • new default(response: Response): default

    Properties

    message: string
    name: string
    response: Response
    +

    Reference to the HTTP Response object

    +
    stack?: string
    status: number
    +

    The HTTP status code for this error. +Note that this is the same as status, i.e. the code is available +through any of these.

    +
    statusCode: number
    +

    The HTTP status code for this error

    +
    statusText: string
    +

    The HTTP status text corresponding to this error

    +
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Type declaration

    stackTraceLimit: number

    Methods

    • toJSON(): { message: string; name: string; status: number; statusCode: number; statusText: string }
    • Returns { message: string; name: string; status: number; statusCode: number; statusText: string }

      • message: string
      • name: string
      • status: number
      • statusCode: number
      • statusText: string
    • captureStackTrace(targetObject: object, constructorOpt?: Function): void
    • +

      Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/classes/adapters_BrowserAdapter.default.html b/docs/typedoc/classes/adapters_BrowserAdapter.default.html new file mode 100644 index 00000000..0de00f40 --- /dev/null +++ b/docs/typedoc/classes/adapters_BrowserAdapter.default.html @@ -0,0 +1,43 @@ +default | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Browser Adapter

    +

    Hierarchy

    • default

    Implements

    Index

    Constructors

    Properties

    _storage: null | Storage = null
    +

    Holds the Storage instance associated with this instance

    +
    _url: null | URL = null
    +

    Stores the URL instance associated with this adapter

    +
    +

    Environment-specific options

    +
    security: security/browser = security

    Accessors

    • get fhir(): any
    • +

      In browsers we need to be able to (dynamically) check if fhir.js is +included in the page. If it is, it should have created a "fhir" variable +in the global scope.

      +

      Returns any

    Methods

    • atob(str: string): string
    • base64urldecode(input: string): string
    • base64urlencode(input: string | Uint8Array): string
    • btoa(str: string): string
    • getAbortController(): { prototype: AbortController }
    • +

      Returns a reference to the AbortController constructor. In browsers, +AbortController will always be available as global (native or polyfilled)

      +

      Returns { prototype: AbortController }

      • prototype: AbortController
    • +

      Creates and returns adapter-aware SMART api. Not that while the shape of +the returned object is well known, the arguments to this function are not. +Those who override this method are free to require any environment-specific +arguments. For example in node we will need a request, a response and +optionally a storage or storage factory function.

      +

      Returns SMART

    • getUrl(): URL
    • redirect(to: string): void
    • relative(path: string): string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Property
    • Method
    • Private property

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/classes/adapters_HapiAdapter.default.html b/docs/typedoc/classes/adapters_HapiAdapter.default.html new file mode 100644 index 00000000..ef87b9c4 --- /dev/null +++ b/docs/typedoc/classes/adapters_HapiAdapter.default.html @@ -0,0 +1,46 @@ +default | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Constructors

    • new default(options: HapiAdapterOptions): default

    Properties

    _request: Request
    _responseToolkit: ResponseToolkit
    _storage: null | Storage = null
    +

    Holds the Storage instance associated with this instance

    +
    options: NodeAdapterOptions
    +

    Environment-specific options

    +
    security: security/server = security

    Methods

    • atob(str: string): string
    • base64urldecode(input: string): string
    • base64urlencode(input: string | Uint8Array): string
    • btoa(str: string): string
    • getAbortController(): { prototype: AbortController }
    • +

      Returns a reference to the AbortController constructor. In browsers, +AbortController will always be available as global (native or polyfilled)

      +

      Returns { prototype: AbortController }

      • prototype: AbortController
    • getProtocol(): string
    • +

      Creates and returns adapter-aware SMART api. Not that while the shape of +the returned object is well known, the arguments to this function are not. +Those who override this method are free to require any environment-specific +arguments. For example in node we will need a request, a response and +optionally a storage or storage factory function.

      +

      Returns SMART

    • getUrl(): URL
    • redirect(location: string): ResponseObject
    • relative(path: string): string
    • +

      This is the static entry point and MUST be provided

      +

      Parameters

      • request: Request
        +

        The hapi request

        +
      • h: ResponseToolkit
        +

        The hapi response toolkit

        +
      • Optional storage: Storage | storageFactory
        +

        Custom storage instance or a storage factory function

        +

      Returns SMART

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Method
    • Inherited property
    • Inherited method
    • Protected property
    • Private property
    • Static method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/classes/adapters_NodeAdapter.default.html b/docs/typedoc/classes/adapters_NodeAdapter.default.html new file mode 100644 index 00000000..792448d8 --- /dev/null +++ b/docs/typedoc/classes/adapters_NodeAdapter.default.html @@ -0,0 +1,40 @@ +default | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Node Adapter - works with native NodeJS and with Express

    +

    Hierarchy

    Implements

    Index

    Constructors

    • new default(options: NodeAdapterOptions): default

    Properties

    _storage: null | Storage = null
    +

    Holds the Storage instance associated with this instance

    +
    options: NodeAdapterOptions
    +

    Environment-specific options

    +
    security: security/server = security

    Methods

    • atob(str: string): string
    • base64urldecode(input: string): string
    • base64urlencode(input: string | Uint8Array): string
    • btoa(str: string): string
    • getAbortController(): { prototype: AbortController }
    • +

      Returns a reference to the AbortController constructor. In browsers, +AbortController will always be available as global (native or polyfilled)

      +

      Returns { prototype: AbortController }

      • prototype: AbortController
    • getProtocol(): string
    • +

      Creates and returns adapter-aware SMART api. Not that while the shape of +the returned object is well known, the arguments to this function are not. +Those who override this method are free to require any environment-specific +arguments. For example in node we will need a request, a response and +optionally a storage or storage factory function.

      +

      Returns SMART

    • getUrl(): URL
    • redirect(location: string): void
    • relative(path: string): string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Property
    • Method
    • Protected property

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/classes/storage_BrowserStorage.default.html b/docs/typedoc/classes/storage_BrowserStorage.default.html new file mode 100644 index 00000000..5f3ef6a5 --- /dev/null +++ b/docs/typedoc/classes/storage_BrowserStorage.default.html @@ -0,0 +1,11 @@ +default | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • default

    Index

    Constructors

    Methods

    Constructors

    Methods

    • get(key: string): Promise<any>
    • +

      Gets the value at key. Returns a promise that will be resolved +with that value (or undefined for missing keys).

      +

      Parameters

      • key: string

      Returns Promise<any>

    • set(key: string, value: any): Promise<any>
    • +

      Sets the value on key and returns a promise that will be resolved +with the value that was set.

      +

      Parameters

      • key: string
      • value: any

      Returns Promise<any>

    • unset(key: string): Promise<boolean>
    • +

      Deletes the value at key. Returns a promise that will be resolved +with true if the key was deleted or with false if it was not (eg. if +did not exist).

      +

      Parameters

      • key: string

      Returns Promise<boolean>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/classes/storage_ServerStorage.default.html b/docs/typedoc/classes/storage_ServerStorage.default.html new file mode 100644 index 00000000..5265c90e --- /dev/null +++ b/docs/typedoc/classes/storage_ServerStorage.default.html @@ -0,0 +1,14 @@ +default | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • default

    Index

    Constructors

    Properties

    Methods

    Constructors

    Properties

    Methods

    • get(key: string): Promise<any>
    • +

      Gets the value at key. Returns a promise that will be resolved +with that value (or undefined for missing keys).

      +

      Parameters

      • key: string

      Returns Promise<any>

    • set(key: string, value: any): Promise<any>
    • +

      Sets the value on key and returns a promise that will be resolved +with the value that was set.

      +

      Parameters

      • key: string
      • value: any

      Returns Promise<any>

    • unset(key: string): Promise<boolean>
    • +

      Deletes the value at key. Returns a promise that will be resolved +with true if the key was deleted or with false if it was not (eg. if +did not exist).

      +

      Parameters

      • key: string

      Returns Promise<boolean>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class
    • Constructor
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/index.html b/docs/typedoc/index.html new file mode 100644 index 00000000..93e46e2b --- /dev/null +++ b/docs/typedoc/index.html @@ -0,0 +1,40 @@ +FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    FHIRClient - v2.5.4

    + +

    SMART on FHIR JavaScript Library

    +
    +

    This is a JavaScript library for connecting SMART apps to Fhir servers. +It works both in browsers (including IE11+) and on the server (NodeJS).

    + + +

    Installation

    +
    +

    Install from npm:

    +
    npm i fhirclient
    +
    +
    + + + +

    Documentation

    +
    +

    The documentation for the upcoming release is available at http://docs.smarthealthit.org/client-js/.

    +

    Check out what's new in v2!

    +
    + + + +

    Contributing and Development

    +
    + + +

    NPM Scripts

    +
    +

    After you cd into to the project folder and run npm i, you can use npm scripts to handle any project-related task:

    +
    # run tests
    npm test

    # Build everything
    npm run build

    # Build all bundles (browser packages in dist/build)
    npm run pack

    # Build the CommonJS modules (for Node and bundlers)
    npm run build:module +
    + + +

    License

    +
    +

    Apache 2.0

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.Adapter.html b/docs/typedoc/interfaces/types.fhirclient.Adapter.html new file mode 100644 index 00000000..491509b7 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.Adapter.html @@ -0,0 +1,32 @@ +Adapter | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • Adapter

    Implemented by

    Index

    Properties

    +

    Environment-specific options

    +
    security: { digestSha256: any; generatePKCEChallenge: any; importJWK: any; randomBytes: any; signCompactJws: any }

    Type declaration

    • digestSha256:function
      • digestSha256(payload: string): Promise<Uint8Array>
    • generatePKCEChallenge:function
      • generatePKCEChallenge(entropy?: number): Promise<{ codeChallenge: string; codeVerifier: string }>
      • Parameters

        • Optional entropy: number

        Returns Promise<{ codeChallenge: string; codeVerifier: string }>

    • importJWK:function
      • importJWK(jwk: JWK): Promise<CryptoKey>
    • randomBytes:function
      • randomBytes(count: number): Uint8Array
    • signCompactJws:function
      • signCompactJws(alg: "ES384" | "RS384", privateKey: CryptoKey, header: any, payload: any): Promise<string>
      • Parameters

        • alg: "ES384" | "RS384"
        • privateKey: CryptoKey
        • header: any
        • payload: any

        Returns Promise<string>

    Methods

    • atob(str: string): string
    • +

      ASCII string to Base64

      +

      Parameters

      • str: string

      Returns string

    • base64urldecode(input: string): string
    • +

      Base64Url to ASCII string

      +

      Parameters

      • input: string

      Returns string

    • base64urlencode(input: string | Uint8Array): string
    • +

      ASCII string or Uint8Array to Base64URL

      +

      Parameters

      • input: string | Uint8Array

      Returns string

    • btoa(str: string): string
    • +

      Base64 to ASCII string

      +

      Parameters

      • str: string

      Returns string

    • getAbortController(): { prototype: AbortController }
    • +

      Returns a reference to the AbortController class

      +

      Returns { prototype: AbortController }

      • prototype: AbortController
    • +

      Creates and returns adapter-aware SMART api. Not that while the shape of +the returned object is well known, the arguments to this function are not. +Those who override this method are free to require any environment-specific +arguments. For example in node we will need a request, a response and +optionally a storage or storage factory function.

      +

      Returns SMART

    • getUrl(): URL
    • +

      Given the current environment, this method returns the current url +as URL instance

      +

      Returns URL

    • redirect(to: string): void | Promise<any>
    • +

      Given the current environment, this method must redirect to the given +path

      +

      Parameters

      • to: string

      Returns void | Promise<any>

    • relative(path: string): string
    • +

      Given a relative path, compute and return the full url, assuming that +it is relative to the current location

      +

      Parameters

      • path: string
        +

        The path to convert to absolute

        +

      Returns string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Method
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.AuthorizeParams.html b/docs/typedoc/interfaces/types.fhirclient.AuthorizeParams.html new file mode 100644 index 00000000..37340bb8 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.AuthorizeParams.html @@ -0,0 +1,112 @@ +AuthorizeParams | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Authorization parameters that can be passed to authorize or init

    +

    Hierarchy

    • AuthorizeParams

    Index

    Properties

    clientId?: string
    +

    The client_id that you have obtained while registering your app in the +EHR. This is not required if you only intend to communicate with open +FHIR servers. Note: For backwards compatibility reasons we also accept +client_id instead of clientId!

    +
    alias

    client_id

    +
    clientPrivateJwk?: JWK
    +

    If you have registered a confidential client, you should pass your +clientPrivateJwk here. Note: ONLY use this on the server, as +the browsers are considered incapable of keeping a secret.

    +
    clientPublicKeySetUrl?: string
    +

    If you have registered a confidential client and you host your public +key online, you can pass your JWKS URL here Note: ONLY use this on the server, as the +browsers are considered incapable of keeping a secret.

    +
    clientSecret?: string
    +

    If you have registered a confidential client, you should pass your +clientSecret here. Note: ONLY use this on the server, as the +browsers are considered incapable of keeping a secret.

    +
    client_id?: string
    +

    The client_id that you have obtained while registering your app in the +EHR. This is not required if you only intend to communicate with open +FHIR servers. Note: For backwards compatibility reasons we accept +client_id as an alias of clientId!

    +
    alias

    clientId

    +
    deprecated
    completeInTarget?: boolean
    +

    If true, the app will be initialized in the specified AuthorizeParams.target. +Otherwise, the app will be initialized in the window in which +authorize was called.

    +
    encounterId?: string
    +

    The ID of the selected encounter. If you are launching against an open +FHIR server, there is no way to obtain the launch context that would +(in some EHRs) include the selected encounter ID. This way you can +"inject" that ID and make the client behave as if this is the currently +active encounter.

    +
    fakeTokenResponse?: object
    +

    Useful for testing. This object can contain any properties that are +typically contained in an access token response. +These properties will be stored into the client state, as if it has been +authorized.

    +
    fhirServiceUrl?: string
    +

    The base URL of the FHIR server to use. This is just like the iss +option, except that it is designed to bypass the authentication. If +fhirServiceUrl is passed, the authorize function will NOT actually +attempt to authorize. It will skip that and redirect you to your +redirect_uri.

    +
    height?: number
    +

    The height of the authorization popup window. Only used in browsers +and if the AuthorizeParams.target option is set to "popup".

    +
    iss?: string
    +

    This is the URL of the service you are connecting to. +For EHR Launch +you MUST NOT provide this option. It will be passed by the EHR as +url parameter instead. Using iss as an option will "lock" your app to +that service provider. In other words, passing an iss option is how +you can do Standalone Launch.

    +
    issMatch?: string | RegExp | ((iss: string) => boolean)
    +

    Can be used to verify that the app is being launched against certain +servers. This is especially useful when working with multiple EHR +configurations. Can be a string (in which case it will be expected to +match the provided ISS exactly), a regular expression to test against +the current ISS, or a function that will be called with the current +ISS and should return true or false to signify if that ISS is acceptable.

    +
    launch?: string
    +

    Do not pass use this option, unless you want to test it. It should come +as url parameter from the SMART authorization server as part of the EHR +launch sequence

    +
    noRedirect?: boolean
    patientId?: string
    +

    The ID of the selected patient. If you are launching against an open FHIR +server, there is no way to obtain the launch context that would include +the selected patient ID. This way you can "inject" that ID and make the +client behave as if that is the currently active patient.

    +
    pkceMode?: PkceMode
    +

    Client expectations for PKCE (Proof Key for Code Exchange). Can be +one of:

    +
      +
    • ifSupported Use if a matching code challenge method is available (default)
    • +
    • required Do not attempt authorization to servers without support
    • +
    • disabled Do not use PKCE
    • +
    • unsafeV1 Use against Smart v1 servers. Smart v1 does not define + conformance, so validate your server supports PKCE before using + this setting
    • +
    +
    redirectUri?: string
    +

    Defaults to the current directory (it's index file)

    +
    alias

    redirect_uri

    +
    redirect_uri?: string
    +

    Same as redirectUri

    +
    alias

    redirectUri

    +
    deprecated
    scope?: string
    +

    One or more space-separated scopes that you would like to request from +the EHR. Learn more

    +
    target?: WindowTarget
    +

    Where to start the auth flow. This option is only applicable in +browsers and is ignored on the server. Can be one of:

    +
      +
    • _self Authorize in the same window (default)
    • +
    • _top Authorize in the topmost window
    • +
    • _parent Authorize in the parent window
    • +
    • _blank Authorize in new tab or window
    • +
    • "popup" Open a popup, authorize in it and close it when done
    • +
    • String Frame name (string index in window.frames)
    • +
    • Number Numeric index in window.frames
    • +
    • Object Window reference (must have the same origin)
    • +
    • Function A function that returns one of the above values or a +promise that will resolve to such value.
    • +
    +
    width?: number
    +

    The width of the authorization popup window. Only used in browsers +and if the AuthorizeParams.target option is set to "popup".

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.BrowserFHIRSettings.html b/docs/typedoc/interfaces/types.fhirclient.BrowserFHIRSettings.html new file mode 100644 index 00000000..64423636 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.BrowserFHIRSettings.html @@ -0,0 +1,27 @@ +BrowserFHIRSettings | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • Record<string, any>
      • BrowserFHIRSettings

    Index

    Properties

    fullSessionStorageSupport?: boolean
    +

    When set to true, this variable will fully utilize HTML5 +sessionStorage API. This variable can be overridden to false by +setting FHIR.oauth2.settings.fullSessionStorageSupport = false. +When set to false, the sessionStorage will be keyed by a state +variable. This is to allow the embedded IE browser instances +instantiated on a single thread to continue to function without +having sessionStorage data shared across the embedded IE instances.

    +
    refreshTokenWithCredentials?: "include" | "omit" | "same-origin"
    +

    Do we want to send cookies while making a request to the token +endpoint in order to obtain new access token using existing +refresh token. In rare cases the auth server might require the +client to send cookies along with those requests. In this case +developers will have to change this before initializing the app +like so: +FHIR.oauth2.settings.refreshTokenWithCredentials = "include"; +or +FHIR.oauth2.settings.refreshTokenWithCredentials = "same-origin"; +Can be one of: +"include" - always send cookies +"same-origin" - only send cookies if we are on the same domain (default) +"omit" - do not send cookies

    +
    replaceBrowserHistory?: boolean
    +

    Replaces the browser's current URL using +window.history.replaceState API.

    +

    ONLY RELEVANT IN BROWSERS!

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.ClientState.html b/docs/typedoc/interfaces/types.fhirclient.ClientState.html new file mode 100644 index 00000000..a3e6476d --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.ClientState.html @@ -0,0 +1,53 @@ +ClientState | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Describes the state that should be passed to the Client constructor. +Everything except serverUrl is optional

    +

    Hierarchy

    • ClientState

    Index

    Properties

    authorizeUri?: string
    +

    You must call this endpoint to ask for authorization code

    +
    clientId?: string
    +

    The client_id that you should have obtained while registering your +app with the auth server or EHR (as set in the configuration options)

    +
    clientPrivateJwk?: JWK
    +

    Your client private JWK if you have one (for asymmetric confidential clients)

    +
    clientPublicKeySetUrl?: string
    +

    Your client public JWKS url if you have one +(for asymmetric confidential clients that have registered a JWKS URL)

    +
    clientSecret?: string
    +

    Your client secret if you have one (for symmetric confidential clients)

    +
    codeChallenge?: string
    +

    PKCE code challenge base value.

    +
    codeVerifier?: string
    +

    PKCE code verification, formatted with base64url-encode (RFC 4648 § 5) +without padding, which is NOT the same as regular base64 encoding.

    +
    completeInTarget?: boolean
    +

    If true, the app requested to be initialized in the specified AuthorizeParams.target. +Otherwise, the app requested to be initialized in the window in which +authorize was called.

    +
    expiresAt?: number
    +

    An Unix timestamp (JSON numeric value representing the number of +seconds since 1970). This updated every time an access token is +received from the server.

    +
    key?: string
    +

    The key under which this state is persisted in the storage

    +
    password?: string
    +

    The password for basic auth. If present, username must also be provided.

    +
    redirectUri?: string
    +

    The URI to redirect to after successful authorization, as set in the +configuration options.

    +
    registrationUri?: string
    +

    You could register new SMART client at this endpoint (if the server +supports dynamic client registration)

    +
    scope?: string
    +

    The access scopes that you requested in your options (or an empty string).

    +
    see

    http://docs.smarthealthit.org/authorization/scopes-and-launch-context/

    +
    serverUrl: string
    +

    The base URL of the Fhir server. The library should have detected it +at authorization time from request query params of from config options.

    +
    tokenResponse?: TokenResponse
    +

    The response object received from the token endpoint while trying to +exchange the auth code for an access token (if you have reached that point).

    +
    tokenUri?: string
    +

    You must call this endpoint to exchange your authorization code +for an access token.

    +
    username?: string
    +

    The username for basic auth. If present, password must also be provided.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.CodeValue.html b/docs/typedoc/interfaces/types.fhirclient.CodeValue.html new file mode 100644 index 00000000..ec4e2f80 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.CodeValue.html @@ -0,0 +1 @@ +CodeValue | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.CombinedFetchResult.html b/docs/typedoc/interfaces/types.fhirclient.CombinedFetchResult.html new file mode 100644 index 00000000..f69742b7 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.CombinedFetchResult.html @@ -0,0 +1,5 @@ +CombinedFetchResult | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    If an includeResponse is set to true when calling the lib.request +function the returned object will include the Response object and the +parsed body if available

    +

    Type Parameters

    Hierarchy

    • CombinedFetchResult

    Index

    Properties

    Properties

    body?: T
    response: Response

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.ES384JWK.html b/docs/typedoc/interfaces/types.fhirclient.ES384JWK.html new file mode 100644 index 00000000..c2da9124 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.ES384JWK.html @@ -0,0 +1 @@ +ES384JWK | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • JsonWebKey
      • ES384JWK

    Indexable

    [propName: string]: unknown

    Index

    Properties

    alg: "ES384"
    crv: "P-384"
    d?: string
    dp?: string
    dq?: string
    e?: string
    ext?: boolean
    k?: string
    key_ops?: KeyUsage[]
    kid: string
    kty: "EC"
    n?: string
    oth?: RsaOtherPrimesInfo[]
    p?: string
    q?: string
    qi?: string
    use?: string
    x?: string
    y?: string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.BackboneElement.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.BackboneElement.html new file mode 100644 index 00000000..8c227edf --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.BackboneElement.html @@ -0,0 +1 @@ +BackboneElement | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Bundle.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Bundle.html new file mode 100644 index 00000000..40eb80f4 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Bundle.html @@ -0,0 +1,11 @@ +Bundle | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    entry?: BundleEntry[]
    id?: string
    +

    Logical id of this artifact

    +
    identifier?: Identifier
    +

    Persistent identifier for the bundle

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    link: BundleLink[]
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType?: string
    total?: number
    type: "message" | "document" | "history" | "transaction" | "transaction-response" | "batch" | "batch-response" | "searchset" | "collection"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.BundleEntry.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.BundleEntry.html new file mode 100644 index 00000000..fff548f7 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.BundleEntry.html @@ -0,0 +1 @@ +BundleEntry | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.BundleLink.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.BundleLink.html new file mode 100644 index 00000000..f06b46a8 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.BundleLink.html @@ -0,0 +1 @@ +BundleLink | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.CapabilityStatement.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.CapabilityStatement.html new file mode 100644 index 00000000..17ab6f04 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.CapabilityStatement.html @@ -0,0 +1 @@ +CapabilityStatement | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • CapabilityStatement

    Index

    Properties

    fhirVersion: string
    resourceType: string
    rest: { resource: { type: string }[]; security?: { cors?: boolean; extension?: { extension: Extension<"valueUri">[]; url: string }[] } }[]

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.CodeableConcept.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.CodeableConcept.html new file mode 100644 index 00000000..7d777803 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.CodeableConcept.html @@ -0,0 +1,5 @@ +CodeableConcept | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    coding?: Coding[]
    +

    Code defined by a terminology system

    +
    extension?: Extension<valueX>[]
    id?: string
    text?: string
    +

    Plain text representation of the concept

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Coding.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Coding.html new file mode 100644 index 00000000..6841a0aa --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Coding.html @@ -0,0 +1,11 @@ +Coding | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    code?: string
    +

    Symbol in syntax defined by the system

    +
    display?: string
    +

    Representation defined by the system

    +
    extension?: Extension<valueX>[]
    id?: string
    system?: string
    +

    Identity of the terminology system

    +
    userSelected?: boolean
    +

    If this coding was chosen directly by the user

    +
    version?: string
    +

    Version of the system - if relevant

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Element.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Element.html new file mode 100644 index 00000000..6505c948 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Element.html @@ -0,0 +1 @@ +Element | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Encounter.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Encounter.html new file mode 100644 index 00000000..345bef17 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Encounter.html @@ -0,0 +1,9 @@ +Encounter | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    id?: string
    +

    Logical id of this artifact

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType: "Encounter"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Extension.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Extension.html new file mode 100644 index 00000000..f8c8e256 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Extension.html @@ -0,0 +1,3 @@ +Extension | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Type Parameters

    • T = "valueX"

    Hierarchy

    Indexable

    [T: string]: any

    Index

    Properties

    Properties

    extension?: Extension<valueX>[]
    id?: string
    url: string
    +

    identifies the meaning of the extension

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Identifier.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Identifier.html new file mode 100644 index 00000000..09dd5727 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Identifier.html @@ -0,0 +1,11 @@ +Identifier | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    assigner?: Reference
    +

    Organization that issued id (may be just text)

    +
    extension?: Extension<valueX>[]
    id?: string
    period?: Period
    +

    Time period when id is/was valid for use

    +
    system?: string
    +

    The namespace for the identifier value

    +
    +

    Description of identifier

    +
    use?: "usual" | "official" | "temp" | "secondary"
    value?: string
    +

    The value that is unique

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Meta.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Meta.html new file mode 100644 index 00000000..e451deb3 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Meta.html @@ -0,0 +1,3 @@ +Meta | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Observation.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Observation.html new file mode 100644 index 00000000..0bddbd22 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Observation.html @@ -0,0 +1,9 @@ +Observation | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    id?: string
    +

    Logical id of this artifact

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType: "Observation"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Patient.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Patient.html new file mode 100644 index 00000000..b760ef4c --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Patient.html @@ -0,0 +1,9 @@ +Patient | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    id?: string
    +

    Logical id of this artifact

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType: "Patient"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Period.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Period.html new file mode 100644 index 00000000..a4c099db --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Period.html @@ -0,0 +1,5 @@ +Period | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    end?: string
    +

    End time with inclusive boundary, if not ongoing

    +
    extension?: Extension<valueX>[]
    id?: string
    start?: string
    +

    Starting time with inclusive boundary

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Practitioner.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Practitioner.html new file mode 100644 index 00000000..108eea6d --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Practitioner.html @@ -0,0 +1,9 @@ +Practitioner | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    id?: string
    +

    Logical id of this artifact

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType: "Practitioner"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Reference.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Reference.html new file mode 100644 index 00000000..18ed8859 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Reference.html @@ -0,0 +1,7 @@ +Reference | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    display?: string
    +

    Text alternative for the resource

    +
    extension?: Extension<valueX>[]
    id?: string
    identifier?: Identifier
    +

    Logical reference, when literal reference is not known

    +
    reference?: string
    +

    Literal reference, Relative, internal or absolute URL

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.RelatedPerson.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.RelatedPerson.html new file mode 100644 index 00000000..4832d81d --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.RelatedPerson.html @@ -0,0 +1,9 @@ +RelatedPerson | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    id?: string
    +

    Logical id of this artifact

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType: "RelatedPerson"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FHIR.Resource.html b/docs/typedoc/interfaces/types.fhirclient.FHIR.Resource.html new file mode 100644 index 00000000..6a7890de --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FHIR.Resource.html @@ -0,0 +1,9 @@ +Resource | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    Index

    Properties

    id?: string
    +

    Logical id of this artifact

    +
    implicitRules?: string
    +

    A set of rules under which this content was created

    +
    language?: string
    +

    Language of the resource content

    +
    meta?: Meta
    +

    Metadata about the resource

    +
    resourceType?: string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FetchOptions.html b/docs/typedoc/interfaces/types.fhirclient.FetchOptions.html new file mode 100644 index 00000000..0fa53db2 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FetchOptions.html @@ -0,0 +1,33 @@ +FetchOptions | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Options passed to the lib.request function

    +

    Hierarchy

    • RequestInit
      • FetchOptions

    Index

    Properties

    body?: null | BodyInit
    +

    A BodyInit object or null to set request's body.

    +
    cache?: RequestCache
    +

    A string indicating how the request will interact with the browser's cache to set request's cache.

    +
    credentials?: RequestCredentials
    +

    A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials.

    +
    headers?: HeadersInit
    +

    A Headers object, an object literal, or an array of two-item arrays to set request's headers.

    +
    includeResponse?: boolean
    +

    If true the request function will be instructed to resolve with a +CombinedFetchResult object that contains the Response object +abd the parsed body (if any)

    +
    integrity?: string
    +

    A cryptographic hash of the resource to be fetched by request. Sets request's integrity.

    +
    keepalive?: boolean
    +

    A boolean to set request's keepalive.

    +
    method?: string
    +

    A string to set request's method.

    +
    mode?: RequestMode
    +

    A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode.

    +
    redirect?: RequestRedirect
    +

    A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect.

    +
    referrer?: string
    +

    A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer.

    +
    referrerPolicy?: ReferrerPolicy
    +

    A referrer policy to set request's referrerPolicy.

    +
    signal?: null | AbortSignal
    +

    An AbortSignal to set request's signal.

    +
    window?: null
    +

    Can only be null. Used to disassociate request from any Window.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.FhirOptions.html b/docs/typedoc/interfaces/types.fhirclient.FhirOptions.html new file mode 100644 index 00000000..a12101d5 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.FhirOptions.html @@ -0,0 +1,96 @@ +FhirOptions | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Additional options that can be passed to client.request to control its +behavior

    +

    Hierarchy

    • FhirOptions

    Index

    Properties

    flat?: boolean
    +

    When fetching a Bundle, you are typically only interested in the +included resources which are located at {response}.entry[N].resource. +If this option is set to true, the returned result will be an array of +resources instead of the whole bundle. This is especially useful when +multiple pages are fetched, because an array of page bundles is not that +useful and will often have to be converted to array of resources that is +easier to iterate.

    +
      +
    • This option is ignored if the response is not a bundle.
    • +
    • If you use onPage callback with flat: true, it will receive that +array of resources instead of the page bundle.
    • +
    • Resources from multiple pages are flattened into single array (unless +you use onPage, which will be called with one array for each page).
    • +
    • Defaults to false.
    • +
    • Finally, Bundle.entry is optional in FHIR and that leads to bugs in +apps that assume that it is always present. With flat: true, you will +always get an array, even if it is empty, and even if no entry is +found in the response bundle.
    • +
    +
    graph?: boolean
    +

    Only applicable if you use resolveReferences. If false, the resolved +references will not be "mounted" in the result tree, but will be returned +as separate map object instead. Defaults to true.

    +
    pageLimit?: number
    +

    When you request a Bundle, the result will typically come back in pages +and you will only get the first page. You can use pageLimit greater +than 1 to request multiple pages. For example pageLimit: 3 will fetch +the first 3 pages as array. To fetch all the available pages you can set +this to 0.

    +
      +
    • Defaults to 1.
    • +
    • Ignored if the response is not a Bundle.
    • +
    +
    resolveReferences?: string | string[]
    +

    One or more references to resolve. Single item can be specified as a +string or as an array of one string. Multiple items must be specified as +array.

    +
      +
    • Each item is a dot-separated path to the desired reference within the +result object, excluding the "reference" property. For example +context.serviceProvider will look for {Response}.context.serviceProvider.reference.
    • +
    • If the target is an array of references (E.g. +Patient.generalPractitioner), you can request one or more of them by index (E.g. generalPractitioner.0). +If the index is not specified, all the references in the array will be +resolved.
    • +
    • The order in which the reference paths are specified does not matter. +For example, if you use ["subject", "encounter.serviceProvider", "encounter"], +the library should figure out that encounter.serviceProvider must be +fetched after encounter. In fact, in this case it will first fetch +subject and encounter in parallel, and then proceed to encounter.serviceProvider.
    • +
    • This option does not work with contained references (they are "already +resolved" anyway).
    • +
    +
    useRefreshToken?: boolean
    +

    If the client is authorized, it will possess an access token and pass it +with the requests it makes. When that token expires, you should get back +a 401 Unauthorized response. When that happens, if the client also has +a refresh token and if useRefreshToken is true (default), the client +will attempt to automatically re-authorize itself and then it will re-run +the failed request and eventually resolve it's promise with the final +result. This means that your requests should never fail with 401, +unless the refresh token is also expired. If you don't want this, you can +set useRefreshToken to false. There is a refresh method on the +client that can be called manually to renew the access token.

    +
      +
    • Defaults to true.
    • +
    +

    Methods

    • +

      When you fetch multiple pages the resulting array may be very large, +requiring a lot of time and memory. It is often better if you specify a +page callback instead. The onPage callback will be called once for each +page with the page Bundle as it's argument. If you use resolveReferences +and graph: false, the references will be passed to onPage as second +argument.

      +
        +
      • If onPage returns a promise it will be awaited for, meaning that no +more pages will be fetched until the onPage promise is resolved.
      • +
      • If onPage returns a rejected promise or throws an error, the client +will not continue fetching more pages.
      • +
      • If you use onPage callback, the promise returned by request() will +be resolved with null. This is to avoid building that huge array in +memory. By using the onPage option you are stating that you will +handle the result one page at a time, instead of expecting to receive +the big combined result.
      • +
      +

      Parameters

      • data: JsonObject | JsonObject[]
        +

        Depending in the other options can be Bundle, Bundle[], + Resource[]

        +
      • Optional references: JsonObject
        +

        Map of resolved references. Only available if the graph + option is set to false

        +

      Returns any

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Method
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.IDToken.html b/docs/typedoc/interfaces/types.fhirclient.IDToken.html new file mode 100644 index 00000000..99cccb9d --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.IDToken.html @@ -0,0 +1 @@ +IDToken | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.IncludeResponseHint.html b/docs/typedoc/interfaces/types.fhirclient.IncludeResponseHint.html new file mode 100644 index 00000000..d7b1d03a --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.IncludeResponseHint.html @@ -0,0 +1 @@ +IncludeResponseHint | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonObject.html b/docs/typedoc/interfaces/types.fhirclient.JsonObject.html new file mode 100644 index 00000000..736e6cea --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonObject.html @@ -0,0 +1 @@ +JsonObject | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonPatchAdd.html b/docs/typedoc/interfaces/types.fhirclient.JsonPatchAdd.html new file mode 100644 index 00000000..ac10f096 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonPatchAdd.html @@ -0,0 +1 @@ +JsonPatchAdd | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonPatchCopy.html b/docs/typedoc/interfaces/types.fhirclient.JsonPatchCopy.html new file mode 100644 index 00000000..9af965bc --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonPatchCopy.html @@ -0,0 +1 @@ +JsonPatchCopy | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonPatchMove.html b/docs/typedoc/interfaces/types.fhirclient.JsonPatchMove.html new file mode 100644 index 00000000..2a8db30f --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonPatchMove.html @@ -0,0 +1 @@ +JsonPatchMove | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonPatchRemove.html b/docs/typedoc/interfaces/types.fhirclient.JsonPatchRemove.html new file mode 100644 index 00000000..08f4dc13 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonPatchRemove.html @@ -0,0 +1 @@ +JsonPatchRemove | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonPatchReplace.html b/docs/typedoc/interfaces/types.fhirclient.JsonPatchReplace.html new file mode 100644 index 00000000..608dcbca --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonPatchReplace.html @@ -0,0 +1 @@ +JsonPatchReplace | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.JsonPatchTest.html b/docs/typedoc/interfaces/types.fhirclient.JsonPatchTest.html new file mode 100644 index 00000000..e23d33b1 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.JsonPatchTest.html @@ -0,0 +1 @@ +JsonPatchTest | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.OAuthSecurityExtensions.html b/docs/typedoc/interfaces/types.fhirclient.OAuthSecurityExtensions.html new file mode 100644 index 00000000..c8170adb --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.OAuthSecurityExtensions.html @@ -0,0 +1,14 @@ +OAuthSecurityExtensions | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    The three security endpoints that SMART servers might declare in the +conformance statement

    +

    Hierarchy

    • OAuthSecurityExtensions

    Index

    Properties

    authorizeUri: string
    +

    You must call this endpoint to ask for authorization code

    +
    codeChallengeMethods: string[]
    +

    Supported PKCE Code challenge methods

    +
    registrationUri: string
    +

    You could register new SMART client at this endpoint (if the server +supports dynamic client registration)

    +
    tokenUri: string
    +

    You must call this endpoint to exchange your authorization code +for an access token.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.ObservationMap.html b/docs/typedoc/interfaces/types.fhirclient.ObservationMap.html new file mode 100644 index 00000000..4e7f35d8 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.ObservationMap.html @@ -0,0 +1 @@ +ObservationMap | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.RS384JWK.html b/docs/typedoc/interfaces/types.fhirclient.RS384JWK.html new file mode 100644 index 00000000..5f5f41c4 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.RS384JWK.html @@ -0,0 +1 @@ +RS384JWK | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • JsonWebKey
      • RS384JWK

    Indexable

    [propName: string]: unknown

    Index

    Properties

    alg: "RS384"
    crv?: string
    d?: string
    dp?: string
    dq?: string
    e?: string
    ext?: boolean
    k?: string
    key_ops?: KeyUsage[]
    kid: string
    kty: "RSA"
    n?: string
    oth?: RsaOtherPrimesInfo[]
    p?: string
    q?: string
    qi?: string
    use?: string
    x?: string
    y?: string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.ReadyOptions.html b/docs/typedoc/interfaces/types.fhirclient.ReadyOptions.html new file mode 100644 index 00000000..eb9cc110 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.ReadyOptions.html @@ -0,0 +1 @@ +ReadyOptions | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.RequestOptions.html b/docs/typedoc/interfaces/types.fhirclient.RequestOptions.html new file mode 100644 index 00000000..f5b7ccf3 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.RequestOptions.html @@ -0,0 +1,38 @@ +RequestOptions | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Options that must contain an url property (String|URL). +A includeResponse boolean option might also be passed. Any other +properties will be passed to the underlying fetch() call.

    +

    Hierarchy

    • RequestInit
      • RequestOptions

    Index

    Properties

    body?: null | BodyInit
    +

    A BodyInit object or null to set request's body.

    +
    cache?: RequestCache
    +

    A string indicating how the request will interact with the browser's cache to set request's cache.

    +
    credentials?: RequestCredentials
    +

    A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials.

    +
    headers?: HeadersInit
    +

    A Headers object, an object literal, or an array of two-item arrays to set request's headers.

    +
    includeResponse?: boolean
    +

    If set to true the request function will resolve with an object +like { body: any, response: Response } so that users have +access to the response object and it's properties like headers +status etc.

    +
    integrity?: string
    +

    A cryptographic hash of the resource to be fetched by request. Sets request's integrity.

    +
    keepalive?: boolean
    +

    A boolean to set request's keepalive.

    +
    method?: string
    +

    A string to set request's method.

    +
    mode?: RequestMode
    +

    A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode.

    +
    redirect?: RequestRedirect
    +

    A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect.

    +
    referrer?: string
    +

    A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer.

    +
    referrerPolicy?: ReferrerPolicy
    +

    A referrer policy to set request's referrerPolicy.

    +
    signal?: null | AbortSignal
    +

    An AbortSignal to set request's signal.

    +
    url: string | URL
    +

    The URL to request

    +
    window?: null
    +

    Can only be null. Used to disassociate request from any Window.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.RequestWithSession.html b/docs/typedoc/interfaces/types.fhirclient.RequestWithSession.html new file mode 100644 index 00000000..aa99384b --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.RequestWithSession.html @@ -0,0 +1,461 @@ +RequestWithSession | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • IncomingMessage
      • RequestWithSession

    Index

    Properties

    aborted: boolean
    +

    The message.aborted property will be true if the request has +been aborted.

    +
    since

    v10.1.0

    +
    deprecated

    Since v17.0.0,v16.12.0 - Check message.destroyed from stream.Readable.

    +
    closed: boolean
    +

    Is true after 'close' has been emitted.

    +
    since

    v18.0.0

    +
    complete: boolean
    +

    The message.complete property will be true if a complete HTTP message has +been received and successfully parsed.

    +

    This property is particularly useful as a means of determining if a client or +server fully transmitted a message before a connection was terminated:

    +
    const req = http.request({
    host: '127.0.0.1',
    port: 8080,
    method: 'POST'
    }, (res) => {
    res.resume();
    res.on('end', () => {
    if (!res.complete)
    console.error(
    'The connection was terminated while the message was still being sent');
    });
    }); +
    +
    since

    v0.3.0

    +
    connection: Socket
    +

    Alias for message.socket.

    +
    since

    v0.1.90

    +
    deprecated

    Since v16.0.0 - Use socket.

    +
    destroyed: boolean
    +

    Is true after readable.destroy() has been called.

    +
    since

    v8.0.0

    +
    errored: null | Error
    +

    Returns error if the stream has been destroyed with an error.

    +
    since

    v18.0.0

    +
    headers: IncomingHttpHeaders
    +

    The request/response headers object.

    +

    Key-value pairs of header names and values. Header names are lower-cased.

    +
    // Prints something like:
    //
    // { 'user-agent': 'curl/7.22.0',
    // host: '127.0.0.1:8000',
    // accept: '*' }
    console.log(request.getHeaders()); +
    +

    Duplicates in raw headers are handled in the following ways, depending on the +header name:

    +
      +
    • Duplicates of age, authorization, content-length, content-type, etag, expires, from, host, if-modified-since, if-unmodified-since, last-modified, location, +max-forwards, proxy-authorization, referer, retry-after, server, or user-agent are discarded.
    • +
    • set-cookie is always an array. Duplicates are added to the array.
    • +
    • For duplicate cookie headers, the values are joined together with '; '.
    • +
    • For all other headers, the values are joined together with ', '.
    • +
    +
    since

    v0.1.5

    +
    headersDistinct: Dict<string[]>
    +

    Similar to message.headers, but there is no join logic and the values are always arrays of strings, even for headers received just once.

    +
    // Prints something like:
    //
    // { 'user-agent': ['curl/7.22.0'],
    // host: ['127.0.0.1:8000'],
    // accept: ['*'] }
    console.log(request.headersDistinct); +
    +
    since

    v18.3.0, v16.17.0

    +
    httpVersion: string
    +

    In case of server request, the HTTP version sent by the client. In the case of +client response, the HTTP version of the connected-to server. +Probably either '1.1' or '1.0'.

    +

    Also message.httpVersionMajor is the first integer andmessage.httpVersionMinor is the second.

    +
    since

    v0.1.1

    +
    httpVersionMajor: number
    httpVersionMinor: number
    method?: string
    +

    Only valid for request obtained from {@link Server}.

    +

    The request method as a string. Read only. Examples: 'GET', 'DELETE'.

    +
    since

    v0.1.1

    +
    rawHeaders: string[]
    +

    The raw request/response headers list exactly as they were received.

    +

    The keys and values are in the same list. It is not a +list of tuples. So, the even-numbered offsets are key values, and the +odd-numbered offsets are the associated values.

    +

    Header names are not lowercased, and duplicates are not merged.

    +
    // Prints something like:
    //
    // [ 'user-agent',
    // 'this is invalid because there can be only one',
    // 'User-Agent',
    // 'curl/7.22.0',
    // 'Host',
    // '127.0.0.1:8000',
    // 'ACCEPT',
    // '*' ]
    console.log(request.rawHeaders); +
    +
    since

    v0.11.6

    +
    rawTrailers: string[]
    +

    The raw request/response trailer keys and values exactly as they were +received. Only populated at the 'end' event.

    +
    since

    v0.11.6

    +
    readable: boolean
    +

    Is true if it is safe to call readable.read(), which means +the stream has not been destroyed or emitted 'error' or 'end'.

    +
    since

    v11.4.0

    +
    readableAborted: boolean
    +

    Returns whether the stream was destroyed or errored before emitting 'end'.

    +
    since

    v16.8.0

    +
    experimental
    readableDidRead: boolean
    +

    Returns whether 'data' has been emitted.

    +
    since

    v16.7.0, v14.18.0

    +
    experimental
    readableEncoding: null | BufferEncoding
    +

    Getter for the property encoding of a given Readable stream. The encodingproperty can be set using the readable.setEncoding() method.

    +
    since

    v12.7.0

    +
    readableEnded: boolean
    +

    Becomes true when 'end' event is emitted.

    +
    since

    v12.9.0

    +
    readableFlowing: null | boolean
    +

    This property reflects the current state of a Readable stream as described +in the Three states section.

    +
    since

    v9.4.0

    +
    readableHighWaterMark: number
    +

    Returns the value of highWaterMark passed when creating this Readable.

    +
    since

    v9.3.0

    +
    readableLength: number
    +

    This property contains the number of bytes (or objects) in the queue +ready to be read. The value provides introspection data regarding +the status of the highWaterMark.

    +
    since

    v9.4.0

    +
    readableObjectMode: boolean
    +

    Getter for the property objectMode of a given Readable stream.

    +
    since

    v12.3.0

    +
    session: JsonObject
    socket: Socket
    +

    The net.Socket object associated with the connection.

    +

    With HTTPS support, use request.socket.getPeerCertificate() to obtain the +client's authentication details.

    +

    This property is guaranteed to be an instance of the net.Socket class, +a subclass of stream.Duplex, unless the user specified a socket +type other than net.Socket or internally nulled.

    +
    since

    v0.3.0

    +
    statusCode?: number
    +

    Only valid for response obtained from {@link ClientRequest}.

    +

    The 3-digit HTTP response status code. E.G. 404.

    +
    since

    v0.1.1

    +
    statusMessage?: string
    +

    Only valid for response obtained from {@link ClientRequest}.

    +

    The HTTP response status message (reason phrase). E.G. OK or Internal Server Error.

    +
    since

    v0.11.10

    +
    trailers: Dict<string>
    +

    The request/response trailers object. Only populated at the 'end' event.

    +
    since

    v0.3.0

    +
    trailersDistinct: Dict<string[]>
    +

    Similar to message.trailers, but there is no join logic and the values are always arrays of strings, even for headers received just once. +Only populated at the 'end' event.

    +
    since

    v18.3.0, v16.17.0

    +
    url?: string
    +

    Only valid for request obtained from {@link Server}.

    +

    Request URL string. This contains only the URL that is present in the actual +HTTP request. Take the following request:

    +
    GET /status?name=ryan HTTP/1.1
    +Accept: text/plain
    +
    +

    To parse the URL into its parts:

    +
    new URL(request.url, `http://${request.getHeaders().host}`);
    +
    +

    When request.url is '/status?name=ryan' and request.getHeaders().host is 'localhost:3000':

    +
    $ node
    +> new URL(request.url, `http://${request.getHeaders().host}`)
    +URL {
    +  href: 'http://localhost:3000/status?name=ryan',
    +  origin: 'http://localhost:3000',
    +  protocol: 'http:',
    +  username: '',
    +  password: '',
    +  host: 'localhost:3000',
    +  hostname: 'localhost',
    +  port: '3000',
    +  pathname: '/status',
    +  search: '?name=ryan',
    +  searchParams: URLSearchParams { 'name' => 'ryan' },
    +  hash: ''
    +}
    +
    +
    since

    v0.1.90

    +

    Methods

    • [asyncDispose](): Promise<void>
    • +

      Calls readable.destroy() with an AbortError and returns a promise that fulfills when the stream is finished.

      +
      since

      v18.18.0

      +

      Returns Promise<void>

    • [asyncIterator](): AsyncIterableIterator<any>
    • Returns AsyncIterableIterator<any>

    • [captureRejectionSymbol]<K>(error: Error, event: string | symbol, ...args: AnyRest): void
    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest ...args: AnyRest

      Returns void

    • _construct(callback: ((error?: null | Error) => void)): void
    • Parameters

      • callback: ((error?: null | Error) => void)
          • (error?: null | Error): void
          • Parameters

            • Optional error: null | Error

            Returns void

      Returns void

    • _destroy(error: null | Error, callback: ((error?: null | Error) => void)): void
    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?: null | Error): void
          • Parameters

            • Optional error: null | Error

            Returns void

      Returns void

    • _read(size: number): void
    • Parameters

      • size: number

      Returns void

    • +

      Event emitter +The defined events on documents including:

      +
        +
      1. close
      2. +
      3. data
      4. +
      5. end
      6. +
      7. error
      8. +
      9. pause
      10. +
      11. readable
      12. +
      13. resume
      14. +
      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk: any): void
          • Parameters

            • chunk: any

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err: Error): void
          • Parameters

            • err: Error

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • asIndexedPairs(options?: Pick<ArrayOptions, "signal">): Readable
    • +

      This method returns a new stream with chunks of the underlying stream paired with a counter +in the form [index, chunk]. The first index value is 0 and it increases by 1 for each chunk produced.

      +
      since

      v17.5.0

      +

      Parameters

      • Optional options: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream of indexed pairs.

      +
    • compose<T>(stream: ComposeFnParam | T | Iterable<T> | AsyncIterable<T>, options?: { signal: AbortSignal }): T
    • Type Parameters

      • T extends ReadableStream<T>

      Parameters

      • stream: ComposeFnParam | T | Iterable<T> | AsyncIterable<T>
      • Optional options: { signal: AbortSignal }
        • signal: AbortSignal

      Returns T

    • +

      Calls destroy() on the socket that received the IncomingMessage. If erroris provided, an 'error' event is emitted on the socket and error is passed +as an argument to any listeners on the event.

      +
      since

      v0.3.0

      +

      Parameters

      • Optional error: Error

      Returns RequestWithSession

    • drop(limit: number, options?: Pick<ArrayOptions, "signal">): Readable
    • +

      This method returns a new stream with the first limit chunks dropped from the start.

      +
      since

      v17.5.0

      +

      Parameters

      • limit: number
        +

        the number of chunks to drop from the readable.

        +
      • Optional options: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream with limit chunks dropped from the start.

      +
    • emit(event: "close"): boolean
    • emit(event: "data", chunk: any): boolean
    • emit(event: "end"): boolean
    • emit(event: "error", err: Error): boolean
    • emit(event: "pause"): boolean
    • emit(event: "readable"): boolean
    • emit(event: "resume"): boolean
    • emit(event: string | symbol, ...args: any[]): boolean
    • Parameters

      • event: "close"

      Returns boolean

    • Parameters

      • event: "data"
      • chunk: any

      Returns boolean

    • Parameters

      • event: "end"

      Returns boolean

    • Parameters

      • event: "error"
      • err: Error

      Returns boolean

    • Parameters

      • event: "pause"

      Returns boolean

    • Parameters

      • event: "readable"

      Returns boolean

    • Parameters

      • event: "resume"

      Returns boolean

    • Parameters

      • event: string | symbol
      • Rest ...args: any[]

      Returns boolean

    • eventNames(): (string | symbol)[]
    • +

      Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      const EventEmitter = require('events');
      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      +
      since

      v6.0.0

      +

      Returns (string | symbol)[]

    • every(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>), options?: ArrayOptions): Promise<boolean>
    • +

      This method is similar to Array.prototype.every and calls fn on each chunk in the stream +to check if all awaited return values are truthy value for fn. Once an fn call on a chunk +awaited return value is falsy, the stream is destroyed and the promise is fulfilled with false. +If all of the fn calls on the chunks return a truthy value, the promise is fulfilled with true.

      +
      since

      v17.5.0

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
        +

        a function to call on each chunk of the stream. Async or not.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optional options: ArrayOptions

      Returns Promise<boolean>

      a promise evaluating to true if fn returned a truthy value for every one of the chunks.

      +
    • filter(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>), options?: ArrayOptions): Readable
    • +

      This method allows filtering the stream. For each chunk in the stream the fn function will be called +and if it returns a truthy value, the chunk will be passed to the result stream. +If the fn function returns a promise - that promise will be awaited.

      +
      since

      v17.4.0, v16.14.0

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
        +

        a function to filter chunks from the stream. Async or not.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optional options: ArrayOptions

      Returns Readable

      a stream filtered with the predicate fn.

      +
    • find<T>(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => data is T), options?: ArrayOptions): Promise<undefined | T>
    • find(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>), options?: ArrayOptions): Promise<any>
    • +

      This method is similar to Array.prototype.find and calls fn on each chunk in the stream +to find a chunk with a truthy value for fn. Once an fn call's awaited return value is truthy, +the stream is destroyed and the promise is fulfilled with value for which fn returned a truthy value. +If all of the fn calls on the chunks return a falsy value, the promise is fulfilled with undefined.

      +
      since

      v17.5.0

      +

      Type Parameters

      • T

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => data is T)
        +

        a function to call on each chunk of the stream. Async or not.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): data is T
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns data is T

      • Optional options: ArrayOptions

      Returns Promise<undefined | T>

      a promise evaluating to the first chunk for which fn evaluated with a truthy value, +or undefined if no element was found.

      +
    • Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
          • (data: any, options?: Pick<ArrayOptions, "signal">): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optional options: ArrayOptions

      Returns Promise<any>

    • flatMap(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any), options?: ArrayOptions): Readable
    • +

      This method returns a new stream by applying the given callback to each chunk of the stream +and then flattening the result.

      +

      It is possible to return a stream or another iterable or async iterable from fn and the result streams +will be merged (flattened) into the returned stream.

      +
      since

      v17.5.0

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any)
        +

        a function to map over every chunk in the stream. May be async. May be a stream or generator.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): any
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns any

      • Optional options: ArrayOptions

      Returns Readable

      a stream flat-mapped with the function fn.

      +
    • forEach(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => void | Promise<void>), options?: ArrayOptions): Promise<void>
    • +

      This method allows iterating a stream. For each chunk in the stream the fn function will be called. +If the fn function returns a promise - that promise will be awaited.

      +

      This method is different from for await...of loops in that it can optionally process chunks concurrently. +In addition, a forEach iteration can only be stopped by having passed a signal option +and aborting the related AbortController while for await...of can be stopped with break or return. +In either case the stream will be destroyed.

      +

      This method is different from listening to the 'data' event in that it uses the readable event +in the underlying machinary and can limit the number of concurrent fn calls.

      +
      since

      v17.5.0

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => void | Promise<void>)
        +

        a function to call on each chunk of the stream. Async or not.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): void | Promise<void>
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns void | Promise<void>

      • Optional options: ArrayOptions

      Returns Promise<void>

      a promise for when the stream has finished.

      +
    • getMaxListeners(): number
    • +

      Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to {@link defaultMaxListeners}.

      +
      since

      v1.0.0

      +

      Returns number

    • isPaused(): boolean
    • +

      The readable.isPaused() method returns the current operating state of theReadable. This is used primarily by the mechanism that underlies thereadable.pipe() method. In most +typical cases, there will be no reason to +use this method directly.

      +
      const readable = new stream.Readable();

      readable.isPaused(); // === false
      readable.pause();
      readable.isPaused(); // === true
      readable.resume();
      readable.isPaused(); // === false +
      +
      since

      v0.11.14

      +

      Returns boolean

    • iterator(options?: { destroyOnReturn?: boolean }): AsyncIterableIterator<any>
    • +

      The iterator created by this method gives users the option to cancel the destruction +of the stream if the for await...of loop is exited by return, break, or throw, +or if the iterator should destroy the stream if the stream emitted an error during iteration.

      +
      since

      v16.3.0

      +

      Parameters

      • Optional options: { destroyOnReturn?: boolean }
        • Optional destroyOnReturn?: boolean
          +

          When set to false, calling return on the async iterator, +or exiting a for await...of iteration using a break, return, or throw will not destroy the stream. +Default: true.

          +

      Returns AsyncIterableIterator<any>

    • listenerCount<K>(eventName: string | symbol, listener?: Function): number
    • +

      Returns the number of listeners listening to the event named eventName.

      +

      If listener is provided, it will return how many times the listener +is found in the list of the listeners of the event.

      +
      since

      v3.2.0

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
        +

        The name of the event being listened for

        +
      • Optional listener: Function
        +

        The event handler function

        +

      Returns number

    • listeners<K>(eventName: string | symbol): Function[]
    • +

      Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      +
      since

      v0.1.26

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

    • map(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any), options?: ArrayOptions): Readable
    • +

      This method allows mapping over the stream. The fn function will be called for every chunk in the stream. +If the fn function returns a promise - that promise will be awaited before being passed to the result stream.

      +
      since

      v17.4.0, v16.14.0

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any)
        +

        a function to map over every chunk in the stream. Async or not.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): any
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns any

      • Optional options: ArrayOptions

      Returns Readable

      a stream mapped with the function fn.

      +
    • off<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): RequestWithSession
    • +

      Alias for emitter.removeListener().

      +
      since

      v10.0.0

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk: any): void
          • Parameters

            • chunk: any

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err: Error): void
          • Parameters

            • err: Error

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk: any): void
          • Parameters

            • chunk: any

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err: Error): void
          • Parameters

            • err: Error

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • +

      The readable.pause() method will cause a stream in flowing mode to stop +emitting 'data' events, switching out of flowing mode. Any data that +becomes available will remain in the internal buffer.

      +
      const readable = getReadableStreamSomehow();
      readable.on('data', (chunk) => {
      console.log(`Received ${chunk.length} bytes of data.`);
      readable.pause();
      console.log('There will be no additional data for 1 second.');
      setTimeout(() => {
      console.log('Now data will start flowing again.');
      readable.resume();
      }, 1000);
      }); +
      +

      The readable.pause() method has no effect if there is a 'readable'event listener.

      +
      since

      v0.9.4

      +

      Returns RequestWithSession

    • pipe<T>(destination: T, options?: { end?: boolean }): T
    • Type Parameters

      • T extends WritableStream<T>

      Parameters

      • destination: T
      • Optional options: { end?: boolean }
        • Optional end?: boolean

      Returns T

    • Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk: any): void
          • Parameters

            • chunk: any

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err: Error): void
          • Parameters

            • err: Error

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk: any): void
          • Parameters

            • chunk: any

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err: Error): void
          • Parameters

            • err: Error

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • push(chunk: any, encoding?: BufferEncoding): boolean
    • Parameters

      • chunk: any
      • Optional encoding: BufferEncoding

      Returns boolean

    • rawListeners<K>(eventName: string | symbol): Function[]
    • +

      Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      +
      since

      v9.4.0

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

    • read(size?: number): any
    • +

      The readable.read() method reads data out of the internal buffer and +returns it. If no data is available to be read, null is returned. By default, +the data is returned as a Buffer object unless an encoding has been +specified using the readable.setEncoding() method or the stream is operating +in object mode.

      +

      The optional size argument specifies a specific number of bytes to read. Ifsize bytes are not available to be read, null will be returned _unless_the stream has ended, in which +case all of the data remaining in the internal +buffer will be returned.

      +

      If the size argument is not specified, all of the data contained in the +internal buffer will be returned.

      +

      The size argument must be less than or equal to 1 GiB.

      +

      The readable.read() method should only be called on Readable streams +operating in paused mode. In flowing mode, readable.read() is called +automatically until the internal buffer is fully drained.

      +
      const readable = getReadableStreamSomehow();

      // 'readable' may be triggered multiple times as data is buffered in
      readable.on('readable', () => {
      let chunk;
      console.log('Stream is readable (new data received in buffer)');
      // Use a loop to make sure we read all currently available data
      while (null !== (chunk = readable.read())) {
      console.log(`Read ${chunk.length} bytes of data...`);
      }
      });

      // 'end' will be triggered once when there is no more data available
      readable.on('end', () => {
      console.log('Reached end of stream.');
      }); +
      +

      Each call to readable.read() returns a chunk of data, or null. The chunks +are not concatenated. A while loop is necessary to consume all data +currently in the buffer. When reading a large file .read() may return null, +having consumed all buffered content so far, but there is still more data to +come not yet buffered. In this case a new 'readable' event will be emitted +when there is more data in the buffer. Finally the 'end' event will be +emitted when there is no more data to come.

      +

      Therefore to read a file's whole contents from a readable, it is necessary +to collect chunks across multiple 'readable' events:

      +
      const chunks = [];

      readable.on('readable', () => {
      let chunk;
      while (null !== (chunk = readable.read())) {
      chunks.push(chunk);
      }
      });

      readable.on('end', () => {
      const content = chunks.join('');
      }); +
      +

      A Readable stream in object mode will always return a single item from +a call to readable.read(size), regardless of the value of thesize argument.

      +

      If the readable.read() method returns a chunk of data, a 'data' event will +also be emitted.

      +

      Calling read after the 'end' event has +been emitted will return null. No runtime error will be raised.

      +
      since

      v0.9.4

      +

      Parameters

      • Optional size: number
        +

        Optional argument to specify how much data to read.

        +

      Returns any

    • reduce<T>(fn: ((previous: any, data: any, options?: Pick<ArrayOptions, "signal">) => T), initial?: undefined, options?: Pick<ArrayOptions, "signal">): Promise<T>
    • reduce<T>(fn: ((previous: T, data: any, options?: Pick<ArrayOptions, "signal">) => T), initial: T, options?: Pick<ArrayOptions, "signal">): Promise<T>
    • +

      This method calls fn on each chunk of the stream in order, passing it the result from the calculation +on the previous element. It returns a promise for the final value of the reduction.

      +

      If no initial value is supplied the first chunk of the stream is used as the initial value. +If the stream is empty, the promise is rejected with a TypeError with the ERR_INVALID_ARGS code property.

      +

      The reducer function iterates the stream element-by-element which means that there is no concurrency parameter +or parallelism. To perform a reduce concurrently, you can extract the async function to readable.map method.

      +
      since

      v17.5.0

      +

      Type Parameters

      • T = any

      Parameters

      • fn: ((previous: any, data: any, options?: Pick<ArrayOptions, "signal">) => T)
        +

        a reducer function to call over every chunk in the stream. Async or not.

        +
          • (previous: any, data: any, options?: Pick<ArrayOptions, "signal">): T
          • Parameters

            • previous: any
            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns T

      • Optional initial: undefined
        +

        the initial value to use in the reduction.

        +
      • Optional options: Pick<ArrayOptions, "signal">

      Returns Promise<T>

      a promise for the final value of the reduction.

      +
    • Type Parameters

      • T = any

      Parameters

      • fn: ((previous: T, data: any, options?: Pick<ArrayOptions, "signal">) => T)
          • (previous: T, data: any, options?: Pick<ArrayOptions, "signal">): T
          • Parameters

            • previous: T
            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns T

      • initial: T
      • Optional options: Pick<ArrayOptions, "signal">

      Returns Promise<T>

    • +

      Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +
      since

      v0.1.26

      +

      Parameters

      • Optional event: string | symbol

      Returns RequestWithSession

    • Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk: any): void
          • Parameters

            • chunk: any

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err: Error): void
          • Parameters

            • err: Error

            Returns void

      Returns RequestWithSession

    • Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args: any[]): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns RequestWithSession

    • +

      The readable.resume() method causes an explicitly paused Readable stream to +resume emitting 'data' events, switching the stream into flowing mode.

      +

      The readable.resume() method can be used to fully consume the data from a +stream without actually processing any of that data:

      +
      getReadableStreamSomehow()
      .resume()
      .on('end', () => {
      console.log('Reached the end, but did not read anything.');
      }); +
      +

      The readable.resume() method has no effect if there is a 'readable'event listener.

      +
      since

      v0.9.4

      +

      Returns RequestWithSession

    • +

      The readable.setEncoding() method sets the character encoding for +data read from the Readable stream.

      +

      By default, no encoding is assigned and stream data will be returned asBuffer objects. Setting an encoding causes the stream data +to be returned as strings of the specified encoding rather than as Bufferobjects. For instance, calling readable.setEncoding('utf8') will cause the +output data to be interpreted as UTF-8 data, and passed as strings. Callingreadable.setEncoding('hex') will cause the data to be encoded in hexadecimal +string format.

      +

      The Readable stream will properly handle multi-byte characters delivered +through the stream that would otherwise become improperly decoded if simply +pulled from the stream as Buffer objects.

      +
      const readable = getReadableStreamSomehow();
      readable.setEncoding('utf8');
      readable.on('data', (chunk) => {
      assert.equal(typeof chunk, 'string');
      console.log('Got %d characters of string data:', chunk.length);
      }); +
      +
      since

      v0.9.4

      +

      Parameters

      • encoding: BufferEncoding
        +

        The encoding to use.

        +

      Returns RequestWithSession

    • +

      By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +
      since

      v0.3.5

      +

      Parameters

      • n: number

      Returns RequestWithSession

    • +

      Calls message.socket.setTimeout(msecs, callback).

      +
      since

      v0.5.9

      +

      Parameters

      • msecs: number
      • Optional callback: (() => void)
          • (): void
          • Returns void

      Returns RequestWithSession

    • some(fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>), options?: ArrayOptions): Promise<boolean>
    • +

      This method is similar to Array.prototype.some and calls fn on each chunk in the stream +until the awaited return value is true (or any truthy value). Once an fn call on a chunk +awaited return value is truthy, the stream is destroyed and the promise is fulfilled with true. +If none of the fn calls on the chunks return a truthy value, the promise is fulfilled with false.

      +
      since

      v17.5.0

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
        +

        a function to call on each chunk of the stream. Async or not.

        +
          • (data: any, options?: Pick<ArrayOptions, "signal">): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optional options: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optional options: ArrayOptions

      Returns Promise<boolean>

      a promise evaluating to true if fn returned a truthy value for at least one of the chunks.

      +
    • take(limit: number, options?: Pick<ArrayOptions, "signal">): Readable
    • +

      This method returns a new stream with the first limit chunks.

      +
      since

      v17.5.0

      +

      Parameters

      • limit: number
        +

        the number of chunks to take from the readable.

        +
      • Optional options: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream with limit chunks taken.

      +
    • toArray(options?: Pick<ArrayOptions, "signal">): Promise<any[]>
    • +

      This method allows easily obtaining the contents of a stream.

      +

      As this method reads the entire stream into memory, it negates the benefits of streams. It's intended +for interoperability and convenience, not as the primary way to consume streams.

      +
      since

      v17.5.0

      +

      Parameters

      • Optional options: Pick<ArrayOptions, "signal">

      Returns Promise<any[]>

      a promise containing an array with the contents of the stream.

      +
    • +

      The readable.unpipe() method detaches a Writable stream previously attached +using the pipe method.

      +

      If the destination is not specified, then all pipes are detached.

      +

      If the destination is specified, but no pipe is set up for it, then +the method does nothing.

      +
      const fs = require('fs');
      const readable = getReadableStreamSomehow();
      const writable = fs.createWriteStream('file.txt');
      // All the data from readable goes into 'file.txt',
      // but only for the first second.
      readable.pipe(writable);
      setTimeout(() => {
      console.log('Stop writing to file.txt.');
      readable.unpipe(writable);
      console.log('Manually close the file stream.');
      writable.end();
      }, 1000); +
      +
      since

      v0.9.4

      +

      Parameters

      • Optional destination: WritableStream
        +

        Optional specific stream to unpipe

        +

      Returns RequestWithSession

    • unshift(chunk: any, encoding?: BufferEncoding): void
    • +

      Passing chunk as null signals the end of the stream (EOF) and behaves the +same as readable.push(null), after which no more data can be written. The EOF +signal is put at the end of the buffer and any buffered data will still be +flushed.

      +

      The readable.unshift() method pushes a chunk of data back into the internal +buffer. This is useful in certain situations where a stream is being consumed by +code that needs to "un-consume" some amount of data that it has optimistically +pulled out of the source, so that the data can be passed on to some other party.

      +

      The stream.unshift(chunk) method cannot be called after the 'end' event +has been emitted or a runtime error will be thrown.

      +

      Developers using stream.unshift() often should consider switching to +use of a Transform stream instead. See the API for stream implementers section for more information.

      +
      // Pull off a header delimited by \n\n.
      // Use unshift() if we get too much.
      // Call the callback with (error, header, stream).
      const { StringDecoder } = require('string_decoder');
      function parseHeader(stream, callback) {
      stream.on('error', callback);
      stream.on('readable', onReadable);
      const decoder = new StringDecoder('utf8');
      let header = '';
      function onReadable() {
      let chunk;
      while (null !== (chunk = stream.read())) {
      const str = decoder.write(chunk);
      if (str.includes('\n\n')) {
      // Found the header boundary.
      const split = str.split(/\n\n/);
      header += split.shift();
      const remaining = split.join('\n\n');
      const buf = Buffer.from(remaining, 'utf8');
      stream.removeListener('error', callback);
      // Remove the 'readable' listener before unshifting.
      stream.removeListener('readable', onReadable);
      if (buf.length)
      stream.unshift(buf);
      // Now the body of the message can be read from the stream.
      callback(null, header, stream);
      return;
      }
      // Still reading the header.
      header += str;
      }
      }
      } +
      +

      Unlike push, stream.unshift(chunk) will not +end the reading process by resetting the internal reading state of the stream. +This can cause unexpected results if readable.unshift() is called during a +read (i.e. from within a _read implementation on a +custom stream). Following the call to readable.unshift() with an immediate push will reset the reading state appropriately, +however it is best to simply avoid calling readable.unshift() while in the +process of performing a read.

      +
      since

      v0.9.11

      +

      Parameters

      • chunk: any
        +

        Chunk of data to unshift onto the read queue. For streams not operating in object mode, chunk must be a string, Buffer, Uint8Array or null. For object mode +streams, chunk may be any JavaScript value.

        +
      • Optional encoding: BufferEncoding
        +

        Encoding of string chunks. Must be a valid Buffer encoding, such as 'utf8' or 'ascii'.

        +

      Returns void

    • +

      Prior to Node.js 0.10, streams did not implement the entire stream module API +as it is currently defined. (See Compatibility for more information.)

      +

      When using an older Node.js library that emits 'data' events and has a pause method that is advisory only, thereadable.wrap() method can be used to create a Readable +stream that uses +the old stream as its data source.

      +

      It will rarely be necessary to use readable.wrap() but the method has been +provided as a convenience for interacting with older Node.js applications and +libraries.

      +
      const { OldReader } = require('./old-api-module.js');
      const { Readable } = require('stream');
      const oreader = new OldReader();
      const myReader = new Readable().wrap(oreader);

      myReader.on('readable', () => {
      myReader.read(); // etc.
      }); +
      +
      since

      v0.9.4

      +

      Parameters

      • stream: ReadableStream
        +

        An "old style" readable stream

        +

      Returns RequestWithSession

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.SMART.html b/docs/typedoc/interfaces/types.fhirclient.SMART.html new file mode 100644 index 00000000..fdb6cf55 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.SMART.html @@ -0,0 +1,42 @@ +SMART | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • SMART

    Indexable

    [key: string]: any

    Index

    Properties

    Methods

    • +

      Starts the SMART Launch Sequence.

      +
      +

      IMPORTANT: authorize() will end up redirecting you to the + authorization server. This means that you should not add + anything to the returned promise chain. Any code written directly + after the authorize() call might not be executed due to that + redirect!

      +
      +

      The options that you would typically pass for an EHR launch are just +clientId and scope. For standalone launch you should also provide +the iss option.

      +

      Parameters

      Returns Promise<string | void>

    • +

      This function can be used when you want to handle everything in one +page (no launch endpoint needed).

      +
        +
      1. It will only work if your launch_uri is the same as your redirect_uri. +While this should be valid, we can't promise that every EHR will allow you +to register client with such settings.
      2. +
      3. Internally, init() will be called twice. First it will redirect to the EHR, + then the EHR will redirect back to the page where init() will be called + again to complete the authorization. This is generally fine, because the + returned promise will only be resolved once, after the second execution, + but please also consider the following:
      4. +
      +
        +
      • You should wrap all your app's code in a function that is only executed + after init() resolves!
      • +
      • Since the page will be loaded twice, you must be careful if your code has + global side effects that can persist between page reloads (for example + writing to localStorage).
      • +
      +

      Parameters

      Returns Promise<default>

    • +

      This should be called on your redirect_uri. Returns a Promise that +will eventually be resolved with a Client instance that you can use +to query the fhir server.

      +

      Parameters

      Returns Promise<default>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Method
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.Storage.html b/docs/typedoc/interfaces/types.fhirclient.Storage.html new file mode 100644 index 00000000..cccdb1fc --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.Storage.html @@ -0,0 +1,13 @@ +Storage | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    Simple key/value storage interface

    +

    Hierarchy

    • Storage

    Index

    Methods

    • get(key: string): Promise<any>
    • +

      Gets the value at key. Returns a promise that will be resolved +with that value (or undefined for missing keys).

      +

      Parameters

      • key: string

      Returns Promise<any>

    • set(key: string, value: any): Promise<any>
    • +

      Sets the value on key and returns a promise that will be resolved +with the value that was set.

      +

      Parameters

      • key: string
      • value: any

      Returns Promise<any>

    • unset(key: string): Promise<boolean>
    • +

      Deletes the value at key. Returns a promise that will be resolved +with true if the key was deleted or with false if it was not (eg. if +did not exist).

      +

      Parameters

      • key: string

      Returns Promise<boolean>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Method
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.TokenResponse.html b/docs/typedoc/interfaces/types.fhirclient.TokenResponse.html new file mode 100644 index 00000000..bfcfdcf2 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.TokenResponse.html @@ -0,0 +1,47 @@ +TokenResponse | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    +

    The response object received from the token endpoint while trying to +exchange the auth code for an access token. This object has a well-known +base structure but the auth servers are free to augment it with +additional properties.

    +
    see

    http://docs.smarthealthit.org/authorization/

    +

    Hierarchy

    • TokenResponse

    Indexable

    [key: string]: any
    +

    Other properties might be passed by the server

    +

    Index

    Properties

    access_token?: string
    +

    The access token issued by the authorization server

    +
    client_id?: string
    +

    If you have requested openid and profile scopes the profile of +the active user will be available as client_id. +NOTE: Regardless of it's name, this property does not store an ID +but a token that also suggests the user type like Patient/123, +Practitioner/xyz etc.

    +
    encounter?: string
    +

    If you have requested that require it (like launch or launch/encounter) +the selected encounter ID will be available here. +NOTE: This is not widely supported as of 2018.

    +
    expires_in?: number
    +

    Lifetime in seconds of the access token, after which the token SHALL NOT +be accepted by the resource server

    +
    id_token?: string
    +

    Authenticated patient identity and profile, if requested

    +
    need_patient_banner?: boolean
    +

    If present, this tells the app that it is being rendered within an +EHR frame and the UI outside that frame already displays the selected +patient's name, age, gender etc. The app can decide to hide those +details to prevent the UI from duplicated information.

    +
    patient?: string
    +

    If you have requested that require it (like launch or launch/patient) +the selected patient ID will be available here.

    +
    refresh_token?: string
    +

    Token that can be used to obtain a new access token, using the same or a +subset of the original authorization grants

    +
    scope?: string
    +

    Scope of access authorized. Note that this can be different from the +scopes requested by the app.

    +
    smart_style_url?: string
    +

    This could be a public location of some style settings that the EHR +would like to suggest. The app might look it up and optionally decide +to apply some or all of it.

    +
    see

    https://launch.smarthealthit.org/smart-style.json

    +
    token_type?: "bearer" | "Bearer"
    +

    Fixed value: bearer

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/interfaces/types.fhirclient.WellKnownSmartConfiguration.html b/docs/typedoc/interfaces/types.fhirclient.WellKnownSmartConfiguration.html new file mode 100644 index 00000000..0000b680 --- /dev/null +++ b/docs/typedoc/interfaces/types.fhirclient.WellKnownSmartConfiguration.html @@ -0,0 +1,29 @@ +WellKnownSmartConfiguration | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Hierarchy

    • WellKnownSmartConfiguration

    Index

    Properties

    authorization_endpoint: string
    +

    URL to the OAuth2 authorization endpoint.

    +
    +

    Array of strings representing SMART capabilities (e.g., single-sign-on +or launch-standalone) that the server supports.

    +
    code_challenge_methods_supported?: "S256"[]
    +

    RECOMMENDED! PKCE challenge methods the server supports.

    +
    introspection_endpoint?: string
    +

    RECOMMENDED! URL to a server’s introspection endpoint that can be used +to validate a token.

    +
    management_endpoint?: string
    +

    RECOMMENDED! URL where an end-user can view which applications currently +have access to data and can make adjustments to these access rights.

    +
    registration_endpoint?: string
    +

    If available, URL to the OAuth2 dynamic registration endpoint for the +FHIR server.

    +
    response_types_supported?: string[]
    +

    Array of OAuth2 response_type values that are supported

    +
    revocation_endpoint?: string
    +

    RECOMMENDED! URL to a server’s revoke endpoint that can be used to +revoke a token.

    +
    scopes_supported?: string[]
    +

    Array of scopes a client may request.

    +
    token_endpoint: string
    +

    URL to the OAuth2 token endpoint.

    +
    token_endpoint_auth_methods?: SMARTAuthenticationMethod[]
    +

    Array of client authentication methods supported by the token endpoint. +The options are “client_secret_post” and “client_secret_basic”.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Property
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules.html b/docs/typedoc/modules.html new file mode 100644 index 00000000..15448c54 --- /dev/null +++ b/docs/typedoc/modules.html @@ -0,0 +1 @@ +FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    FHIRClient - v2.5.4

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/Client.html b/docs/typedoc/modules/Client.html new file mode 100644 index 00000000..8a68d232 --- /dev/null +++ b/docs/typedoc/modules/Client.html @@ -0,0 +1 @@ +Client | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/HttpError.html b/docs/typedoc/modules/HttpError.html new file mode 100644 index 00000000..899274ff --- /dev/null +++ b/docs/typedoc/modules/HttpError.html @@ -0,0 +1 @@ +HttpError | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html b/docs/typedoc/modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html new file mode 100644 index 00000000..0ec274cf --- /dev/null +++ b/docs/typedoc/modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_abortcontroller_polyfill_only_.html @@ -0,0 +1 @@ +"abortcontroller-polyfill/dist/abortcontroller-polyfill-only" | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Namespace "abortcontroller-polyfill/dist/abortcontroller-polyfill-only"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html b/docs/typedoc/modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html new file mode 100644 index 00000000..dac0a08d --- /dev/null +++ b/docs/typedoc/modules/abortcontroller_polyfill._abortcontroller_polyfill_dist_cjs_ponyfill_.html @@ -0,0 +1 @@ +"abortcontroller-polyfill/dist/cjs-ponyfill" | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/abortcontroller_polyfill.html b/docs/typedoc/modules/abortcontroller_polyfill.html new file mode 100644 index 00000000..e68a00e6 --- /dev/null +++ b/docs/typedoc/modules/abortcontroller_polyfill.html @@ -0,0 +1 @@ +abortcontroller-polyfill | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module abortcontroller-polyfill

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/adapters_BrowserAdapter.html b/docs/typedoc/modules/adapters_BrowserAdapter.html new file mode 100644 index 00000000..37d170b9 --- /dev/null +++ b/docs/typedoc/modules/adapters_BrowserAdapter.html @@ -0,0 +1 @@ +adapters/BrowserAdapter | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module adapters/BrowserAdapter

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/adapters_HapiAdapter.html b/docs/typedoc/modules/adapters_HapiAdapter.html new file mode 100644 index 00000000..641de7c3 --- /dev/null +++ b/docs/typedoc/modules/adapters_HapiAdapter.html @@ -0,0 +1 @@ +adapters/HapiAdapter | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module adapters/HapiAdapter

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/adapters_NodeAdapter.html b/docs/typedoc/modules/adapters_NodeAdapter.html new file mode 100644 index 00000000..b30d0d07 --- /dev/null +++ b/docs/typedoc/modules/adapters_NodeAdapter.html @@ -0,0 +1 @@ +adapters/NodeAdapter | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module adapters/NodeAdapter

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/entry_browser.html b/docs/typedoc/modules/entry_browser.html new file mode 100644 index 00000000..e8728309 --- /dev/null +++ b/docs/typedoc/modules/entry_browser.html @@ -0,0 +1,42 @@ +entry/browser | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Variables

    Variables

    export=: { AbortController: { prototype: AbortController }; client: ((state: string | ClientState) => default); oauth2: { authorize: ((options: AuthorizeParams) => Promise<string | void>); init: ((options: AuthorizeParams) => Promise<default>); ready: ((options?: ReadyOptions) => Promise<default>); settings: BrowserFHIRSettings }; utils: any } = ...

    Type declaration

    • AbortController: { prototype: AbortController }
      • prototype: AbortController
    • client: ((state: string | ClientState) => default)
    • oauth2: { authorize: ((options: AuthorizeParams) => Promise<string | void>); init: ((options: AuthorizeParams) => Promise<default>); ready: ((options?: ReadyOptions) => Promise<default>); settings: BrowserFHIRSettings }
      • authorize: ((options: AuthorizeParams) => Promise<string | void>)
          • +

            Starts the SMART Launch Sequence.

            +
            +

            IMPORTANT: authorize() will end up redirecting you to the + authorization server. This means that you should not add + anything to the returned promise chain. Any code written directly + after the authorize() call might not be executed due to that + redirect!

            +
            +

            The options that you would typically pass for an EHR launch are just +clientId and scope. For standalone launch you should also provide +the iss option.

            +

            Parameters

            Returns Promise<string | void>

      • init: ((options: AuthorizeParams) => Promise<default>)
          • +

            This function can be used when you want to handle everything in one +page (no launch endpoint needed).

            +
              +
            1. It will only work if your launch_uri is the same as your redirect_uri. +While this should be valid, we can't promise that every EHR will allow you +to register client with such settings.
            2. +
            3. Internally, init() will be called twice. First it will redirect to the EHR, + then the EHR will redirect back to the page where init() will be called + again to complete the authorization. This is generally fine, because the + returned promise will only be resolved once, after the second execution, + but please also consider the following:
            4. +
            +
              +
            • You should wrap all your app's code in a function that is only executed + after init() resolves!
            • +
            • Since the page will be loaded twice, you must be careful if your code has + global side effects that can persist between page reloads (for example + writing to localStorage).
            • +
            +

            Parameters

            Returns Promise<default>

      • ready: ((options?: ReadyOptions) => Promise<default>)
          • +

            This should be called on your redirect_uri. Returns a Promise that +will eventually be resolved with a Client instance that you can use +to query the fhir server.

            +

            Parameters

            Returns Promise<default>

      • settings: BrowserFHIRSettings
    • utils: any

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/entry_hapi.export_.html b/docs/typedoc/modules/entry_hapi.export_.html new file mode 100644 index 00000000..3a25f113 --- /dev/null +++ b/docs/typedoc/modules/entry_hapi.export_.html @@ -0,0 +1 @@ +export= | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/entry_hapi.html b/docs/typedoc/modules/entry_hapi.html new file mode 100644 index 00000000..35e17be0 --- /dev/null +++ b/docs/typedoc/modules/entry_hapi.html @@ -0,0 +1 @@ +entry/hapi | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/entry_node.export_.html b/docs/typedoc/modules/entry_node.export_.html new file mode 100644 index 00000000..aedf6e4a --- /dev/null +++ b/docs/typedoc/modules/entry_node.export_.html @@ -0,0 +1 @@ +export= | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/entry_node.html b/docs/typedoc/modules/entry_node.html new file mode 100644 index 00000000..1e49110d --- /dev/null +++ b/docs/typedoc/modules/entry_node.html @@ -0,0 +1 @@ +entry/node | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Namespaces

    Functions

    Functions

    • export=(request: IncomingMessage, response: ServerResponse<IncomingMessage>, storage?: Storage | storageFactory): SMART
    • Parameters

      • request: IncomingMessage
      • response: ServerResponse<IncomingMessage>
      • Optional storage: Storage | storageFactory

      Returns SMART

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/lib.html b/docs/typedoc/modules/lib.html new file mode 100644 index 00000000..b3473106 --- /dev/null +++ b/docs/typedoc/modules/lib.html @@ -0,0 +1,129 @@ +lib | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Variables

    debug: any = ...
    units: { any: any; cm: any; kg: any } = ...
    +

    A namespace with functions for converting between different measurement units

    +

    Type declaration

    Other Functions

    • absolute(path: string, baseUrl?: string): string
    • +

      Given a path, converts it to absolute url based on the baseUrl. If baseUrl +is not provided, the result would be a rooted path (one that starts with /).

      +

      Parameters

      • path: string
        +

        The path to convert

        +
      • Optional baseUrl: string
        +

        The base URL

        +

      Returns string

    • assert(condition: any, message: string): asserts condition
    • Parameters

      • condition: any
      • message: string

      Returns asserts condition

    • assertJsonPatch(patch: JsonPatch): asserts patch
    • +

      Groups the observations by code. Returns a map that will look like:

      +
      const map = client.byCodes(observations, "code");
      // map = {
      // "55284-4": [ observation1, observation2 ],
      // "6082-2": [ observation3 ]
      // } +
      +

      Parameters

      • observations: Observation | Observation[]
        +

        Array of observations

        +
      • property: string
        +

        The name of a CodeableConcept property to group by

        +

      Returns ObservationMap

    • +

      First groups the observations by code using byCode. Then returns a function +that accepts codes as arguments and will return a flat array of observations +having that codes. Example:

      +
      const filter = client.byCodes(observations, "category");
      filter("laboratory") // => [ observation1, observation2 ]
      filter("vital-signs") // => [ observation3 ]
      filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] +
      +

      Parameters

      • observations: Observation | Observation[]
        +

        Array of observations

        +
      • property: string
        +

        The name of a CodeableConcept property to group by

        +

      Returns ((...codes: string[]) => any[])

        • (...codes: string[]): any[]
        • +

          First groups the observations by code using byCode. Then returns a function +that accepts codes as arguments and will return a flat array of observations +having that codes. Example:

          +
          const filter = client.byCodes(observations, "category");
          filter("laboratory") // => [ observation1, observation2 ]
          filter("vital-signs") // => [ observation3 ]
          filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] +
          +

          Parameters

          • Rest ...codes: string[]

          Returns any[]

    • checkResponse(resp: Response): Promise<Response>
    • +

      Used in fetch Promise chains to reject if the "ok" property is not true

      +

      Parameters

      • resp: Response

      Returns Promise<Response>

    • fetchConformanceStatement(baseUrl?: string, requestOptions?: RequestInit): Promise<CapabilityStatement>
    • +

      Fetches the conformance statement from the given base URL. +Note that the result is cached in memory (until the page is reloaded in the +browser) because it might have to be re-used by the client

      +

      Parameters

      • baseUrl: string = "/"
        +

        The base URL of the FHIR server

        +
      • Optional requestOptions: RequestInit

      Returns Promise<CapabilityStatement>

    • +

      Given a token response, computes and returns the expiresAt timestamp. +Note that this should only be used immediately after an access token is +received, otherwise the computed timestamp will be incorrect.

      +

      Parameters

      Returns number

    • getAndCache(url: string, requestOptions?: RequestInit, force?: boolean): Promise<any>
    • +

      Makes a request using fetch and stores the result in internal memory cache. +The cache is cleared when the page is unloaded.

      +

      Parameters

      • url: string
        +

        The URL to request

        +
      • Optional requestOptions: RequestInit
        +

        Request options

        +
      • force: boolean = ...
        +

        If true, reload from source and update the cache, even if it has +already been cached.

        +

      Returns Promise<any>

    • getPath(obj: Record<string, any>, path?: string): any
    • +

      Walks through an object (or array) and returns the value found at the +provided path. This function is very simple so it intentionally does not +support any argument polymorphism, meaning that the path can only be a +dot-separated string. If the path is invalid returns undefined.

      +

      Parameters

      • obj: Record<string, any>
        +

        The object (or Array) to walk through

        +
      • path: string = ""
        +

        The path (eg. "a.b.4.c")

        +

      Returns any

      Whatever is found in the path or undefined

      +
    • +

      Given a conformance statement and a resource type, returns the name of the +URL parameter that can be used to scope the resource type by patient ID.

      +

      Parameters

      Returns string

    • getTargetWindow(target: WindowTarget, width?: number, height?: number): Promise<Window>
    • +

      Resolves a reference to target window. It may also open new window or tab if +the target = "popup" or target = "_blank".

      +

      Parameters

      • target: WindowTarget
      • width: number = 800
        +

        Only used when target = "popup"

        +
      • height: number = 720
        +

        Only used when target = "popup"

        +

      Returns Promise<Window>

    • getTimeInFuture(secondsAhead?: number, from?: number | Date): number
    • +

      Add a supplied number of seconds to the supplied Date, returning +an integer number of seconds since the epoch

      +

      Parameters

      • secondsAhead: number = 120
        +

        How far ahead, in seconds (defaults to 120 seconds)

        +
      • Optional from: number | Date
        +

        Initial time (defaults to current time)

        +

      Returns number

    • loweCaseKeys<T>(obj: T): T
    • Type Parameters

      • T = undefined | any[] | Record<string, any>

      Parameters

      • obj: T

      Returns T

    • request<T>(url: string | Request, requestOptions?: FetchOptions): Promise<T>
    • +

      This is our built-in request function. It does a few things by default +(unless told otherwise):

      +
        +
      • Makes CORS requests
      • +
      • Sets accept header to "application/json"
      • +
      • Handles errors
      • +
      • If the response is json return the json object
      • +
      • If the response is text return the result text
      • +
      • Otherwise return the response object on which we call stuff like .blob()
      • +
      +

      Type Parameters

      Parameters

      Returns Promise<T>

    • responseToJSON(resp: Response): Promise<object | string>
    • +

      Used in fetch Promise chains to return the JSON version of the response. +Note that resp.json() will throw on empty body so we use resp.text() +instead.

      +

      Parameters

      • resp: Response

      Returns Promise<object | string>

    • setPath(obj: Record<string, any>, path: string, value: any, createEmpty?: boolean): Record<string, any>
    • +

      Like getPath, but if the node is found, its value is set to @value

      +

      Parameters

      • obj: Record<string, any>
        +

        The object (or Array) to walk through

        +
      • path: string
        +

        The path (eg. "a.b.4.c")

        +
      • value: any
        +

        The value to set

        +
      • createEmpty: boolean = false
        +

        If true, create missing intermediate objects or arrays

        +

      Returns Record<string, any>

      The modified object

      +

    Utility Functions

    • jwtDecode(token: string, env: Adapter): Record<string, any> | null
    • +

      Decodes a JWT token and returns it's body.

      +

      Parameters

      • token: string
        +

        The token to read

        +
      • env: Adapter
        +

        An Adapter or any other object that has an atob method

        +

      Returns Record<string, any> | null

    • makeArray<T>(arg: any): T[]
    • +

      If the argument is an array returns it as is. Otherwise puts it in an array +([arg]) and returns the result

      +

      Type Parameters

      • T = any

      Parameters

      • arg: any
        +

        The element to test and possibly convert to array

        +

      Returns T[]

    • randomString(strLength?: number, charSet?: string): string
    • +

      Generates random strings. By default this returns random 8 characters long +alphanumeric strings.

      +

      Parameters

      • strLength: number = 8
        +

        The length of the output string. Defaults to 8.

        +
      • charSet: string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
        +

        A string containing all the possible characters. + Defaults to all the upper and lower-case letters plus digits.

        +

      Returns string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/security_browser.html b/docs/typedoc/modules/security_browser.html new file mode 100644 index 00000000..a8fc133e --- /dev/null +++ b/docs/typedoc/modules/security_browser.html @@ -0,0 +1 @@ +security/browser | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module security/browser

    Index

    Functions

    • digestSha256(payload: string): Promise<Uint8Array>
    • generatePKCEChallenge(entropy?: number): Promise<PkcePair>
    • importJWK(jwk: JWK): Promise<CryptoKey>
    • randomBytes(count: number): Uint8Array
    • signCompactJws(alg: "ES384" | "RS384", privateKey: CryptoKey, header: any, payload: any): Promise<string>
    • Parameters

      • alg: "ES384" | "RS384"
      • privateKey: CryptoKey
      • header: any
      • payload: any

      Returns Promise<string>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/security_server.html b/docs/typedoc/modules/security_server.html new file mode 100644 index 00000000..47660625 --- /dev/null +++ b/docs/typedoc/modules/security_server.html @@ -0,0 +1,29 @@ +security/server | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module security/server

    Index

    Functions

    • digestSha256(payload: string): Promise<Buffer>
    • generatePKCEChallenge(entropy?: number): Promise<PkcePair>
    • importJWK(jwk: JWK): Promise<CryptoKey>
    • randomBytes(size: number): Buffer
    • randomBytes(size: number, callback: ((err: null | Error, buf: Buffer) => void)): void
    • +

      Generates cryptographically strong pseudorandom data. The size argument +is a number indicating the number of bytes to generate.

      +

      If a callback function is provided, the bytes are generated asynchronously +and the callback function is invoked with two arguments: err and buf. +If an error occurs, err will be an Error object; otherwise it is null. Thebuf argument is a Buffer containing the generated bytes.

      +
      // Asynchronous
      const {
      randomBytes
      } = await import('crypto');

      randomBytes(256, (err, buf) => {
      if (err) throw err;
      console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`);
      }); +
      +

      If the callback function is not provided, the random bytes are generated +synchronously and returned as a Buffer. An error will be thrown if +there is a problem generating the bytes.

      +
      // Synchronous
      const {
      randomBytes
      } = await import('crypto');

      const buf = randomBytes(256);
      console.log(
      `${buf.length} bytes of random data: ${buf.toString('hex')}`); +
      +

      The crypto.randomBytes() method will not complete until there is +sufficient entropy available. +This should normally never take longer than a few milliseconds. The only time +when generating the random bytes may conceivably block for a longer period of +time is right after boot, when the whole system is still low on entropy.

      +

      This API uses libuv's threadpool, which can have surprising and +negative performance implications for some applications; see the UV_THREADPOOL_SIZE documentation for more information.

      +

      The asynchronous version of crypto.randomBytes() is carried out in a single +threadpool request. To minimize threadpool task length variation, partition +large randomBytes requests when doing so as part of fulfilling a client +request.

      +
      since

      v0.5.8

      +

      Parameters

      • size: number
        +

        The number of bytes to generate. The size must not be larger than 2**31 - 1.

        +

      Returns Buffer

      if the callback function is not provided.

      +
    • Parameters

      • size: number
      • callback: ((err: null | Error, buf: Buffer) => void)
          • (err: null | Error, buf: Buffer): void
          • Parameters

            • err: null | Error
            • buf: Buffer

            Returns void

      Returns void

    • signCompactJws(alg: SupportedAlg, privateKey: KeyLike, header: any, payload: any): Promise<string>
    • Parameters

      • alg: SupportedAlg
      • privateKey: KeyLike
      • header: any
      • payload: any

      Returns Promise<string>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/settings.html b/docs/typedoc/modules/settings.html new file mode 100644 index 00000000..151343c4 --- /dev/null +++ b/docs/typedoc/modules/settings.html @@ -0,0 +1,10 @@ +settings | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Variables

    SMART_KEY: "SMART_KEY" = "SMART_KEY"
    +

    The name of the sessionStorage entry that contains the current key

    +
    fhirVersions: { 0.4.0: number; 0.5.0: number; 1.0.0: number; 1.0.1: number; 1.0.2: number; 1.1.0: number; 1.4.0: number; 1.6.0: number; 1.8.0: number; 3.0.0: number; 3.0.1: number; 3.3.0: number; 3.5.0: number; 4.0.0: number; 4.0.1: number } = ...
    +

    Map of FHIR releases and their abstract version as number

    +

    Type declaration

    • 0.4.0: number
    • 0.5.0: number
    • 1.0.0: number
    • 1.0.1: number
    • 1.0.2: number
    • 1.1.0: number
    • 1.4.0: number
    • 1.6.0: number
    • 1.8.0: number
    • 3.0.0: number
    • 3.0.1: number
    • 3.3.0: number
    • 3.5.0: number
    • 4.0.0: number
    • 4.0.1: number
    patientCompartment: string[] = ...
    +

    Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4

    +
    patientParams: string[] = ...
    +

    Combined (FHIR R2-R4) list of search parameters that can be used to scope +a request by patient ID.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/smart.html b/docs/typedoc/modules/smart.html new file mode 100644 index 00000000..aec81cb2 --- /dev/null +++ b/docs/typedoc/modules/smart.html @@ -0,0 +1,89 @@ +smart | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    References

    Renames and re-exports SMART_KEY

    Functions

    • +

      Starts the SMART Launch Sequence.

      +
      +

      IMPORTANT: + authorize() will end up redirecting you to the authorization server. + This means that you should not add anything to the returned promise chain. + Any code written directly after the authorize() call might not be executed + due to that redirect!

      +
      +

      Parameters

      Returns Promise<string | void>

    • buildTokenRequest(env: Adapter, __namedParameters: { clientPublicKeySetUrl?: string; code: string; privateKey?: JWK | { alg: "ES384" | "RS384"; key: CryptoKey; kid: string }; state: ClientState }): Promise<RequestInit>
    • +

      Builds the token request options. Does not make the request, just +creates it's configuration and returns it in a Promise.

      +

      Parameters

      • env: Adapter
      • __namedParameters: { clientPublicKeySetUrl?: string; code: string; privateKey?: JWK | { alg: "ES384" | "RS384"; key: CryptoKey; kid: string }; state: ClientState }
        • Optional clientPublicKeySetUrl?: string
          +

          If provided overrides the clientPublicKeySetUrl from the authorize +options (if any). Used for jku token header in case of asymmetric auth.

          +
        • code: string
          +

          The code URL parameter received from the auth redirect

          +
        • Optional privateKey?: JWK | { alg: "ES384" | "RS384"; key: CryptoKey; kid: string }
          +

          Can be a private JWK, or an object with alg, kid and key properties, +where key is an un-extractable private CryptoKey object.

          +
        • state: ClientState
          +

          The app state

          +

      Returns Promise<RequestInit>

    • +

      Fetches the well-known json file from the given base URL. +Note that the result is cached in memory (until the page is reloaded in the +browser) because it might have to be re-used by the client

      +

      Parameters

      • baseUrl: string = "/"
        +

        The base URL of the FHIR server

        +
      • Optional requestOptions: RequestInit

      Returns Promise<WellKnownSmartConfiguration>

    • +

      Given a FHIR server, returns an object with it's Oauth security endpoints +that we are interested in. This will try to find the info in both the +CapabilityStatement and the .well-known/smart-configuration. Whatever +Arrives first will be used and the other request will be aborted.

      +

      Parameters

      • baseUrl: string = "/"

      Returns Promise<OAuthSecurityExtensions>

    • +

      This function can be used when you want to handle everything in one page +(no launch endpoint needed). You can think of it as if it does:

      +
      authorize(options).then(ready)
      +
      +

      Be careful with init()! There are some details you need to be aware of:

      +
        +
      1. It will only work if your launch_uri is the same as your redirect_uri. +While this should be valid, we can’t promise that every EHR will allow you +to register client with such settings.
      2. +
      3. Internally, init() will be called twice. First it will redirect to the +EHR, then the EHR will redirect back to the page where init() will be +called again to complete the authorization. This is generally fine, +because the returned promise will only be resolved once, after the second +execution, but please also consider the following:
          +
        • You should wrap all your app’s code in a function that is only executed +after init() resolves!
        • +
        • Since the page will be loaded twice, you must be careful if your code +has global side effects that can persist between page reloads +(for example writing to localStorage).
        • +
        +
      4. +
      5. For standalone launch, only use init in combination with offline_access +scope. Once the access_token expires, if you don’t have a refresh_token +there is no way to re-authorize properly. We detect that and delete the +expired access token, but it still means that the user will have to +refresh the page twice to re-authorize.
      6. +
      +

      Parameters

      Returns Promise<default | never>

    • isInFrame(): boolean
    • +

      Checks if called within a frame. Only works in browsers! +If the current window has a parent or top properties that refer to +another window, returns true. If trying to access top or parent throws an +error, returns true. Otherwise returns false.

      +

      Returns boolean

    • isInPopUp(): boolean
    • +

      Checks if called within another window (popup or tab). Only works in browsers! +To consider itself called in a new window, this function verifies that:

      +
        +
      1. self === top (not in frame)
      2. +
      3. !!opener && opener !== self The window has an opener
      4. +
      5. !!window.name The window has a name set
      6. +
      +

      Returns boolean

    • onMessage(e: MessageEvent<any>): void
    • +

      Another window can send a "completeAuth" message to this one, making it to +navigate to e.data.url

      +

      Parameters

      • e: MessageEvent<any>
        +

        The message event

        +

      Returns void

    • +

      The ready function should only be called on the page that represents +the redirectUri. We typically land there after a redirect from the +authorization server, but this code will also be executed upon subsequent +navigation or page refresh.

      +

      Parameters

      Returns Promise<default>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/storage_BrowserStorage.html b/docs/typedoc/modules/storage_BrowserStorage.html new file mode 100644 index 00000000..a8a19ec2 --- /dev/null +++ b/docs/typedoc/modules/storage_BrowserStorage.html @@ -0,0 +1 @@ +storage/BrowserStorage | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module storage/BrowserStorage

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/storage_ServerStorage.html b/docs/typedoc/modules/storage_ServerStorage.html new file mode 100644 index 00000000..f4c3ef4b --- /dev/null +++ b/docs/typedoc/modules/storage_ServerStorage.html @@ -0,0 +1 @@ +storage/ServerStorage | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Module storage/ServerStorage

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/strings.html b/docs/typedoc/modules/strings.html new file mode 100644 index 00000000..76e3e612 --- /dev/null +++ b/docs/typedoc/modules/strings.html @@ -0,0 +1 @@ +strings | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Variables

    Variables

    default: { expired: string; noFreeContext: string; noIfNoAuth: string; noScopeForId: string }

    Type declaration

    • expired: string
    • noFreeContext: string
    • noIfNoAuth: string
    • noScopeForId: string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/types.fhirclient.FHIR.html b/docs/typedoc/modules/types.fhirclient.FHIR.html new file mode 100644 index 00000000..f1bd0db4 --- /dev/null +++ b/docs/typedoc/modules/types.fhirclient.FHIR.html @@ -0,0 +1,51 @@ +FHIR | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Type Aliases

    code: string
    +

    Indicates that the value is taken from a set of controlled strings +defined elsewhere. Technically, a code is restricted to a string which +has at least one character and no leading or trailing whitespace, and +where there is no whitespace other than single spaces in the contents +Regex: [^\s]+([\s]?[^\s]+)*

    +
    dateTime: string
    +

    A date, date-time or partial date (e.g. just year or year + month) as +used in human communication. If hours and minutes are specified, a time +zone SHALL be populated. Seconds must be provided due to schema type +constraints but may be zero-filled and may be ignored. Dates SHALL be +valid dates. The time "24:00" is not allowed.

    +

    Patterns:

    +
      +
    • YYYY-MM-DDTHH:mm:ss.SSSSZ
    • +
    • YYYY-MM-DDTHH:mm:ss.SSSZ
    • +
    • YYYY-MM-DDTHH:mm:ssZ
    • +
    • YYYY-MM-DD
    • +
    • YYYY-MM
    • +
    • YYYY
    • +
    +

    Regex: +-?[0-9]{4}(-(0[1-9]|1[0-2])(-(0[0-9]|[1-2][0-9]|3[0-1])(T([01] +[0-9]|2[0-3]):[0-5][0-9]:[0-5]0-9?(Z|(+|-)((0[0-9]|1[0-3]): +[0-5][0-9]|14:00)))?)?)?

    +
    id: string
    +

    Any combination of upper or lower case ASCII letters ('A'..'Z', and +'a'..'z', numerals ('0'..'9'), '-' and '.', with a length limit of 64 +characters. (This might be an integer, an un-prefixed OID, UUID or any +other identifier pattern that meets these constraints.) +Regex: [A-Za-z0-9\-\.]{1,64}

    +
    instant: string
    +

    An instant in time - known at least to the second and always includes a +time zone. Note: This is intended for precisely observed times (typically +system logs etc.), and not human-reported times - for them, use date and +dateTime. instant is a more constrained dateTime.

    +

    Patterns:

    +
      +
    • YYYY-MM-DDTHH:mm:ss.SSSSZ
    • +
    • YYYY-MM-DDTHH:mm:ss.SSSZ
    • +
    • YYYY-MM-DDTHH:mm:ssZ
    • +
    +
    unsignedInt: number
    +

    Any non-negative integer (e.g. >= 0) +Regex: [0]|([1-9][0-9]*)

    +
    uri: string
    +

    A Uniform Resource Identifier Reference (RFC 3986 ). Note: URIs are case +sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7) use +all lowercase. URIs can be absolute or relative, and may have an optional +fragment identifier.

    +
    valueX: "valueInteger" | "valueUnsignedInt" | "valuePositiveInt" | "valueDecimal" | "valueDateTime" | "valueDate" | "valueTime" | "valueInstant" | "valueString" | "valueUri" | "valueOid" | "valueUuid" | "valueId" | "valueBoolean" | "valueCode" | "valueMarkdown" | "valueBase64Binary" | "valueCoding" | "valueCodeableConcept" | "valueAttachment" | "valueIdentifier" | "valueQuantity" | "valueSampledData" | "valueRange" | "valuePeriod" | "valueRatio" | "valueHumanName" | "valueAddress" | "valueContactPoint" | "valueTiming" | "valueReference" | "valueAnnotation" | "valueSignature" | "valueMeta"

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/types.fhirclient.html b/docs/typedoc/modules/types.fhirclient.html new file mode 100644 index 00000000..78278d21 --- /dev/null +++ b/docs/typedoc/modules/types.fhirclient.html @@ -0,0 +1,11 @@ +fhirclient | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Index

    Type Aliases

    FetchResult: Response | JsonObject | string | CombinedFetchResult
    +

    The return type of the lib.request function

    +
    JsonArray: JsonValue[]
    JsonPatch: JsonPatchOperation[]
    JsonPrimitive: string | number | boolean | null
    PkceMode: "ifSupported" | "required" | "disabled" | "unsafeV1"
    RequestFunction<R>: (<O>(requestOptions?: O) => Promise<O["includeResponse"] extends true ? CombinedFetchResult<R> : R>)

    Type Parameters

    • R = any

      +

      The expected return type

      +

    Type declaration

      • <O>(requestOptions?: O): Promise<O["includeResponse"] extends true ? CombinedFetchResult<R> : R>
      • +

        A function or method that makes requests to the backend server. If the +includeResponse option is true resolves with CombinedFetchResult +where the response property is the Response object and the body +property is the result of type R (if any). Otherwise resolves with the +result as R.

        +

        Type Parameters

        Parameters

        • Optional requestOptions: O

        Returns Promise<O["includeResponse"] extends true ? CombinedFetchResult<R> : R>

    SMARTAuthenticationMethod: "client_secret_post" | "client_secret_basic" | "private_key_jwt"
    WindowTargetVariable: "_self" | "_top" | "_parent" | "_blank" | "popup" | string | number | Window
    clientType: "client-public" | "client-confidential-symmetric"
    codeChallengeMethod: "S256"
    launchContext: "context-banner" | "context-style"
    launchContextEHR: "context-ehr-patient" | "context-ehr-encounter"
    launchContextStandalone: "context-standalone-patient" | "context-standalone-encounter"
    launchMode: "launch-ehr" | "launch-standalone"
    permissions: "permission-offline" | "permission-patient" | "permission-user"
    singleSignOn: "sso-openid-connect"
    storageFactory: ((options?: Record<string, any>) => Storage)

    Type declaration

      • (options?: Record<string, any>): Storage
      • Parameters

        • Optional options: Record<string, any>

        Returns Storage

    Functions

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/typedoc/modules/types.html b/docs/typedoc/modules/types.html new file mode 100644 index 00000000..87412d8b --- /dev/null +++ b/docs/typedoc/modules/types.html @@ -0,0 +1 @@ +types | FHIRClient - v2.5.4
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Class

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/v2.md b/docs/v2.md new file mode 100644 index 00000000..9fdb4b3e --- /dev/null +++ b/docs/v2.md @@ -0,0 +1,33 @@ +## Differences between v2+ and older versions + +- **Server support** - v2+ can also be used with NodeJS. Older versions are client-side only. +- **Code** - v2+ is written in ES6 and built with Babel and Webpack. Older versions were written in ES3 and built with Grunt and Browserify. +- **CommonJS** - v2+ can be "required" or "imported" as module. +- **Size** - The v2 bundle is more than 4 times smaller +- **jQuery** - v2+ does not include (nor depend on) jQuery. Older versions include jQuery, or expect to find it in the page. +- **Promises** - v2+ uses ES6 Promises (and includes polyfill for older browsers). The older versions are using promise-like `$.Deferred` objects. +- **HTTP Requests** - v2+ uses native `fetch` (and includes polyfill for older browsers). The older versions were using `$.ajax` from jQuery. +- **fhir.js** - v2+ does not include (nor depend on) [fhir.js](https://github.com/FHIR/fhir.js). Older versions include fhir.js, or expect to find it in the global scope. In v2, fhir.js can be manually or automatically linked at runtime. [Read more](./#fhirjs-integration). +- **Authorization** - v2+ Will attempt to use the [well-known-json](http://hl7.org/fhir/smart-app-launch/conformance/index.html#using-well-known) (which is faster) and will fail-back to Conformance statement. Older versions only used the conformance. +- **[authorize(options)](api#authorizeoptions-promisenever)** - Some options are changed since v2: + - `clientId` - This was previously called `client_id` (which also works in v2+) + - `clientSecret` - This is now accepted because it is applicable on the server side + - `iss` - Since v2, pass `iss` option to make a Standalone Launch + - `redirectUri` - This was previously called `redirect_uri` (which also works in v2+) + - Other Options are available. See the [full list](api#authorizeoptions-promisenever). +- **[ready()](api#readyonsuccess--onerror-promiseclient)** - Since v2, the ready function returns a promise that you should await for. In older versions we had to pass callback arguments (which is still possible in v2+). +- **[init()](api#initoptions-promiseclient-experimental)** - v2 adds the `init` method that is designed to handle authorization on a single page. +- **[client.encounter](client#clientencounterid-stringnull)** - v2+ adds `client.encounter.id` and `client.encounter.read()` API +- **client.user** - v2+ adds [client.user.fhirUser](client#clientuserfhiruser-string) and [client.user.resourceType](client#clientuserresourcetype-string) API and changes [client.user.id](client#clientuserid-string) to return the ID of the user resource (instead of the whole "type/id" token). +- **[client.request()](client#clientrequestrequestoptions-fhiroptions-promiseobject)** - v2+ adds the `client.request()` method. +- **[client.refresh()](client#clientrefresh-promiseobject)** - v2+ adds the `client.refresh()` method. +- **[client.getPath()](client#clientgetpathobject-path-any)** - v2+ adds the `client.getPath()` method. +- **client.getBinary** - v2+ no longer has a `client.getBinary()` method (replaced with `client.request(...).blob()`). +- **client.fetchBinary** - v2+ no longer has a `client.fetchBinary()` method (replaced with `client.request(...).blob()`). +- **[client.byCode()](client#clientbycodeobservations-property-object)** - v2+ fixes `client.byCode()` to also work if the second argument points to an array of CodeableConcepts. +- **refresh tokens** - v2+ will renew access tokens automatically if you use the `client.request()` method. You can also do that manually via the `client.refresh()` method. +- **fetching references** - In v2+ this can be done using request() and is controlled with options. In older versions this can only be done via `fetchAllWithReferences` from the fhir.js API (note that fetchAllWithReferences is also available in v2+ through fhir.js). +- **Testing** - v2+ has large test suite and high (> 95%) code coverage. Older versions did not have tests. +- **Debugging** - v2+ uses [debug](https://www.npmjs.com/package/debug) and comes with source maps and type definitions. +- **Documentation** - v2+ comes with detailed documentation and live examples. +- **Configurable browser support** - By default v2 supports IE 10+. However, those who target different environments can change the `broserlist` configuration in package.json and rebuild. This can result in skipping some polyfills and reducing the bundle size. diff --git a/example.js b/example.js deleted file mode 100644 index 14c2eaad..00000000 --- a/example.js +++ /dev/null @@ -1,21 +0,0 @@ -var FhirClient = require('./client/client'); - -var fhir = new FhirClient({ - serviceUrl: 'http://hl7connect.healthintersections.com.au/svc/fhir', - auth: { type: 'none' } -}); - -fhir.search({ - resource: 'patient', - searchTerms: {}, - count: 2 -}).done(function(resources, nextPage){ - - console.log(JSON.stringify(resources,null,2)); - console.log("Getting more..."); - - nextPage().done(function(resources, nextPage){ - console.log("More resources", resources, nextPage); - }); - -}); diff --git a/example/index.html b/example/index.html deleted file mode 100644 index e63511ef..00000000 --- a/example/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - -

    Hello ...!

    -
      - - - - - diff --git a/lib/nativeFhir.js b/lib/nativeFhir.js new file mode 100644 index 00000000..44c025b5 --- /dev/null +++ b/lib/nativeFhir.js @@ -0,0 +1,1481 @@ +// $lab:coverage:off$ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["fhir"] = factory(); + else + root["fhir"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + var mkFhir = __webpack_require__(1); + + // Fetch Helper JSON Parsing + function parseJSON(response) { + + // response.json() throws on empty body + return response.text() + .then(function(text) { + return text.length > 0 ? JSON.parse(text) : ""; + }); + + } + + // Fetch Helper for Status Codes + function checkStatus(httpResponse) { + return new Promise(function (resolve, reject) { + if (httpResponse.status < 200 || httpResponse.status > 399) { + reject(httpResponse); + } + resolve(httpResponse); + }); + } + + // Build a backwards compatiable defer object + var defer = function(){ + var def = {}; + def.promise = new Promise(function (resolve, reject) { + def.resolve = resolve; + def.reject = reject; + }); + return def; + }; + + // Build Adapter Object + var adapter = { + defer: defer, + http: function (args) { + var url = args.url; + var debug = args.debug; + + // The arguments passed in aligh with the fetch option names. + // There are are few extra values, but fetch will ignore them. + var fetchOptions = args; + + // Pass along cookies + fetchOptions.credentials = args.credentials || ''; + if (fetchOptions.credentials === '') { + delete fetchOptions.credentials; + } + + // data neeeds to map to body if data is populated and this is not a GET or HEAD request + if (!['GET', 'HEAD'].includes(fetchOptions.method) && fetchOptions.data) { + fetchOptions.body = fetchOptions.data; + } + + debug && console.log("DEBUG[native](fetchOptions)", fetchOptions); + + return new Promise(function (resolve, reject) { + var returnableObject = {}; + + fetch(url, fetchOptions).then(function (response) { + debug && console.log("DEBUG[native](response)", response); + // This object is in the shape required by fhir.js lib + Object.assign(returnableObject, { + status: response.status, + headers: response.headers, + config: args, + }); + return response; + }) + .then(checkStatus) + .then(parseJSON) + .then(function (fhirObject) { + // Merge the + Object.assign(returnableObject, { + data: fhirObject, + }); + debug && console.log('DEBUG[native]: (success response)', returnableObject); // eslint-disable-line + resolve(returnableObject); + }) + .catch(function(error) { + Object.assign(returnableObject, { + error: error, + }); + debug && console.log('DEBUG[native]: rejecting fetch promise'); + reject(returnableObject); + }); + }); + }, + }; + + var buildfhir = function buildfhir(config) { + // debugger; + return mkFhir(config, adapter); + }; + buildfhir.defer = defer; + module.exports = buildfhir; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var utils = __webpack_require__(2); + var M = __webpack_require__(5); + var query = __webpack_require__(6); + var auth = __webpack_require__(7); + var transport = __webpack_require__(9); + var errors = __webpack_require__(10); + var config = __webpack_require__(11); + var bundle = __webpack_require__(12); + var pt = __webpack_require__(13); + var refs = __webpack_require__(14); + var url = __webpack_require__(15); + var decorate = __webpack_require__(16); + + var cache = {}; + + + var fhir = function(cfg, adapter){ + var Middleware = M.Middleware; + var $$Attr = M.$$Attr; + + var $$Method = function(m){ return $$Attr('method', m);}; + var $$Header = function(h,v) {return $$Attr('headers.' + h, v);}; + + var $Errors = Middleware(errors); + var Defaults = Middleware(config(cfg, adapter)) + .and($Errors) + .and(auth.$Basic) + .and(auth.$Bearer) + .and(auth.$Credentials) + .and(transport.$JsonData) + .and($$Header('Accept', (cfg.headers && cfg.headers['Accept']) ? cfg.headers['Accept'] : 'application/json')) + .and($$Header('Content-Type', (cfg.headers && cfg.headers['Content-Type']) ? cfg.headers['Content-Type'] : 'application/json')); + + var GET = Defaults.and($$Method('GET')); + var POST = Defaults.and($$Method('POST')); + var PUT = Defaults.and($$Method('PUT')); + var DELETE = Defaults.and($$Method('DELETE')); + var PATCH = Defaults.and($$Method('PATCH')); + + var http = transport.Http(cfg, adapter); + + var Path = url.Path; + var BaseUrl = Path(cfg.baseUrl); + var resourceTypePath = BaseUrl.slash(":type || :resource.resourceType"); + var searchPath = resourceTypePath; + var resourceTypeHxPath = resourceTypePath.slash("_history"); + var resourcePath = resourceTypePath.slash(":id || :resource.id"); + var resourceHxPath = resourcePath.slash("_history"); + var vreadPath = resourceHxPath.slash(":versionId || :resource.meta.versionId"); + var resourceVersionPath = resourceHxPath.slash(":versionId || :resource.meta.versionId"); + + var ReturnHeader = $$Header('Prefer', 'return=representation'); + + var $Paging = Middleware(query.$Paging); + + return decorate({ + conformance: GET.and(BaseUrl.slash("metadata")).end(http), + document: POST.and(BaseUrl.slash("Document")).end(http), + profile: GET.and(BaseUrl.slash("Profile").slash(":type")).end(http), + transaction: POST.and(BaseUrl).end(http), + history: GET.and(BaseUrl.slash("_history")).and($Paging).end(http), + typeHistory: GET.and(resourceTypeHxPath).and($Paging).end(http), + resourceHistory: GET.and(resourceHxPath).and($Paging).end(http), + read: GET.and(pt.$WithPatient).and(resourcePath).end(http), + vread: GET.and(vreadPath).end(http), + "delete": DELETE.and(resourcePath).and(ReturnHeader).end(http), + create: POST.and(resourceTypePath).and(ReturnHeader).end(http), + validate: POST.and(resourceTypePath.slash("_validate")).end(http), + search: GET.and(resourceTypePath).and(pt.$WithPatient).and(query.$SearchParams).and($Paging).end(http), + update: PUT.and(resourcePath).and(ReturnHeader).end(http), + nextPage: GET.and(bundle.$$BundleLinkUrl("next")).end(http), + // For previous page, bundle.link.relation can either have 'previous' or 'prev' values + prevPage: GET.and(bundle.$$BundleLinkUrl("previous")).and(bundle.$$BundleLinkUrl("prev")).end(http), + getBundleByUrl: GET.and(Path(":url")).end(http), + resolve: GET.and(refs.resolve).end(http), + patch: PATCH.and(resourcePath).and($$Header('Content-Type', 'application/json-patch+json')).end(http) + }, adapter); + }; + module.exports = fhir; + }).call(this); + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var merge = __webpack_require__(3); + + var RTRIM = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + + var trim = function(text) { + return text ? text.toString().replace(RTRIM, "") : ""; + }; + + exports.trim = trim; + + var addKey = function(acc, str) { + var pair, val; + if (!str) { + return null; + } + pair = str.split("=").map(trim); + val = pair[1].replace(/(^"|"$)/g, ''); + if (val) { + acc[pair[0]] = val; + } + return acc; + }; + + var type = function(obj) { + var classToType; + if (obj == null && obj === undefined) { + return String(obj); + } + classToType = { + '[object Boolean]': 'boolean', + '[object Number]': 'number', + '[object String]': 'string', + '[object Function]': 'function', + '[object Array]': 'array', + '[object Date]': 'date', + '[object RegExp]': 'regexp', + '[object Object]': 'object' + }; + return classToType[Object.prototype.toString.call(obj)]; + }; + + exports.type = type; + + var assertArray = function(a) { + if (type(a) !== 'array') { + throw 'not array'; + } + return a; + }; + + exports.assertArray = assertArray; + + var assertObject = function(a) { + if (type(a) !== 'object') { + throw 'not object'; + } + return a; + }; + + exports.assertObject = assertObject; + + var reduceMap = function(m, fn, acc) { + var k, v; + acc || (acc = []); + assertObject(m); + return ((function() { + var results; + results = []; + for (k in m) { + v = m[k]; + results.push([k, v]); + } + return results; + })()).reduce(fn, acc); + }; + + exports.reduceMap = reduceMap; + + var identity = function(x) {return x;}; + + exports.identity = identity; + + var argsArray = function() { + return Array.prototype.slice.call(arguments) + }; + + exports.argsArray = argsArray; + + var mergeLists = function() { + var reduce; + reduce = function(merged, nextMap) { + var k, ret, v; + ret = merge(true, merged); + for (k in nextMap) { + v = nextMap[k]; + ret[k] = (ret[k] || []).concat(v); + } + return ret; + }; + return argsArray.apply(null, arguments).reduce(reduce, {}); + }; + + exports.mergeLists = mergeLists; + + var absoluteUrl = function(baseUrl, ref) { + if (!ref.match(/https?:\/\/./)) { + return baseUrl + "/" + ref; + } else { + return ref; + } + }; + + exports.absoluteUrl = absoluteUrl; + + var relativeUrl = function(baseUrl, ref) { + if (ref.slice(ref, baseUrl.length + 1) === baseUrl + "/") { + return ref.slice(baseUrl.length + 1); + } else { + return ref; + } + }; + + exports.relativeUrl = relativeUrl; + + exports.resourceIdToUrl = function(id, baseUrl, type) { + baseUrl = baseUrl.replace(/\/$/, ''); + id = id.replace(/^\//, ''); + if (id.indexOf('/') < 0) { + return baseUrl + "/" + type + "/" + id; + } else if (id.indexOf(baseUrl) !== 0) { + return baseUrl + "/" + id; + } else { + return id; + } + }; + + var walk = function(inner, outer, data, context) { + var keysToMap, remapped; + switch (type(data)) { + case 'array': + return outer(data.map(function(item) { + return inner(item, [data, context]); + }), context); + case 'object': + keysToMap = function(acc, arg) { + var k, v; + k = arg[0], v = arg[1]; + acc[k] = inner(v, [data].concat(context)); + return acc; + }; + remapped = reduceMap(data, keysToMap, {}); + return outer(remapped, context); + default: + return outer(data, context); + } + }; + + exports.walk = walk; + + var postwalk = function(f, data, context) { + if (!data) { + return function(data, context) { + return postwalk(f, data, context); + }; + } else { + return walk(postwalk(f), f, data, context); + } + }; + + exports.postwalk = postwalk; + + }).call(this); + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(module) {/*! + * @name JavaScript/NodeJS Merge v1.2.1 + * @author yeikos + * @repository https://github.com/yeikos/js.merge + + * Copyright 2014 yeikos - MIT license + * https://raw.github.com/yeikos/js.merge/master/LICENSE + */ + + ;(function(isNode) { + + /** + * Merge one or more objects + * @param bool? clone + * @param mixed,... arguments + * @return object + */ + + var Public = function(clone) { + + return merge(clone === true, false, arguments); + + }, publicName = 'merge'; + + /** + * Merge two or more objects recursively + * @param bool? clone + * @param mixed,... arguments + * @return object + */ + + Public.recursive = function(clone) { + + return merge(clone === true, true, arguments); + + }; + + /** + * Clone the input removing any reference + * @param mixed input + * @return mixed + */ + + Public.clone = function(input) { + + var output = input, + type = typeOf(input), + index, size; + + if (type === 'array') { + + output = []; + size = input.length; + + for (index=0;index -1 ){ + return credentials; + } + })); + + }).call(this); + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + + ;(function () { + + var object = true ? exports : this; // #8: web workers + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + + function InvalidCharacterError(message) { + this.message = message; + } + InvalidCharacterError.prototype = new Error; + InvalidCharacterError.prototype.name = 'InvalidCharacterError'; + + // encoder + // [https://gist.github.com/999166] by [https://github.com/nignag] + object.btoa || ( + object.btoa = function (input) { + var str = String(input); + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars, output = ''; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); + } + block = block << 8 | charCode; + } + return output; + }); + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + object.atob || ( + object.atob = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); + } + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + }); + + }()); + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var utils = __webpack_require__(2); + + exports.Http = function(cfg, adapter){ + return function(args){ + if(args.debug){ + console.log("\nDEBUG (request):", args.method, args.url, args); + } + var promise = (args.http || adapter.http || cfg.http)(args); + if (args.debug && promise && promise.then){ + promise.then(function(x){ console.log("\nDEBUG: (responce)", x);}); + } + return promise; + }; + }; + + var toJson = function(x){ + return (utils.type(x) == 'object' || utils.type(x) == 'array') ? JSON.stringify(x) : x; + }; + + exports.$JsonData = function(h){ + return function(args){ + var data = args.bundle || args.data || args.resource; + if(data){ + args.data = toJson(data); + } + return h(args); + }; + }; + + }).call(this); + + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + + module.exports = function(h){ + return function(args){ + try{ + return h(args); + }catch(e){ + if(args.debug){ + console.log("\nDEBUG: (ERROR in middleware)"); + console.log(e.message); + console.log(e.stack); + } + if(!args.defer) { + console.log("\nDEBUG: (ERROR in middleware)"); + console.log(e.message); + console.log(e.stack); + throw new Error("I need adapter.defer"); + } + var deff = args.defer(); + deff.reject(e); + return deff.promise; + } + }; + }; + + +/***/ }), +/* 11 */ +/***/ (function(module, exports) { + + (function() { + var copyAttr = function(from, to, attr){ + var v = from[attr]; + if(v && !to[attr]) {to[attr] = v;} + return from; + }; + + module.exports = function(cfg, adapter){ + return function(h){ + return function(args){ + copyAttr(cfg, args, 'baseUrl'); + copyAttr(cfg, args, 'cache'); + copyAttr(cfg, args, 'auth'); + copyAttr(cfg, args, 'patient'); + copyAttr(cfg, args, 'debug'); + copyAttr(cfg, args, 'credentials'); + copyAttr(cfg, args, 'headers'); + copyAttr(cfg, args, 'agentOptions'); + copyAttr(adapter, args, 'defer'); + copyAttr(adapter, args, 'http'); + return h(args); + }; + }; + }; + }).call(this); + + +/***/ }), +/* 12 */ +/***/ (function(module, exports) { + + exports.$$BundleLinkUrl = function(rel){ + return function(h) { + return function(args){ + var matched = function(x){return x.relation && x.relation === rel;}; + var res = args.bundle && (args.bundle.link || []).filter(matched)[0]; + if(res && res.url){ + args.url = res.url; + args.data = null; + } + return h(args); + }; + }; + }; + + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var mw = __webpack_require__(5); + + // List of resources with 'patient' or 'subject' properties (as of FHIR DSTU2 1.0.0) + var targets = [ + "Account", + "AllergyIntolerance", + "BodySite", + "CarePlan", + "Claim", + "ClinicalImpression", + "Communication", + "CommunicationRequest", + "Composition", + "Condition", + "Contract", + "DetectedIssue", + "Device", + "DeviceUseRequest", + "DeviceUseStatement", + "DiagnosticOrder", + "DiagnosticReport", + "DocumentManifest", + "DocumentReference", + "Encounter", + "EnrollmentRequest", + "EpisodeOfCare", + "FamilyMemberHistory", + "Flag", + "Goal", + "ImagingObjectSelection", + "ImagingStudy", + "Immunization", + "ImmunizationRecommendation", + "List", + "Media", + "MedicationAdministration", + "MedicationDispense", + "MedicationOrder", + "MedicationStatement", + "NutritionOrder", + "Observation", + "Order", + "Procedure", + "ProcedureRequest", + "QuestionnaireResponse", + "ReferralRequest", + "RelatedPerson", + "RiskAssessment", + "Specimen", + "SupplyDelivery", + "SupplyRequest", + "VisionPrescription" + ]; + + exports.$WithPatient = mw.$$Simple(function(args){ + var type = args.type; + if (args.patient) { + if (type === "Patient") { + args.query = args.query || {}; + args.query["_id"] = args.patient; + args["id"] = args.patient; + } else if (targets.indexOf(type) >= 0){ + args.query = args.query || {}; + args.query["patient"] = args.patient; + } + } + return args; + }); + }).call(this); + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var utils = __webpack_require__(2); + + var CONTAINED = /^#(.*)/; + var resolveContained = function(ref, resource) { + var cid = ref.match(CONTAINED)[1]; + var ret = (resource.contained || []).filter(function(r){ + return (r.id || r._id) == cid; + })[0]; + return (ret && {content: ret}) || null; + }; + + var sync = function(arg) { + var cache = arg.cache; + var reference = arg.reference; + var bundle = arg.bundle; + var ref = reference; + if (!ref.reference) {return null;} + if (ref.reference.match(CONTAINED)) {return resolveContained(ref.reference, arg.resource);} + var abs = utils.absoluteUrl(arg.baseUrl, ref.reference); + var bundled = ((bundle && bundle.entry) || []).filter( function(e){ + return e.id === abs; + })[0]; + return bundled || (cache != null ? cache[abs] : void 0) || null; + }; + + var resolve = function(h){ + return function(args) { + var cacheMatched = sync(args); + var ref = args.reference; + var def = args.defer(); + if (cacheMatched) { + if(!args.defer){ throw new Error("I need promise constructor 'adapter.defer' in adapter"); } + def.resolve(cacheMatched); + return def.promise; + } + if (!ref) { + throw new Error("No reference found"); + } + if (ref && ref.reference.match(CONTAINED)) { + throw new Error("Contained resource not found"); + } + args.url = utils.absoluteUrl(args.baseUrl, ref.reference); + args.data = null; + return h(args); + }; + }; + + module.exports.sync = sync; + module.exports.resolve = resolve; + + }).call(this); + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var utils = __webpack_require__(2); + var core = __webpack_require__(5); + + var id = function(x){return x;}; + var constantly = function(x){return function(){return x;};}; + + var get_in = function(obj, path){ + return path.split('.').reduce(function(acc,x){ + if(acc == null || acc == undefined) { return null; } + return acc[x]; + }, obj); + }; + + var evalPropsExpr = function(exp, args){ + var exps = exp.split('||').map(function(x){return x.trim().substring(1);}); + for(var i = 0; i < exps.length; i++){ + var res = get_in(args, exps[i]); + if(res){ return res; } + } + return null; + }; + + var evalExpr = function(exp, args){ + if (exp.indexOf(":") == 0){ + return evalPropsExpr(exp, args); + } else { + return exp; + } + }; + + var buildPathPart = function(pth, args){ + var k = evalExpr(pth.trim(), args); + if(k==null || k === undefined){ throw new Error("Parameter "+pth+" is required: " + JSON.stringify(args)); } + return k; + }; + + // path chaining function + // which return haldler wrapper: (h, cfg)->(args -> promise) + // it's chainable Path("baseUrl").slash(":type").slash(":id").slash("_history")(id, {})({id: 5, type: 'Patient'}) + // and composable p0 = Path("baseUrl); p1 = p0.slash("path) + var Path = function(tkn, chain){ + //Chainable + var new_chain = function(args){ + return ((chain && (chain(args) + "/")) || "") + buildPathPart(tkn, args); + }; + var ch = core.Attribute('url', new_chain); + ch.slash = function(tkn){ + return Path(tkn, new_chain); + }; + return ch; + }; + + exports.Path = Path; + }).call(this); + + +/***/ }), +/* 16 */ +/***/ (function(module, exports) { + + (function() { + var fhirAPI; + var adapter; + + function getNext (bundle, process) { + var i; + var d = bundle.data.entry || []; + var entries = []; + for (i = 0; i < d.length; i++) { + entries.push(d[i].resource); + } + process(entries); + var def = adapter.defer(); + fhirAPI.nextPage({bundle:bundle.data}).then(function (r) { + getNext(r, process).then(function (t) { + def.resolve(); + }); + }, function(err) {def.resolve()}); + return def.promise; + } + + function drain (searchParams, process, done, fail) { + var ret = adapter.defer(); + + fhirAPI.search(searchParams).then(function(data){ + getNext(data, process).then(function() { + done(); + }, function(err) { + fail(err); + }); + }, function(err) { + fail(err); + }); + }; + + function fetchAll (searchParams){ + var ret = adapter.defer(); + var results = []; + + drain( + searchParams, + function(entries) { + entries.forEach(function(entry) { + results.push(entry); + }); + }, + function () { + ret.resolve(results); + }, + function (err) { + ret.reject(err); + } + ); + + return ret.promise; + }; + + function fetchAllWithReferences (searchParams, resolveParams) { + var ret = adapter.defer(); + + fhirAPI.search(searchParams) // TODO: THIS IS NOT CORRECT (need fetchAll, but it does not return a bundle yet) + .then(function(results){ + + var resolvedReferences = {}; + + var queue = [function() {ret.resolve(results, resolvedReferences);}]; + + function enqueue (bundle,resource,reference) { + queue.push(function() {resolveReference(bundle,resource,reference)}); + } + + function next() { + (queue.pop())(); + } + + function resolveReference (bundle,resource,reference) { + var referenceID = reference.reference; + fhirAPI.resolve({'bundle': bundle, 'resource': resource, 'reference':reference}).then(function(res){ + var referencedObject = res.data || res.content; + resolvedReferences[referenceID] = referencedObject; + next(); + }); + } + + var bundle = results.data; + + bundle.entry && bundle.entry.forEach(function(element){ + var resource = element.resource; + var type = resource.resourceType; + resolveParams && resolveParams.forEach(function(resolveParam){ + var param = resolveParam.split('.'); + var targetType = param[0]; + var targetElement = param[1]; + var reference = resource[targetElement]; + if (type === targetType && reference) { + var referenceID = reference.reference; + if (!resolvedReferences[referenceID]) { + enqueue(bundle,resource,reference); + } + } + }); + }); + + next(); + + }, function(){ + ret.reject("Could not fetch search results"); + }); + + return ret.promise; + }; + + function decorate (client, newAdapter) { + fhirAPI = client; + adapter = newAdapter; + client["drain"] = drain; + client["fetchAll"] = fetchAll; + client["fetchAllWithReferences"] = fetchAllWithReferences; + return client; + } + + module.exports = decorate; + }).call(this); + +/***/ }) +/******/ ]) +}); +; +// $lab:coverage:on$ \ No newline at end of file diff --git a/nightwatch.conf.js b/nightwatch.conf.js new file mode 100644 index 00000000..0fa558f1 --- /dev/null +++ b/nightwatch.conf.js @@ -0,0 +1,99 @@ +// Refer to the online docs for more details: +// https://nightwatchjs.org/gettingstarted/configuration/ +// + +// _ _ _ _ _ _ _ +// | \ | |(_) | | | | | | | | +// | \| | _ __ _ | |__ | |_ __ __ __ _ | |_ ___ | |__ +// | . ` || | / _` || '_ \ | __|\ \ /\ / / / _` || __| / __|| '_ \ +// | |\ || || (_| || | | || |_ \ V V / | (_| || |_ | (__ | | | | +// \_| \_/|_| \__, ||_| |_| \__| \_/\_/ \__,_| \__| \___||_| |_| +// __/ | +// |___/ + +module.exports = { + // An array of folders (excluding subfolders) where your tests are located; + // if this is not specified, the test source must be passed as the second argument to the test runner. + src_folders: ['test/specs'], + + // See https://nightwatchjs.org/guide/concepts/page-object-model.html + // page_objects_path: ['nightwatch-examples/page-objects'], + + // See https://nightwatchjs.org/guide/extending-nightwatch/adding-custom-commands.html + // custom_commands_path: ['nightwatch-examples/custom-commands'], + + // See https://nightwatchjs.org/guide/extending-nightwatch/adding-custom-assertions.html + // custom_assertions_path: ['nightwatch-examples/custom-assertions'], + + // See https://nightwatchjs.org/guide/extending-nightwatch/adding-plugins.html + // plugins: [], + + // See https://nightwatchjs.org/guide/concepts/test-globals.html + globals_path: '', + + webdriver: {}, + + test_settings: { + default: { + disable_error_log: false, + launch_url: 'http://localhost', + + screenshots: { + enabled: false, + path: 'screens', + on_failure: true + }, + + desiredCapabilities: { + browserName: 'chrome' + }, + + webdriver: { + start_process: true, + server_path: '' + }, + + test_runner: { + // set mocha as the runner + // For more info on using Mocha with Nightwatch, visit: + // https://nightwatchjs.org/guide/writing-tests/using-mocha.html + type: 'mocha', + + // define mocha specific options + options : { + ui: 'bdd', + reporter: 'spec' + } + } + }, + + chrome: { + desiredCapabilities: { + browserName: 'chrome', + 'goog:chromeOptions': { + // More info on Chromedriver: https://sites.google.com/a/chromium.org/chromedriver/ + // + // w3c:false tells Chromedriver to run using the legacy JSONWire protocol (not required in Chrome 78) + w3c: true, + args: [ + //'--no-sandbox', + '--ignore-certificate-errors', + '--allow-insecure-localhost', + '--disable-gpu', + '--disable-dev-shm-usage', + '--headless' + ] + } + }, + + webdriver: { + start_process: true, + server_path: '', + cli_args: [ + // --verbose + ] + } + }, + + } +}; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json deleted file mode 100644 index 79f9d784..00000000 --- a/npm-shrinkwrap.json +++ /dev/null @@ -1,670 +0,0 @@ -{ - "name": "fhir-js-client", - "version": "0.0.1", - "dependencies": { - "btoa": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz" - }, - "browserify": { - "version": "3.46.1", - "from": "browserify@3.46.1", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-3.46.1.tgz", - "dependencies": { - "JSONStream": { - "version": "0.7.4", - "from": "JSONStream@~0.7.1", - "dependencies": { - "jsonparse": { - "version": "0.0.5", - "from": "jsonparse@0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz" - }, - "through": { - "version": "2.3.4", - "from": "through@>=2.2.7 <3" - } - } - }, - "assert": { - "version": "1.1.1", - "from": "assert@~1.1.0", - "dependencies": { - "util": { - "version": "0.10.2", - "from": "util@0.10.2", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.2.tgz" - } - } - }, - "browser-pack": { - "version": "2.0.1", - "from": "browser-pack@~2.0.0", - "dependencies": { - "JSONStream": { - "version": "0.6.4", - "from": "JSONStream@~0.6.4", - "dependencies": { - "jsonparse": { - "version": "0.0.5", - "from": "jsonparse@0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz" - }, - "through": { - "version": "2.2.7", - "from": "through@~2.2.7" - } - } - }, - "through": { - "version": "2.3.4", - "from": "through@~2.3.4" - }, - "combine-source-map": { - "version": "0.3.0", - "from": "combine-source-map@~0.3.0", - "dependencies": { - "inline-source-map": { - "version": "0.3.0", - "from": "inline-source-map@~0.3.0" - }, - "convert-source-map": { - "version": "0.3.4", - "from": "convert-source-map@~0.3.0" - }, - "source-map": { - "version": "0.1.33", - "from": "source-map@~0.1.31", - "dependencies": { - "amdefine": { - "version": "0.1.0", - "from": "amdefine@>=0.0.4" - } - } - } - } - } - } - }, - "browser-resolve": { - "version": "1.2.4", - "from": "browser-resolve@~1.2.1" - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "browserify-zlib@~0.1.2", - "dependencies": { - "pako": { - "version": "0.2.3", - "from": "pako@~0.2.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.3.tgz" - } - } - }, - "buffer": { - "version": "2.1.13", - "from": "buffer@~2.1.4", - "dependencies": { - "base64-js": { - "version": "0.0.7", - "from": "base64-js@~0.0.4" - }, - "ieee754": { - "version": "1.1.3", - "from": "ieee754@~1.1.1" - } - } - }, - "builtins": { - "version": "0.0.4", - "from": "builtins@~0.0.3" - }, - "commondir": { - "version": "0.0.1", - "from": "commondir@0.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz" - }, - "concat-stream": { - "version": "1.4.6", - "from": "concat-stream@~1.4.1", - "dependencies": { - "typedarray": { - "version": "0.0.6", - "from": "typedarray@~0.0.5" - }, - "readable-stream": { - "version": "1.1.13-1", - "from": "readable-stream@~1.1.9", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1" - }, - "string_decoder": { - "version": "0.10.25-1", - "from": "string_decoder@~0.10.x" - } - } - } - } - }, - "console-browserify": { - "version": "1.0.3", - "from": "console-browserify@~1.0.1" - }, - "constants-browserify": { - "version": "0.0.1", - "from": "constants-browserify@~0.0.1" - }, - "crypto-browserify": { - "version": "1.0.9", - "from": "crypto-browserify@~1.0.9" - }, - "deep-equal": { - "version": "0.1.2", - "from": "deep-equal@~0.1.0" - }, - "defined": { - "version": "0.0.0", - "from": "defined@~0.0.0" - }, - "deps-sort": { - "version": "0.1.2", - "from": "deps-sort@~0.1.1", - "dependencies": { - "through": { - "version": "2.3.4", - "from": "through@~2.3.4" - }, - "JSONStream": { - "version": "0.6.4", - "from": "JSONStream@~0.6.4", - "dependencies": { - "jsonparse": { - "version": "0.0.5", - "from": "jsonparse@0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz" - }, - "through": { - "version": "2.2.7", - "from": "through@~2.2.7" - } - } - }, - "minimist": { - "version": "0.0.10", - "from": "minimist@~0.0.1" - } - } - }, - "derequire": { - "version": "0.8.0", - "from": "derequire@~0.8.0", - "dependencies": { - "estraverse": { - "version": "1.5.0", - "from": "estraverse@~1.5.0" - }, - "esrefactor": { - "version": "0.1.0", - "from": "esrefactor@~0.1.0", - "dependencies": { - "esprima": { - "version": "1.0.4", - "from": "esprima@~1.0.4" - }, - "estraverse": { - "version": "0.0.4", - "from": "estraverse@~0.0.4" - }, - "escope": { - "version": "0.0.16", - "from": "escope@~0.0.13" - } - } - }, - "esprima-fb": { - "version": "3001.1.0-dev-harmony-fb", - "from": "esprima-fb@^3001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz" - } - } - }, - "domain-browser": { - "version": "1.1.2", - "from": "domain-browser@~1.1.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.2.tgz" - }, - "duplexer": { - "version": "0.1.1", - "from": "duplexer@~0.1.1" - }, - "events": { - "version": "1.0.1", - "from": "events@~1.0.0" - }, - "glob": { - "version": "3.2.11", - "from": "glob@~3.2.8", - "dependencies": { - "minimatch": { - "version": "0.3.0", - "from": "minimatch@0.3", - "dependencies": { - "lru-cache": { - "version": "2.5.0", - "from": "lru-cache@2" - }, - "sigmund": { - "version": "1.0.0", - "from": "sigmund@~1.0.0" - } - } - } - } - }, - "http-browserify": { - "version": "1.3.2", - "from": "http-browserify@~1.3.1", - "dependencies": { - "Base64": { - "version": "0.2.1", - "from": "Base64@~0.2.0" - } - } - }, - "https-browserify": { - "version": "0.0.0", - "from": "https-browserify@~0.0.0" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@~2.0.1" - }, - "insert-module-globals": { - "version": "6.0.0", - "from": "insert-module-globals@~6.0.0", - "dependencies": { - "lexical-scope": { - "version": "1.1.0", - "from": "lexical-scope@~1.1.0", - "dependencies": { - "astw": { - "version": "1.1.0", - "from": "astw@~1.1.0", - "dependencies": { - "esprima-fb": { - "version": "3001.1.0-dev-harmony-fb", - "from": "esprima-fb@^3001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz" - } - } - } - } - }, - "process": { - "version": "0.6.0", - "from": "process@~0.6.0" - }, - "through": { - "version": "2.3.4", - "from": "through@~2.3.4" - } - } - }, - "module-deps": { - "version": "2.0.6", - "from": "module-deps@~2.0.0", - "dependencies": { - "detective": { - "version": "3.1.0", - "from": "detective@~3.1.0", - "dependencies": { - "escodegen": { - "version": "1.1.0", - "from": "escodegen@~1.1.0", - "dependencies": { - "esprima": { - "version": "1.0.4", - "from": "esprima@~1.0.4" - }, - "estraverse": { - "version": "1.5.0", - "from": "estraverse@~1.5.0" - }, - "esutils": { - "version": "1.0.0", - "from": "esutils@~1.0.0" - }, - "source-map": { - "version": "0.1.33", - "from": "source-map@~0.1.30", - "dependencies": { - "amdefine": { - "version": "0.1.0", - "from": "amdefine@>=0.0.4" - } - } - } - } - }, - "esprima-fb": { - "version": "3001.1.0-dev-harmony-fb", - "from": "esprima-fb@^3001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz" - } - } - }, - "duplexer2": { - "version": "0.0.2", - "from": "duplexer2@0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "dependencies": { - "readable-stream": { - "version": "1.1.13-1", - "from": "readable-stream@~1.1.9", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1" - }, - "string_decoder": { - "version": "0.10.25-1", - "from": "string_decoder@~0.10.x" - } - } - } - } - }, - "minimist": { - "version": "0.0.10", - "from": "minimist@~0.0.9" - }, - "stream-combiner": { - "version": "0.1.0", - "from": "stream-combiner@~0.1.0", - "dependencies": { - "through": { - "version": "2.3.4", - "from": "through@~2.3.4" - } - } - }, - "readable-stream": { - "version": "1.0.27-1", - "from": "readable-stream@^1.0.27-1", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1" - }, - "string_decoder": { - "version": "0.10.25-1", - "from": "string_decoder@~0.10.x" - } - } - } - } - }, - "os-browserify": { - "version": "0.1.2", - "from": "os-browserify@~0.1.1" - }, - "parents": { - "version": "0.0.2", - "from": "parents@~0.0.1" - }, - "path-browserify": { - "version": "0.0.0", - "from": "path-browserify@~0.0.0" - }, - "punycode": { - "version": "1.2.4", - "from": "punycode@>=0.2.0" - }, - "querystring-es3": { - "version": "0.2.0", - "from": "querystring-es3@0.2.0", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.0.tgz" - }, - "resolve": { - "version": "0.6.3", - "from": "resolve@~0.6.1" - }, - "shallow-copy": { - "version": "0.0.1", - "from": "shallow-copy@0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz" - }, - "shell-quote": { - "version": "0.0.1", - "from": "shell-quote@~0.0.1" - }, - "stream-browserify": { - "version": "0.1.3", - "from": "stream-browserify@~0.1.0", - "dependencies": { - "process": { - "version": "0.5.2", - "from": "process@~0.5.1" - } - } - }, - "stream-combiner": { - "version": "0.0.4", - "from": "stream-combiner@~0.0.2" - }, - "string_decoder": { - "version": "0.0.1", - "from": "string_decoder@~0.0.0" - }, - "subarg": { - "version": "0.0.1", - "from": "subarg@0.0.1", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-0.0.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.10", - "from": "minimist@~0.0.7" - } - } - }, - "syntax-error": { - "version": "1.1.0", - "from": "syntax-error@~1.1.0", - "dependencies": { - "esprima-fb": { - "version": "3001.1.0-dev-harmony-fb", - "from": "esprima-fb@^3001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz" - } - } - }, - "through2": { - "version": "0.4.2", - "from": "through2@~0.4.0", - "dependencies": { - "readable-stream": { - "version": "1.0.27-1", - "from": "readable-stream@~1.0.17", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1" - }, - "string_decoder": { - "version": "0.10.25-1", - "from": "string_decoder@~0.10.x" - } - } - }, - "xtend": { - "version": "2.1.2", - "from": "xtend@~2.1.1", - "dependencies": { - "object-keys": { - "version": "0.4.0", - "from": "object-keys@~0.4.0" - } - } - } - } - }, - "timers-browserify": { - "version": "1.0.1", - "from": "timers-browserify@~1.0.1", - "dependencies": { - "process": { - "version": "0.5.2", - "from": "process@~0.5.1" - } - } - }, - "tty-browserify": { - "version": "0.0.0", - "from": "tty-browserify@~0.0.0" - }, - "umd": { - "version": "2.0.0", - "from": "umd@~2.0.0", - "dependencies": { - "rfile": { - "version": "1.0.0", - "from": "rfile@~1.0.0", - "dependencies": { - "callsite": { - "version": "1.0.0", - "from": "callsite@~1.0.0" - }, - "resolve": { - "version": "0.3.1", - "from": "resolve@~0.3.0" - } - } - }, - "ruglify": { - "version": "1.0.0", - "from": "ruglify@~1.0.0", - "dependencies": { - "uglify-js": { - "version": "2.2.5", - "from": "uglify-js@~2.2", - "dependencies": { - "source-map": { - "version": "0.1.33", - "from": "source-map@~0.1.7", - "dependencies": { - "amdefine": { - "version": "0.1.0", - "from": "amdefine@>=0.0.4" - } - } - }, - "optimist": { - "version": "0.3.7", - "from": "optimist@~0.3.5", - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@~0.0.2" - } - } - } - } - } - } - }, - "through": { - "version": "2.3.4", - "from": "through@~2.3.4" - }, - "uglify-js": { - "version": "2.4.13", - "from": "uglify-js@~2.4.0", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@~0.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.33", - "from": "source-map@~0.1.33", - "dependencies": { - "amdefine": { - "version": "0.1.0", - "from": "amdefine@>=0.0.4" - } - } - }, - "optimist": { - "version": "0.3.7", - "from": "optimist@~0.3.5", - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@~0.0.2" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "uglify-to-browserify@~1.0.0" - } - } - } - } - }, - "url": { - "version": "0.10.1", - "from": "url@~0.10.1" - }, - "util": { - "version": "0.10.3", - "from": "util@~0.10.1" - }, - "vm-browserify": { - "version": "0.0.4", - "from": "vm-browserify@~0.0.1", - "dependencies": { - "indexof": { - "version": "0.0.1", - "from": "indexof@0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } - }, - "xtend": { - "version": "3.0.0", - "from": "xtend@^3.0.0" - }, - "process": { - "version": "0.7.0", - "from": "process@^0.7.0" - } - } - }, - "jquery": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz" - } - } -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..ea025686 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,40056 @@ +{ + "name": "fhirclient", + "version": "2.5.3", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "fhirclient", + "version": "2.5.3", + "license": "Apache-2.0", + "dependencies": { + "abortcontroller-polyfill": "^1.5.0", + "core-js": "^3.23.4", + "cross-fetch": "^3.0.5", + "debug": "^4.1.1", + "isomorphic-webcrypto": "^2.3.8", + "jose": "^4.15.5", + "js-base64": "^3.7.2" + }, + "devDependencies": { + "@babel/cli": "^7.18.6", + "@babel/core": "^7.18.6", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@hapi/code": "^9.0.3", + "@hapi/lab": "^25.3.1", + "@types/chai": "^4.3.18", + "@types/chai-as-promised": "^7.1.5", + "@types/debug": "^4.1.5", + "@types/express": "^4.17.21", + "@types/hapi": "^18.0.3", + "@types/jsonwebtoken": "^9.0.6", + "@types/mocha": "^9.1.1", + "@types/nightwatch": "^2.3.0", + "@types/node": "^18.19.45", + "babel-loader": "^9.1.3", + "chai": "^4.5.0", + "chai-as-promised": "^7.1.1", + "chromedriver": "^127.0.3", + "cors": "^2.8.5", + "express": "^4.19.2", + "jsdom": "^25.0.0", + "jsonwebtoken": "^9.0.2", + "nightwatch": "^2.3.0", + "nyc": "^17.0.0", + "ts-loader": "^9.5.1", + "typedoc": "^0.22.13", + "typescript": "^4.6.0", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-cli": "^4.10.0", + "webpack-merge": "^5.10.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "devOptional": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/cli": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.8.tgz", + "integrity": "sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "commander": "^6.2.0", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "devOptional": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "devOptional": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz", + "integrity": "sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "devOptional": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "devOptional": true, + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "devOptional": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "devOptional": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "devOptional": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "devOptional": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "devOptional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.25.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz", + "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz", + "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "devOptional": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "devOptional": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "devOptional": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz", + "integrity": "sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "devOptional": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", + "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "optional": true, + "peer": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "optional": true, + "peer": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/register/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/register/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "optional": true, + "peer": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "devOptional": true + }, + "node_modules/@babel/runtime": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", + "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", + "devOptional": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@expo/bunyan": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz", + "integrity": "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==", + "optional": true, + "peer": true, + "dependencies": { + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@expo/cli": { + "version": "0.18.29", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.18.29.tgz", + "integrity": "sha512-X810C48Ss+67RdZU39YEO1khNYo1RmjouRV+vVe0QhMoTe8R6OA3t+XYEdwaNbJ5p/DJN7szfHfNmX2glpC7xg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.8", + "@expo/devcert": "^1.0.0", + "@expo/env": "~0.3.0", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@expo/metro-config": "0.18.11", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "^1.5.0", + "@expo/plist": "^0.1.0", + "@expo/prebuild-config": "7.0.8", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "^1.7.2", + "@expo/xcpretty": "^4.3.0", + "@react-native/dev-middleware": "0.74.85", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.0.7", + "bplist-parser": "^0.3.1", + "cacache": "^18.0.2", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "connect": "^3.7.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "fast-glob": "^3.3.2", + "find-yarn-workspace-root": "~2.0.0", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "glob": "^7.1.7", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", + "internal-ip": "4.3.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "lodash.debounce": "^4.0.8", + "md5hex": "^1.0.0", + "minimatch": "^3.0.4", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "open": "^8.3.0", + "ora": "3.4.0", + "picomatch": "^3.0.1", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve": "^1.22.2", + "resolve-from": "^5.0.0", + "resolve.exports": "^2.0.2", + "semver": "^7.6.0", + "send": "^0.18.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "temp-dir": "^2.0.0", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "bin": { + "expo-internal": "build/bin/cli" + } + }, + "node_modules/@expo/cli/node_modules/@expo/prebuild-config": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.8.tgz", + "integrity": "sha512-wH9NVg6HiwF5y9x0TxiMEeBF+ITPGDXy5/i6OUheSrKpPgb0lF1Mwzl/f2fLPXBEpl+ZXOQ8LlLW32b7K9lrNg==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@react-native/normalize-colors": "0.74.85", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" + } + }, + "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/@react-native/normalize-colors": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz", + "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==", + "optional": true, + "peer": true + }, + "node_modules/@expo/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@expo/cli/node_modules/expo-modules-autolinking": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.2.tgz", + "integrity": "sha512-fdcaNO8ucHA3yLNY52ZUENBcAG7KEx8QyMmnVNavO1JVBGRMZG8JyVcbrhYQDtVtpxkbai5YzwvLutINvbDZDQ==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/@expo/cli/node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "optional": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@expo/cli/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/cli/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@expo/cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "optional": true, + "peer": true, + "dependencies": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/@expo/config": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.3.tgz", + "integrity": "sha512-eOTNM8eOC8gZNHgenySRlc/lwmYY1NOgvjwA8LHuvPT7/eUwD93zrxu3lPD1Cc/P6C/2BcVdfH4hf0tLmDxnsg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/json-file": "^8.3.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.34.0" + } + }, + "node_modules/@expo/config-plugins": { + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.8.tgz", + "integrity": "sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config-types": "^51.0.0-unreleased", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/config-plugins/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "optional": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-plugins/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-types": { + "version": "51.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.2.tgz", + "integrity": "sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==", + "optional": true, + "peer": true + }, + "node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/config/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "optional": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/devcert": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.4.tgz", + "integrity": "sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==", + "optional": true, + "peer": true, + "dependencies": { + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^10.4.2", + "lodash": "^4.17.21", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^2.4.0" + } + }, + "node_modules/@expo/devcert/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devcert/node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/devcert/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "optional": true, + "peer": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/devcert/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "optional": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/devcert/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/env": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.3.0.tgz", + "integrity": "sha512-OtB9XVHWaXidLbHvrVDeeXa09yvTl3+IQN884sO6PhIi2/StXfgSH/9zC7IvzrDB8kW3EBJ1PPLuCUJ2hxAT7Q==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^1.0.0" + } + }, + "node_modules/@expo/env/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/env/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/env/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/env/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/env/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz", + "integrity": "sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "tempy": "0.3.0" + } + }, + "node_modules/@expo/image-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/image-utils/node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/image-utils/node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "optional": true, + "peer": true, + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/image-utils/node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "optional": true, + "peer": true, + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/json-file": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/metro-config": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.18.11.tgz", + "integrity": "sha512-/uOq55VbSf9yMbUO1BudkUM2SsGW1c5hr9BnhIqYqcsFv0Jp5D3DtJ4rljDKaUeNLbwr6m7pqIrkSMq5NrYf4Q==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "@expo/config": "~9.0.0-beta.0", + "@expo/env": "~0.3.0", + "@expo/json-file": "~8.3.0", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "fs-extra": "^9.1.0", + "getenv": "^1.0.0", + "glob": "^7.2.3", + "jsc-safe-url": "^0.2.4", + "lightningcss": "~1.19.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + } + }, + "node_modules/@expo/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/metro-config/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/metro-config/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/metro-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/osascript": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.3.tgz", + "integrity": "sha512-aOEkhPzDsaAfolSswObGiYW0Pf0ROfR9J2NBRLQACdQ6uJlyAMiPF45DVEVknAU9juKh0y8ZyvC9LXqLEJYohA==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "exec-async": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.5.2.tgz", + "integrity": "sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/json-file": "^8.3.0", + "@expo/spawn-async": "^1.7.2", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "ora": "^3.4.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/package-manager/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/package-manager/node_modules/sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/package-manager/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", + "optional": true, + "peer": true, + "dependencies": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/@expo/rudder-sdk-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/bunyan": "^4.0.0", + "@segment/loosely-validate-event": "^2.0.0", + "fetch-retry": "^4.1.1", + "md5": "^2.2.1", + "node-fetch": "^2.6.1", + "remove-trailing-slash": "^0.1.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "optional": true, + "peer": true + }, + "node_modules/@expo/spawn-async": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/vector-icons": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-14.0.2.tgz", + "integrity": "sha512-70LpmXQu4xa8cMxjp1fydgRPsalefnHaXLzIwaHMEzcZhnyjw2acZz8azRrZOslPVAWlxItOa2Dd7WtD/kI+CA==", + "optional": true, + "peer": true, + "dependencies": { + "prop-types": "^15.8.1" + } + }, + "node_modules/@expo/xcpretty": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.1.tgz", + "integrity": "sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/xcpretty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true, + "peer": true + }, + "node_modules/@expo/xcpretty/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/xcpretty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@expo/xcpretty/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "optional": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "optional": true, + "peer": true, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/boom/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/bossy": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bossy/-/bossy-6.0.1.tgz", + "integrity": "sha512-FDccJWwjorRgnbYfRGAweq1QU3kQqTeGJNY0SwWssMo+L2CXRylifQ9VcYOz2yO2rtB/wtMe/Cyow2t7pcBs5g==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/bossy/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/bounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bounce/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/code": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@hapi/code/-/code-9.0.3.tgz", + "integrity": "sha512-g50b7qz861Xfnt1NWtcba1zVxlHLPDJh/4ys6pva6jMmQgbTDLgAkbORDHYbVSA7mYxZ2cHZ2n7ZeFb5j/ZhQw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/code/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/eslint-plugin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/eslint-plugin/-/eslint-plugin-6.0.0.tgz", + "integrity": "sha512-6eN1fnBO742nTTSpQtYB35aFGAT9I7r4u2v/+R2c9ToYTQp4QBoPOBA5R3+C7+Az3I0ugs+lTIqAsMPDLpsRAg==", + "dev": true, + "peerDependencies": { + "@babel/core": "^7.14.3", + "@babel/eslint-parser": "^7.14.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@babel/eslint-parser": { + "optional": true + } + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "devOptional": true + }, + "node_modules/@hapi/lab": { + "version": "25.3.1", + "resolved": "https://registry.npmjs.org/@hapi/lab/-/lab-25.3.1.tgz", + "integrity": "sha512-y5JL9O12F0voH5J2ROMcfskZVyqz9mp1oMv+TyMf67uco91Y9FJ0broYfeQYXwV78NF+W10/A+yCDYN6oV/ASA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.0", + "@hapi/bossy": "^6.0.0", + "@hapi/eslint-plugin": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "diff": "^5.0.0", + "eslint": "8.x.x", + "find-rc": "4.x.x", + "globby": "^11.1.0", + "handlebars": "4.x.x", + "mo-walk": "^1.2.0", + "seedrandom": "3.x.x", + "source-map": "0.7.x", + "source-map-support": "0.5.x", + "supports-color": "^8.1.1", + "will-call": "1.x.x" + }, + "bin": { + "lab": "bin/lab" + }, + "peerDependencies": { + "@hapi/eslint-plugin": "^6.0.0", + "typescript": ">=3.6.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@hapi/lab/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/lab/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "devOptional": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/validate/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/validate/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "optional": true, + "peer": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "optional": true, + "peer": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "optional": true, + "peer": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "devOptional": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "devOptional": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "devOptional": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "devOptional": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nightwatch/chai": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nightwatch/chai/-/chai-5.0.2.tgz", + "integrity": "sha512-yzILJFCcE75OPoRfBlJ80Y3Ky06ljsdrK4Ld92yhmM477vxO2GEguwnd+ldl7pdSYTcg1gSJ1bPPQrA+/Hrn+A==", + "dev": true, + "dependencies": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "4.0.1", + "loupe": "2.3.4", + "pathval": "1.1.1", + "type-detect": "4.0.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nightwatch/chai/node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/@nightwatch/chai/node_modules/deep-eql": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.0.1.tgz", + "integrity": "sha512-D/Oxqobjr+kxaHsgiQBZq9b6iAWdEj5W/JdJm8deNduAPc9CwXQ3BJJCuEqlrPXcy45iOMkGPZ0T81Dnz7UDCA==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nightwatch/chai/node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "deprecated": "Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/@nightwatch/chai/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nightwatch/html-reporter-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.2.1.tgz", + "integrity": "sha512-GEBeGoXVmTYPtNC4Yq34vfgxf6mlFyEagxpsfH18Qe5BvctF2rprX+wI5dKBm9p5IqHo6ZOcXHCufOeP3cjuOw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "devOptional": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "devOptional": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "devOptional": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "optional": true, + "peer": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.13.tgz", + "integrity": "sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==", + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "node_modules/@react-native-community/cli": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-14.0.0.tgz", + "integrity": "sha512-KwMKJB5jsDxqOhT8CGJ55BADDAYxlYDHv5R/ASQlEcdBEZxT0zZmnL0iiq2VqzETUy+Y/Nop+XDFgqyoQm0C2w==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-clean": "14.0.0", + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-doctor": "14.0.0", + "@react-native-community/cli-server-api": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "@react-native-community/cli-types": "14.0.0", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-14.0.0.tgz", + "integrity": "sha512-kvHthZTNur/wLLx8WL5Oh+r04zzzFAX16r8xuaLhu9qGTE6Th1JevbsIuiQb5IJqD8G/uZDKgIZ2a0/lONcbJg==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-clean/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-14.0.0.tgz", + "integrity": "sha512-2Nr8KR+dgn1z+HLxT8piguQ1SoEzgKJnOPQKE1uakxWaRFcQ4LOXgzpIAscYwDW6jmQxdNqqbg2cRUoOS7IMtQ==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "optional": true, + "peer": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native-community/cli-config/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "optional": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0.tgz", + "integrity": "sha512-JpfzILfU7eKE9+7AMCAwNJv70H4tJGVv3ZGFqSVoK1YHg5QkVEGsHtoNW8AsqZRS6Fj4os+Fmh+r+z1L36sPmg==", + "optional": true, + "peer": true, + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-14.0.0.tgz", + "integrity": "sha512-in6jylHjaPUaDzV+JtUblh8m9JYIHGjHOf6Xn57hrmE5Zwzwuueoe9rSMHF1P0mtDgRKrWPzAJVejElddfptWA==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-apple": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-doctor/node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "optional": true, + "peer": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-14.0.0.tgz", + "integrity": "sha512-nt7yVz3pGKQXnVa5MAk7zR+1n41kNKD3Hi2OgybH5tVShMBo7JQoL2ZVVH6/y/9wAwI/s7hXJgzf1OIP3sMq+Q==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "logkitty": "^0.7.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0.tgz", + "integrity": "sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "ora": "^5.4.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0.tgz", + "integrity": "sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-platform-apple": "14.0.0" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-14.0.0.tgz", + "integrity": "sha512-A0FIsj0QCcDl1rswaVlChICoNbfN+mkrKB5e1ab5tOYeZMMyCHqvU+eFvAvXjHUlIvVI+LbqCkf4IEdQ6H/2AQ==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-14.0.0.tgz", + "integrity": "sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-tools/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-14.0.0.tgz", + "integrity": "sha512-CMUevd1pOWqvmvutkUiyQT2lNmMHUzSW7NKc1xvHgg39NjbS58Eh2pMzIUP85IwbYNeocfYc3PH19vA/8LnQtg==", + "optional": true, + "peer": true, + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@react-native-community/cli/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.75.2.tgz", + "integrity": "sha512-P1dLHjpUeC0AIkDHRYcx0qLMr+p92IPWL3pmczzo6T76Qa9XzruQOYy0jittxyBK91Csn6HHQ/eit8TeXW8MVw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native/codegen": "0.74.87" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.87", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.75.2.tgz", + "integrity": "sha512-/tz0bzVja4FU0aAimzzQ7iYR43peaD6pzksArdrrGhlm8OvFYAQPOYSNeIQVMSarwnkNeg1naFKaeYf1o3++yA==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-server-api": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "@react-native/dev-middleware": "0.75.2", + "@react-native/metro-babel-transformer": "0.75.2", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "querystring": "^0.2.1", + "readline": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-debugger-ui": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0-alpha.11.tgz", + "integrity": "sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A==", + "optional": true, + "peer": true, + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-server-api": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-14.0.0-alpha.11.tgz", + "integrity": "sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native-community/cli-tools": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-14.0.0-alpha.11.tgz", + "integrity": "sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w==", + "optional": true, + "peer": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.75.2.tgz", + "integrity": "sha512-qIC6mrlG8RQOPaYLZQiJwqnPchAVGnHWcVDeQxPMPLkM/D5+PC8tuKWYOwgLcEau3RZlgz7QQNk31Qj2/OJG6Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.75.2.tgz", + "integrity": "sha512-fTC5m2uVjYp1XPaIJBFgscnQjPdGVsl96z/RfLgXDq0HBffyqbg29ttx6yTCx7lIa9Gdvf6nKQom+e+Oa4izSw==", + "optional": true, + "peer": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.75.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "ws": "^6.2.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "optional": true, + "peer": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/community-cli-plugin/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/community-cli-plugin/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz", + "integrity": "sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz", + "integrity": "sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==", + "optional": true, + "peer": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.74.85", + "@rnx-kit/chromium-edge-launcher": "^1.0.0", + "chrome-launcher": "^0.15.2", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "optional": true, + "peer": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.75.2.tgz", + "integrity": "sha512-AELeAOCZi3B2vE6SeN+mjpZjjqzqa76yfFBB3L3f3NWiu4dm/YClTGOj+5IVRRgbt8LDuRImhDoaj7ukheXr4Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.75.2.tgz", + "integrity": "sha512-AtLd3mbiE+FXK2Ru3l2NFOXDhUvzdUsCP4qspUw0haVaO/9xzV97RVD2zz0lur2f/LmZqQ2+KXyYzr7048b5iw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.2.tgz", + "integrity": "sha512-EygglCCuOub2sZ00CSIiEekCXoGL2XbOC6ssOB47M55QKvhdPG/0WBQXvmOmiN42uZgJK99Lj749v4rB0PlPIQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.75.2", + "hermes-parser": "0.22.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.2.tgz", + "integrity": "sha512-BIKVh2ZJPkzluUGgCNgpoh6NTHgX8j04FCS0Z/rTmRJ66hir/EUBl8frMFKrOy/6i4VvZEltOWB5eWfHe1AYgw==", + "optional": true, + "peer": true, + "dependencies": { + "@react-native/codegen": "0.75.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-preset": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.75.2.tgz", + "integrity": "sha512-mprpsas+WdCEMjQZnbDiAC4KKRmmLbMB+o/v4mDqKlH4Mcm7RdtP5t80MZGOVCHlceNp1uEIpXywx69DNwgbgg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.20.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.75.2", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.75.2.tgz", + "integrity": "sha512-OkWdbtO2jTkfOXfj3ibIL27rM6LoaEuApOByU2G8X+HS6v9U87uJVJlMIRWBDmnxODzazuHwNVA2/wAmSbucaw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.22.0", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.22.0.tgz", + "integrity": "sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.22.0.tgz", + "integrity": "sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==", + "optional": true, + "peer": true, + "dependencies": { + "hermes-estree": "0.22.0" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.75.2.tgz", + "integrity": "sha512-nPwWJFtsqNFS/qSG9yDOiSJ64mjG7RCP4X/HXFfyWzCM1jq49h/DYBdr+c3e7AvTKGIdy0gGT3vgaRUHZFVdUQ==", + "optional": true, + "peer": true + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.75.2.tgz", + "integrity": "sha512-pD5SVCjxc8k+JdoyQ+IlulBTEqJc3S4KUKsmv5zqbNCyETB0ZUvd4Su7bp+lLF6ALxx6KKmbGk8E3LaWEjUFFQ==", + "optional": true, + "peer": true, + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "^18.0.0", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=14.15" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "optional": true, + "peer": true, + "dependencies": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "devOptional": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "devOptional": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "devOptional": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "optional": true, + "peer": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "optional": true, + "peer": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "optional": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@testim/chrome-version": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/boom": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@types/boom/-/boom-7.3.5.tgz", + "integrity": "sha512-jBS0kU2s9W2sx+ILEyO4kxqIYLllqcUXTaVrBctvGptZ+4X3TWkkgY9+AmxdMPKrgiDDdLcfsaQCTu7bniLvgw==", + "dev": true + }, + "node_modules/@types/catbox": { + "version": "10.0.9", + "resolved": "https://registry.npmjs.org/@types/catbox/-/catbox-10.0.9.tgz", + "integrity": "sha512-4qXm1SmZurBMNFc/536+7gfbOlN43fWyoo4O0bdLqtpDK/cpuCYnEDou0Cl4naaMwuJ19rEwnuscR7tetGnTDA==", + "dev": true + }, + "node_modules/@types/chai": { + "version": "4.3.18", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.18.tgz", + "integrity": "sha512-2UfJzigyNa8kYTKn7o4hNMPphkxtu4WTJyobK3m4FBpyj7EK5xgtPcOtxLm7Dznk/Qxr0QXn+gQbkg7mCZKdfg==", + "dev": true + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz", + "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hapi": { + "version": "18.0.14", + "resolved": "https://registry.npmjs.org/@types/hapi/-/hapi-18.0.14.tgz", + "integrity": "sha512-/AlCHpOTzHOX7WYGlQAhL75Ca5gsm0S6X7mkW6RWW06e4Eot6xPm76qGXPHagVrpfs8qTKJdysJah/Uhtr8ojw==", + "dev": true, + "dependencies": { + "@types/boom": "*", + "@types/catbox": "*", + "@types/iron": "*", + "@types/mimos": "*", + "@types/node": "*", + "@types/podium": "*", + "@types/shot": "*", + "joi": "^17.3.0" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/iron": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/iron/-/iron-5.0.5.tgz", + "integrity": "sha512-ndu2RvRJ5LWsSVF0kBMJe9qnNcFcAO9eYwzr2P4FOU6m5ypRrbdiX+d8x4GNG7lIn1mKShyQf3M08CIX4wPsEA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "optional": true, + "peer": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/mime-db": { + "version": "1.43.5", + "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", + "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==", + "dev": true + }, + "node_modules/@types/mimos": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/mimos/-/mimos-3.0.6.tgz", + "integrity": "sha512-pQlYu/Q1e5F5lyu7ATW4J2cyPOfjhRHZgAepZlKBbHqqAjshteHtNLqBXgx7KV5GjXjPLXWUvbzWaGwmVFPaYA==", + "dev": true, + "dependencies": { + "@types/mime-db": "*" + } + }, + "node_modules/@types/mocha": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, + "node_modules/@types/nightwatch": { + "version": "2.3.31", + "resolved": "https://registry.npmjs.org/@types/nightwatch/-/nightwatch-2.3.31.tgz", + "integrity": "sha512-DqkgFUNhIEbO09RfsRZtFdr2cOP1TbtNDHp0RUKiVYG0mIEBQfYGBtNCH8UWEuCspMD3yhqBd+WeBdsTzQpfHQ==", + "dev": true, + "dependencies": { + "@types/chai": "*", + "@types/node": "*", + "@types/selenium-webdriver": "*", + "devtools-protocol": "^0.0.1025565" + } + }, + "node_modules/@types/node": { + "version": "18.19.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz", + "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==", + "devOptional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/podium": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/podium/-/podium-1.0.4.tgz", + "integrity": "sha512-HuG5/hRHs9PxuXXlNFXPy7mHMnBD6Z4riED2SFGwjs+RcszJUkxLgYHQpoiDpYrhLv7sHk9WDyswybD6aNYkig==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/selenium-webdriver": { + "version": "4.1.25", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.25.tgz", + "integrity": "sha512-Jnlg7h7WDq4k8N2p/zp1ax6qizvU9Pn37I/HR/KX8k5TIU1wfUAuBy8CA6x8drAqa9PY3kYykmmyNHU4tX91LQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/ws": "*" + } + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/shot": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.5.tgz", + "integrity": "sha512-4wiGdy1sXfpcFgF1VAouUaSl6zjWn0v2NarNgviAJYm3BeiODywERnRtIC5YtNIbfh3UfShfCRD9yyeWAD7R0w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "optional": true, + "peer": true + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "optional": true, + "peer": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@unimodules/core": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-7.1.2.tgz", + "integrity": "sha512-lY+e2TAFuebD3vshHMIRqru3X4+k7Xkba4Wa7QsDBd+ex4c4N2dHAO61E2SrGD9+TRBD8w/o7mzK6ljbqRnbyg==", + "deprecated": "replaced by the 'expo' package, learn more: https://blog.expo.dev/whats-new-in-expo-modules-infrastructure-7a7cdda81ebc", + "optional": true, + "dependencies": { + "compare-versions": "^3.4.0" + } + }, + "node_modules/@unimodules/react-native-adapter": { + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@unimodules/react-native-adapter/-/react-native-adapter-6.3.9.tgz", + "integrity": "sha512-i9/9Si4AQ8awls+YGAKkByFbeAsOPgUNeLoYeh2SQ3ddjxJ5ZJDtq/I74clDnpDcn8zS9pYlcDJ9fgVJa39Glw==", + "deprecated": "replaced by the 'expo' package, learn more: https://blog.expo.dev/whats-new-in-expo-modules-infrastructure-7a7cdda81ebc", + "optional": true, + "dependencies": { + "expo-modules-autolinking": "^0.0.3", + "invariant": "^2.2.4" + } + }, + "node_modules/@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", + "optional": true, + "peer": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@urql/exchange-retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", + "optional": true, + "peer": true, + "dependencies": { + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "peer": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "devOptional": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "devOptional": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "optional": true, + "peer": true + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "optional": true, + "peer": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "optional": true, + "peer": true, + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dev": true, + "dependencies": { + "entities": "^2.2.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "optional": true, + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "devOptional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "optional": true, + "peer": true + }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/application-config-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==", + "optional": true, + "peer": true + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "optional": true, + "peer": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "devOptional": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "optional": true, + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "optional": true, + "peer": true + }, + "node_modules/asmcrypto.js": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/asmcrypto.js/-/asmcrypto.js-0.22.0.tgz", + "integrity": "sha512-usgMoyXjMbx/ZPdzTSXExhMPur2FTdz/Vo5PVx2gIaBcdAAJNOFlsdgqveM8Cff7W0v+xrf9BwjOV26JSAF9qA==" + }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "optional": true, + "peer": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "devOptional": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "optional": true, + "peer": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b64-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/b64-lite/-/b64-lite-1.4.0.tgz", + "integrity": "sha512-aHe97M7DXt+dkpa8fHlCcm1CnskAHrJqEfMI0KN7dwqlzml/aUe1AGt6lk51HzrSfVD67xOso84sOpr+0wIe2w==", + "dependencies": { + "base-64": "^0.1.0" + } + }, + "node_modules/b64u-lite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/b64u-lite/-/b64u-lite-1.1.0.tgz", + "integrity": "sha512-929qWGDVCRph7gQVTC6koHqQIpF4vtVaSbwLltFQo44B1bYUquALswZdBKFfrJCPEnsCOvWkJsPdQYZ/Ukhw8A==", + "dependencies": { + "b64-lite": "^1.4.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "optional": true, + "peer": true, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "devOptional": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "devOptional": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "devOptional": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0.tgz", + "integrity": "sha512-Kigl0V36a/6hLVH7+CCe1CCtU3mFBqBd829V//VtuG7I/pyq+B2QZJqOefd63snQmdfCryNhO9XW1FbGPBvYDA==", + "optional": true, + "peer": true + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.12.tgz", + "integrity": "sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w==", + "optional": true, + "peer": true + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-expo": { + "version": "11.0.14", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.14.tgz", + "integrity": "sha512-4BVYR0Sc2sSNxYTiE/OLSnPiOp+weFNy8eV+hX3aD6YAIbBnw+VubKRWqJV/sOJauzOLz0SgYAYyFciYMqizRA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.74.87", + "babel-plugin-react-compiler": "^0.0.0-experimental-592953e-20240517", + "babel-plugin-react-native-web": "~0.19.10", + "react-refresh": "^0.14.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true + }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "optional": true, + "peer": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "devOptional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "devOptional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==", + "optional": true, + "peer": true, + "dependencies": { + "stream-buffers": "~2.2.0" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "optional": true, + "peer": true, + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "devOptional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "optional": true, + "peer": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "optional": true, + "peer": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "optional": true, + "peer": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "optional": true, + "peer": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "optional": true, + "peer": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "optional": true, + "peer": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "optional": true, + "peer": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "optional": true, + "peer": true + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "optional": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/caching-transform/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caching-transform/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "devOptional": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "optional": true, + "peer": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "optional": true, + "peer": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chai-nightwatch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.5.3.tgz", + "integrity": "sha512-38ixH/mqpY6IwnZkz6xPqx8aB5/KVR+j6VPugcir3EGOsphnWXrPH/mUt8Jp+ninL6ghY0AaJDQ10hSfCPGy/g==", + "dev": true, + "dependencies": { + "assertion-error": "1.1.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chrome-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromedriver": { + "version": "127.0.3", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-127.0.3.tgz", + "integrity": "sha512-trUHkFt0n7jGzNOgkO1srOJfz50kKyAGJ016PyV0hrtyKNIGnOC9r3Jlssz19UoEjSzI/1g2shEiIFtDbBYVaw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@testim/chrome-version": "^1.1.4", + "axios": "^1.7.4", + "compare-versions": "^6.1.0", + "extract-zip": "^2.0.1", + "proxy-agent": "^6.4.0", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.2" + }, + "bin": { + "chromedriver": "bin/chromedriver" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chromedriver/node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/chromium-edge-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "optional": true, + "peer": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "devOptional": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "devOptional": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "devOptional": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "devOptional": true + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "optional": true, + "peer": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "devOptional": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "optional": true, + "peer": true + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "devOptional": true + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "optional": true + }, + "node_modules/component-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz", + "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==", + "optional": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "peer": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "optional": true, + "peer": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true, + "peer": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "optional": true, + "peer": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "optional": true, + "peer": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "optional": true, + "peer": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "devOptional": true, + "dependencies": { + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "devOptional": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "optional": true, + "peer": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "optional": true, + "peer": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "devOptional": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==", + "optional": true, + "peer": true + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "optional": true, + "peer": true + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "optional": true, + "peer": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "devOptional": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "devOptional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "devOptional": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "optional": true, + "peer": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/degenerator/node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "optional": true, + "peer": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "devOptional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", + "optional": true, + "peer": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "devOptional": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1025565", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1025565.tgz", + "integrity": "sha512-0s5sbGQR/EfYQhd8EpZgphpndsv+CufTlaeUyA6vYXCA0H5kMAsHCS/cHtUFWoKJCO125hpoKicQCfpxRj4oqw==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "devOptional": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "optional": true, + "peer": true, + "dependencies": { + "dotenv": "^16.4.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "optional": true, + "peer": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "devOptional": true + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "devOptional": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "devOptional": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "devOptional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", + "optional": true, + "peer": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "optional": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "optional": true, + "peer": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "optional": true, + "peer": true, + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "optional": true, + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "devOptional": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "optional": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "optional": true, + "peer": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "optional": true, + "peer": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "devOptional": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "devOptional": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", + "optional": true, + "peer": true + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "optional": true, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/expo": { + "version": "51.0.31", + "resolved": "https://registry.npmjs.org/expo/-/expo-51.0.31.tgz", + "integrity": "sha512-YiUNcxzSkQ0jlKW+e8F81KnZfAhCugEZI9VYmuIsFONHivtiYIADHdcFvUWnexUEdgPQDkgWw85XBnIbzIZ39Q==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.18.29", + "@expo/config": "9.0.3", + "@expo/config-plugins": "8.0.8", + "@expo/metro-config": "0.18.11", + "@expo/vector-icons": "^14.0.0", + "babel-preset-expo": "~11.0.14", + "expo-asset": "~10.0.10", + "expo-file-system": "~17.0.1", + "expo-font": "~12.0.9", + "expo-keep-awake": "~13.0.2", + "expo-modules-autolinking": "1.11.2", + "expo-modules-core": "1.12.23", + "fbemitter": "^3.0.0", + "whatwg-url-without-unicode": "8.0.0-3" + }, + "bin": { + "expo": "bin/cli" + } + }, + "node_modules/expo-asset": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-10.0.10.tgz", + "integrity": "sha512-0qoTIihB79k+wGus9wy0JMKq7DdenziVx3iUkGvMAy2azscSgWH6bd2gJ9CGnhC6JRd3qTMFBL0ou/fx7WZl7A==", + "optional": true, + "peer": true, + "dependencies": { + "expo-constants": "~16.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-constants": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-16.0.2.tgz", + "integrity": "sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ==", + "optional": true, + "peer": true, + "dependencies": { + "@expo/config": "~9.0.0", + "@expo/env": "~0.3.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-file-system": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-17.0.1.tgz", + "integrity": "sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw==", + "optional": true, + "peer": true, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-font": { + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-12.0.9.tgz", + "integrity": "sha512-seTCyf0tbgkAnp3ZI9ZfK9QVtURQUgFnuj+GuJ5TSnN0XsOtVe1s2RxTvmMgkfuvfkzcjJ69gyRpsZS1cC8hjw==", + "optional": true, + "peer": true, + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-keep-awake": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-13.0.2.tgz", + "integrity": "sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw==", + "optional": true, + "peer": true, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.0.3.tgz", + "integrity": "sha512-azkCRYj/DxbK4udDuDxA9beYzQTwpJ5a9QA0bBgha2jHtWdFGF4ZZWSY+zNA5mtU3KqzYt8jWHfoqgSvKyu1Aw==", + "optional": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "~5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-autolinking/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-modules-autolinking/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true + }, + "node_modules/expo-modules-autolinking/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-modules-autolinking/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/expo-modules-autolinking/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-modules-core": { + "version": "1.12.23", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.23.tgz", + "integrity": "sha512-NYp/rWhKW6zlqNdC8/r+FckzlAGWX0IJEjOxwYHuYeRUn/vnKksb43G4E3jcaQEZgmWlKxK4LpxL3gr7m0RJFA==", + "optional": true, + "peer": true, + "dependencies": { + "invariant": "^2.2.4" + } + }, + "node_modules/expo-random": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-14.0.1.tgz", + "integrity": "sha512-gX2mtR9o+WelX21YizXUCD/y+a4ZL+RDthDmFkHxaYbdzjSYTn8u/igoje/l3WEO+/RYspmqUFa8w/ckNbt6Vg==", + "optional": true, + "dependencies": { + "base64-js": "^1.3.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/expo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/expo/node_modules/expo-modules-autolinking": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.2.tgz", + "integrity": "sha512-fdcaNO8ucHA3yLNY52ZUENBcAG7KEx8QyMmnVNavO1JVBGRMZG8JyVcbrhYQDtVtpxkbai5YzwvLutINvbDZDQ==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/expo/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "optional": true, + "peer": true + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "devOptional": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "devOptional": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "optional": true, + "peer": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "optional": true, + "peer": true, + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "optional": true, + "peer": true, + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "optional": true, + "peer": true + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==", + "optional": true, + "peer": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "devOptional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-rc": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/find-rc/-/find-rc-4.0.2.tgz", + "integrity": "sha512-u7OCIGW5B2lkPHnE8Gim+KlEdQ6pbvUAwSB/sD+CW3Sy3saKNtZlr0I06h68WX4Dgbnvs76zP5QXaPKQY7Kt0Q==", + "dev": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "devOptional": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "optional": true, + "peer": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "optional": true, + "peer": true + }, + "node_modules/flow-parser": { + "version": "0.244.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.244.0.tgz", + "integrity": "sha512-Dkc88m5k8bx1VvHTO9HEJ7tvMcSb3Zvcv1PY4OHK7pHdtdY2aUjhmPy6vpjVJ2uUUOIybRlb91sXE8g4doChtA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "optional": true, + "peer": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "optional": true, + "peer": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "devOptional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "optional": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "devOptional": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "devOptional": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "optional": true, + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "devOptional": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "devOptional": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "optional": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "devOptional": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "optional": true, + "peer": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "devOptional": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", + "optional": true, + "peer": true + }, + "node_modules/hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", + "optional": true, + "peer": true, + "dependencies": { + "hermes-estree": "0.19.1" + } + }, + "node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "devOptional": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "devOptional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "devOptional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "optional": true, + "peer": true, + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "devOptional": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "devOptional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "devOptional": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true, + "peer": true + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "optional": true, + "peer": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "optional": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "optional": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "devOptional": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "optional": true, + "peer": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "optional": true, + "peer": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true, + "peer": true + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "devOptional": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "optional": true, + "peer": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "optional": true, + "peer": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "devOptional": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", + "optional": true, + "peer": true, + "dependencies": { + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "optional": true, + "peer": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "devOptional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "optional": true, + "peer": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "devOptional": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "optional": true, + "peer": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "optional": true, + "peer": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "optional": true, + "peer": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", + "optional": true, + "peer": true, + "dependencies": { + "is-invalid-path": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "devOptional": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, + "node_modules/is2/node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "devOptional": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-webcrypto": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/isomorphic-webcrypto/-/isomorphic-webcrypto-2.3.8.tgz", + "integrity": "sha512-XddQSI0WYlSCjxtm1AI8kWQOulf7hAN3k3DclF1sxDJZqOe0pcsOt675zvWW91cZH9hYs3nlA3Ev8QK5i80SxQ==", + "dependencies": { + "@peculiar/webcrypto": "^1.0.22", + "asmcrypto.js": "^0.22.0", + "b64-lite": "^1.3.1", + "b64u-lite": "^1.0.1", + "msrcrypto": "^1.5.6", + "str2buf": "^1.3.0", + "webcrypto-shim": "^0.1.4" + }, + "optionalDependencies": { + "@unimodules/core": "*", + "@unimodules/react-native-adapter": "*", + "expo-random": "*", + "react-native-securerandom": "^0.1.1" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "optional": true, + "peer": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "optional": true, + "peer": true + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "optional": true, + "peer": true + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "optional": true, + "peer": true + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "devOptional": true, + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==", + "optional": true, + "peer": true + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-base64": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "devOptional": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "devOptional": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", + "optional": true, + "peer": true + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "optional": true, + "peer": true + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jscodeshift/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/jscodeshift/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz", + "integrity": "sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==", + "dev": true, + "dependencies": { + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/cssstyle": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "dev": true, + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, + "node_modules/jsdom/node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "optional": true, + "peer": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "devOptional": true + }, + "node_modules/json-schema-deref-sync": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", + "optional": true, + "peer": true, + "dependencies": { + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/json-schema-deref-sync/node_modules/md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "optional": true, + "peer": true, + "dependencies": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "devOptional": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optional": true, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "optional": true, + "peer": true, + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/lightningcss": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", + "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.19.0", + "lightningcss-darwin-x64": "1.19.0", + "lightningcss-linux-arm-gnueabihf": "1.19.0", + "lightningcss-linux-arm64-gnu": "1.19.0", + "lightningcss-linux-arm64-musl": "1.19.0", + "lightningcss-linux-x64-gnu": "1.19.0", + "lightningcss-linux-x64-musl": "1.19.0", + "lightningcss-win32-x64-msvc": "1.19.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", + "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", + "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", + "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", + "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", + "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", + "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", + "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", + "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "optional": true, + "peer": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "devOptional": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "optional": true, + "peer": true + }, + "node_modules/lodash._arraycopy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha512-RHShTDnPKP7aWxlvXKiDT6IX2jCs6YZLCtNhOru/OX2Q/tzX295vVBK5oX1ECtN+2r86S0Ogy8ykP1sgCZAN0A==", + "dev": true + }, + "node_modules/lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha512-Mn7HidOVcl3mkQtbPsuKR0Fj0N6Q6DQB77CtYncZcJc0bx5qv2q4Gl6a0LC1AN+GSxpnBDNnK3CKEm9XNA4zqQ==", + "dev": true + }, + "node_modules/lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ==", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._baseclone": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", + "integrity": "sha512-1K0dntf2dFQ5my0WoGKkduewR6+pTNaqX03kvs45y7G5bzl4B3kTR4hDfJIc2aCQDeLyQHhS280tc814m1QC1Q==", + "dev": true, + "dependencies": { + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._baseassign": "^3.0.0", + "lodash._basefor": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "node_modules/lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha512-6bc3b8grkpMgDcVJv9JYZAk/mHgcqMljzm7OsbmcE2FGUMmmLQTPHlh/dFqR8LA0GQ7z4K67JSotVKu5058v1A==", + "dev": true + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==", + "dev": true + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "node_modules/lodash.clone": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", + "integrity": "sha512-yVYPpFTdZDCLG2p07gVRTvcwN5X04oj2hu4gG6r0fer58JA08wAVxXzWM+CmmxO2bzOH8u8BkZTZqgX6juVF7A==", + "dev": true, + "dependencies": { + "lodash._baseclone": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "devOptional": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "optional": true, + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "devOptional": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/logkitty/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/logkitty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/logkitty/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "optional": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "devOptional": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "devOptional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "devOptional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "optional": true, + "peer": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "optional": true, + "peer": true + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "optional": true, + "peer": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "optional": true, + "peer": true, + "dependencies": { + "buffer-alloc": "^1.1.0" + }, + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==", + "optional": true, + "peer": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "optional": true, + "peer": true + }, + "node_modules/memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==", + "optional": true, + "peer": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "devOptional": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "devOptional": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.10.tgz", + "integrity": "sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.23.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-config": "0.80.10", + "metro-core": "0.80.10", + "metro-file-map": "0.80.10", + "metro-resolver": "0.80.10", + "metro-runtime": "0.80.10", + "metro-source-map": "0.80.10", + "metro-symbolicate": "0.80.10", + "metro-transform-plugins": "0.80.10", + "metro-transform-worker": "0.80.10", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.10.tgz", + "integrity": "sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.23.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz", + "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==", + "optional": true, + "peer": true + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz", + "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==", + "optional": true, + "peer": true, + "dependencies": { + "hermes-estree": "0.23.0" + } + }, + "node_modules/metro-cache": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.10.tgz", + "integrity": "sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==", + "optional": true, + "peer": true, + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "metro-core": "0.80.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-cache-key": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.10.tgz", + "integrity": "sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==", + "optional": true, + "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-config": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.10.tgz", + "integrity": "sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==", + "optional": true, + "peer": true, + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.6.3", + "metro": "0.80.10", + "metro-cache": "0.80.10", + "metro-core": "0.80.10", + "metro-runtime": "0.80.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-core": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.10.tgz", + "integrity": "sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==", + "optional": true, + "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-file-map": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.10.tgz", + "integrity": "sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==", + "optional": true, + "peer": true, + "dependencies": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/metro-file-map/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/metro-minify-terser": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.10.tgz", + "integrity": "sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==", + "optional": true, + "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-resolver": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.10.tgz", + "integrity": "sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==", + "optional": true, + "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-runtime": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.10.tgz", + "integrity": "sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-source-map": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.10.tgz", + "integrity": "sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.10", + "nullthrows": "^1.1.1", + "ob1": "0.80.10", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.10.tgz", + "integrity": "sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==", + "optional": true, + "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.80.10", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.10.tgz", + "integrity": "sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.10.tgz", + "integrity": "sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "metro": "0.80.10", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-minify-terser": "0.80.10", + "metro-source-map": "0.80.10", + "metro-transform-plugins": "0.80.10", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz", + "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz", + "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==", + "optional": true, + "peer": true, + "dependencies": { + "hermes-estree": "0.23.0" + } + }, + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/metro/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/metro/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "devOptional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "optional": true, + "peer": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "devOptional": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "devOptional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mo-walk": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mo-walk/-/mo-walk-1.2.0.tgz", + "integrity": "sha512-rat9d/EMjr08N56/u2MwMaykb/bGuByYmTgG8eJIJbUxPtSuoW76el6Tm1+cUqY0lmhuss4IIO3x2lWLojmRTA==", + "dev": true, + "dependencies": { + "pkg-up": "3.x.x" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/msrcrypto": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/msrcrypto/-/msrcrypto-1.5.8.tgz", + "integrity": "sha512-ujZ0TRuozHKKm6eGbKHfXef7f+esIhEckmThVnz7RNyiOJd7a6MXj2JGBoL9cnPDW+JMG16MoTUh5X+XXjI66Q==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "optional": true, + "peer": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true + }, + "node_modules/nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "optional": true, + "peer": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "optional": true, + "peer": true + }, + "node_modules/nightwatch": { + "version": "2.6.25", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.25.tgz", + "integrity": "sha512-aYc5eA6M/iADdbKbD6dMHlhUsaJm/Y4/VOtSHSC23nimGTXMUKbe1Bb14Iz3/SNyz2joHOkpxaDIPIAZCSlOiQ==", + "dev": true, + "dependencies": { + "@nightwatch/chai": "5.0.2", + "@nightwatch/html-reporter-template": "0.2.1", + "ansi-to-html": "0.7.2", + "assertion-error": "1.1.0", + "boxen": "5.1.2", + "chai-nightwatch": "0.5.3", + "ci-info": "3.3.0", + "cli-table3": "^0.6.3", + "didyoumean": "1.2.2", + "dotenv": "10.0.0", + "ejs": "3.1.8", + "envinfo": "7.8.1", + "fs-extra": "^10.1.0", + "glob": "^7.2.3", + "jsdom": "19.0.0", + "lodash.clone": "3.0.3", + "lodash.defaultsdeep": "4.6.1", + "lodash.escape": "4.0.1", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "minimatch": "3.1.2", + "minimist": "1.2.6", + "mocha": "9.2.2", + "nightwatch-axe-verbose": "^2.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "selenium-webdriver": "4.6.1", + "semver": "7.3.5", + "stacktrace-parser": "0.1.10", + "strip-ansi": "6.0.1", + "untildify": "^4.0.0", + "uuid": "8.3.2" + }, + "bin": { + "nightwatch": "bin/nightwatch" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "@cucumber/cucumber": "*", + "chromedriver": "*", + "geckodriver": "*" + }, + "peerDependenciesMeta": { + "@cucumber/cucumber": { + "optional": true + }, + "chromedriver": { + "optional": true + }, + "geckodriver": { + "optional": true + } + } + }, + "node_modules/nightwatch-axe-verbose": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.3.1.tgz", + "integrity": "sha512-C6N95bwPHsRnv04eVIwJ6w5m6X1+Pddvo6nzpzOHQlO0j+pYRVU7zaQmFUJ0L4cqeUxReNEXyTUg/R9WWfHk7w==", + "dev": true, + "dependencies": { + "axe-core": "^4.9.1" + } + }, + "node_modules/nightwatch/node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/nightwatch/node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/nightwatch/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/nightwatch/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nightwatch/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nightwatch/node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/nightwatch/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nightwatch/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nightwatch/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nightwatch/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/nightwatch/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nightwatch/node_modules/jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/nightwatch/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/nightwatch/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nightwatch/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/nightwatch/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/nightwatch/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nightwatch/node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nightwatch/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nightwatch/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/nightwatch/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nightwatch/node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nightwatch/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nightwatch/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nightwatch/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/nightwatch/node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nightwatch/node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nightwatch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "optional": true, + "peer": true + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "optional": true, + "peer": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "optional": true, + "peer": true + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "devOptional": true + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "optional": true, + "peer": true, + "dependencies": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "optional": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "optional": true, + "peer": true + }, + "node_modules/nwsapi": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "dev": true + }, + "node_modules/nyc": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.0.0.tgz", + "integrity": "sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/nyc/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nyc/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/nyc/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nyc/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nyc/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ob1": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.10.tgz", + "integrity": "sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==", + "optional": true, + "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "devOptional": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "devOptional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "optional": true, + "peer": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "optional": true, + "peer": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "deprecated": "This package is no longer supported.", + "optional": true, + "peer": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "devOptional": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "peer": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "optional": true, + "peer": true + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "devOptional": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "optional": true, + "peer": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "optional": true, + "peer": true, + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "devOptional": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "optional": true, + "peer": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "devOptional": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "optional": true, + "peer": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/plist/node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "optional": true, + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/pretty-format/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "optional": true, + "peer": true + }, + "node_modules/pretty-format/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "devOptional": true + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "optional": true, + "peer": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "optional": true, + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "devOptional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "dependencies": { + "tslib": "^2.6.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "optional": true, + "peer": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "optional": true, + "peer": true, + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "peer": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.1.tgz", + "integrity": "sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==", + "optional": true, + "peer": true, + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "optional": true, + "peer": true + }, + "node_modules/react-native": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.75.2.tgz", + "integrity": "sha512-pP+Yswd/EurzAlKizytRrid9LJaPJzuNldc+o5t01md2VLHym8V7FWH2z9omFKtFTer8ERg0fAhG1fpd0Qq6bQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native/assets-registry": "0.75.2", + "@react-native/codegen": "0.75.2", + "@react-native/community-cli-plugin": "0.75.2", + "@react-native/gradle-plugin": "0.75.2", + "@react-native/js-polyfills": "0.75.2", + "@react-native/normalize-colors": "0.75.2", + "@react-native/virtualized-lists": "0.75.2", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^5.3.1", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "^18.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-securerandom": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz", + "integrity": "sha512-CozcCx0lpBLevxiXEb86kwLRalBCHNjiGPlw3P7Fi27U6ZLdfjOCNRHD1LtBKcvPvI3TvkBXB3GOtLvqaYJLGw==", + "optional": true, + "dependencies": { + "base64-js": "*" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native/node_modules/@react-native/codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.75.2.tgz", + "integrity": "sha512-OkWdbtO2jTkfOXfj3ibIL27rM6LoaEuApOByU2G8X+HS6v9U87uJVJlMIRWBDmnxODzazuHwNVA2/wAmSbucaw==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.22.0", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/react-native/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-native/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-native/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/react-native/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-native/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/react-native/node_modules/hermes-estree": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.22.0.tgz", + "integrity": "sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==", + "optional": true, + "peer": true + }, + "node_modules/react-native/node_modules/hermes-parser": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.22.0.tgz", + "integrity": "sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==", + "optional": true, + "peer": true, + "dependencies": { + "hermes-estree": "0.22.0" + } + }, + "node_modules/react-native/node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "optional": true, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/react-native/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "optional": true, + "peer": true + }, + "node_modules/react-native/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/react-native/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/react-native/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "devOptional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", + "optional": true, + "peer": true + }, + "node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "optional": true, + "peer": true, + "dependencies": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "devOptional": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "devOptional": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "devOptional": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "devOptional": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "devOptional": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "devOptional": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/remove-trailing-slash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==", + "optional": true, + "peer": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "devOptional": true + }, + "node_modules/requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "optional": true, + "peer": true, + "dependencies": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/requireg/node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "optional": true, + "peer": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "devOptional": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "optional": true, + "peer": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "devOptional": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "devOptional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "optional": true, + "peer": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "optional": true, + "peer": true + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "dev": true + }, + "node_modules/selenium-webdriver": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", + "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", + "dev": true, + "dependencies": { + "jszip": "^3.10.0", + "tmp": "^0.2.1", + "ws": ">=8.7.0" + }, + "engines": { + "node": ">= 14.20.0" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "devOptional": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "devOptional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "devOptional": true + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "devOptional": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "devOptional": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "optional": true, + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "devOptional": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "devOptional": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "devOptional": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "devOptional": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "optional": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shiki": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", + "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "5.2.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "devOptional": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "optional": true, + "peer": true, + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-plist/node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "optional": true, + "peer": true, + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/simple-plist/node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "optional": true, + "peer": true, + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "optional": true, + "peer": true + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "optional": true, + "peer": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "devOptional": true + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "optional": true, + "peer": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "optional": true, + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "devOptional": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/str2buf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/str2buf/-/str2buf-1.3.0.tgz", + "integrity": "sha512-xIBmHIUHYZDP4HyoXGHYNVmxlXLXDrtFHYT0eV6IOdEj3VO9ccaF1Ejl9Oq8iFjITllpT8FhaXb4KsNmw+3EuA==" + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true, + "peer": true + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "optional": true, + "peer": true + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "optional": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==", + "optional": true, + "peer": true + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "devOptional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "optional": true, + "peer": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "optional": true, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dev": true, + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "optional": true, + "peer": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "optional": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "optional": true, + "peer": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "devOptional": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "devOptional": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "optional": true, + "peer": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "optional": true, + "peer": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "optional": true, + "peer": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "optional": true, + "peer": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "peer": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "optional": true, + "peer": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "optional": true, + "peer": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "devOptional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "devOptional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/traverse": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "optional": true, + "peer": true, + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "optional": true, + "peer": true + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "optional": true, + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedoc": { + "version": "0.22.18", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.18.tgz", + "integrity": "sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==", + "dev": true, + "dependencies": { + "glob": "^8.0.3", + "lunr": "^2.3.9", + "marked": "^4.0.16", + "minimatch": "^5.1.0", + "shiki": "^0.10.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 12.10.0" + }, + "peerDependencies": { + "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz", + "integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/uglify-js": { + "version": "3.19.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.2.tgz", + "integrity": "sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "optional": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "devOptional": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "devOptional": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "optional": true, + "peer": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "optional": true, + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "peer": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==", + "optional": true, + "peer": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "devOptional": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "devOptional": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "devOptional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==", + "optional": true, + "peer": true + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "optional": true, + "peer": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "optional": true, + "peer": true + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "optional": true, + "peer": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "devOptional": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webcrypto-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", + "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/webcrypto-shim": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz", + "integrity": "sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg==" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "optional": true, + "peer": true + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url-without-unicode": { + "version": "8.0.0-3", + "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", + "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", + "optional": true, + "peer": true, + "dependencies": { + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "optional": true, + "peer": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "devOptional": true + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "optional": true, + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/will-call": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/will-call/-/will-call-1.0.1.tgz", + "integrity": "sha512-1hEeV8SfBYhNRc/bNXeQfyUBX8Dl9SCYME3qXh99iZP9wJcnhnlBsoBw8Y0lXVZ3YuPsoxImTzBiol1ouNR/hg==", + "dev": true + }, + "node_modules/wonka": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==", + "optional": true, + "peer": true + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "devOptional": true + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "devOptional": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "optional": true, + "peer": true, + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xcode/node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "optional": true, + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "optional": true, + "peer": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "devOptional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "devOptional": true + }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "devOptional": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@babel/cli": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.8.tgz", + "integrity": "sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0", + "commander": "^6.2.0", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + } + }, + "@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "devOptional": true, + "requires": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "devOptional": true + }, + "@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "devOptional": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/eslint-parser": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz", + "integrity": "sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==", + "dev": true, + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "devOptional": true, + "requires": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "devOptional": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "devOptional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "devOptional": true, + "requires": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + } + }, + "@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "devOptional": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "devOptional": true, + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "devOptional": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "devOptional": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "devOptional": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "devOptional": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "devOptional": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "devOptional": true + }, + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "devOptional": true + }, + "@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "devOptional": true + }, + "@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "devOptional": true, + "requires": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "devOptional": true, + "requires": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "devOptional": true, + "requires": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "devOptional": true, + "requires": { + "@babel/types": "^7.25.4" + } + }, + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + } + }, + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz", + "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "optional": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "devOptional": true, + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz", + "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "devOptional": true, + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "devOptional": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "devOptional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "devOptional": true, + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "devOptional": true, + "requires": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "devOptional": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "devOptional": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.24.7" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz", + "integrity": "sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==", + "devOptional": true, + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "devOptional": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/preset-env": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + } + }, + "@babel/preset-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" + } + }, + "@babel/preset-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" + } + }, + "@babel/register": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", + "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "optional": true, + "peer": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "optional": true, + "peer": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "optional": true, + "peer": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "optional": true, + "peer": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "devOptional": true + }, + "@babel/runtime": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", + "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", + "devOptional": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "devOptional": true, + "requires": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, + "@expo/bunyan": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz", + "integrity": "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==", + "optional": true, + "peer": true, + "requires": { + "uuid": "^8.0.0" + } + }, + "@expo/cli": { + "version": "0.18.29", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.18.29.tgz", + "integrity": "sha512-X810C48Ss+67RdZU39YEO1khNYo1RmjouRV+vVe0QhMoTe8R6OA3t+XYEdwaNbJ5p/DJN7szfHfNmX2glpC7xg==", + "optional": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.8", + "@expo/devcert": "^1.0.0", + "@expo/env": "~0.3.0", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@expo/metro-config": "0.18.11", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "^1.5.0", + "@expo/plist": "^0.1.0", + "@expo/prebuild-config": "7.0.8", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "^1.7.2", + "@expo/xcpretty": "^4.3.0", + "@react-native/dev-middleware": "0.74.85", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.0.7", + "bplist-parser": "^0.3.1", + "cacache": "^18.0.2", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "connect": "^3.7.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "fast-glob": "^3.3.2", + "find-yarn-workspace-root": "~2.0.0", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "glob": "^7.1.7", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", + "internal-ip": "4.3.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "lodash.debounce": "^4.0.8", + "md5hex": "^1.0.0", + "minimatch": "^3.0.4", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "open": "^8.3.0", + "ora": "3.4.0", + "picomatch": "^3.0.1", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve": "^1.22.2", + "resolve-from": "^5.0.0", + "resolve.exports": "^2.0.2", + "semver": "^7.6.0", + "send": "^0.18.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "temp-dir": "^2.0.0", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "dependencies": { + "@expo/prebuild-config": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.8.tgz", + "integrity": "sha512-wH9NVg6HiwF5y9x0TxiMEeBF+ITPGDXy5/i6OUheSrKpPgb0lF1Mwzl/f2fLPXBEpl+ZXOQ8LlLW32b7K9lrNg==", + "optional": true, + "peer": true, + "requires": { + "@expo/config": "~9.0.0-beta.0", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/image-utils": "^0.5.0", + "@expo/json-file": "^8.3.0", + "@react-native/normalize-colors": "0.74.85", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@react-native/normalize-colors": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz", + "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==", + "optional": true, + "peer": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "peer": true + }, + "expo-modules-autolinking": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.2.tgz", + "integrity": "sha512-fdcaNO8ucHA3yLNY52ZUENBcAG7KEx8QyMmnVNavO1JVBGRMZG8JyVcbrhYQDtVtpxkbai5YzwvLutINvbDZDQ==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "optional": true, + "peer": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "optional": true, + "peer": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true + } + } + }, + "@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "optional": true, + "peer": true, + "requires": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "@expo/config": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.3.tgz", + "integrity": "sha512-eOTNM8eOC8gZNHgenySRlc/lwmYY1NOgvjwA8LHuvPT7/eUwD93zrxu3lPD1Cc/P6C/2BcVdfH4hf0tLmDxnsg==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.0-unreleased", + "@expo/json-file": "^8.3.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.34.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + } + } + }, + "@expo/config-plugins": { + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.8.tgz", + "integrity": "sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==", + "optional": true, + "peer": true, + "requires": { + "@expo/config-types": "^51.0.0-unreleased", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "51.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.2.tgz", + "integrity": "sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==", + "optional": true, + "peer": true + }, + "@expo/devcert": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.4.tgz", + "integrity": "sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==", + "optional": true, + "peer": true, + "requires": { + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^10.4.2", + "lodash": "^4.17.21", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^2.4.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "optional": true, + "peer": true, + "requires": { + "ms": "^2.1.1" + } + }, + "foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "optional": true, + "peer": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "optional": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "optional": true, + "peer": true + } + } + }, + "@expo/env": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.3.0.tgz", + "integrity": "sha512-OtB9XVHWaXidLbHvrVDeeXa09yvTl3+IQN884sO6PhIi2/StXfgSH/9zC7IvzrDB8kW3EBJ1PPLuCUJ2hxAT7Q==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/image-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz", + "integrity": "sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==", + "optional": true, + "peer": true, + "requires": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "tempy": "0.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", + "optional": true, + "peer": true + }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true + } + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "optional": true, + "peer": true + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "optional": true, + "peer": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "optional": true, + "peer": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "optional": true, + "peer": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "optional": true, + "peer": true + } + } + }, + "@expo/json-file": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + } + } + }, + "@expo/metro-config": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.18.11.tgz", + "integrity": "sha512-/uOq55VbSf9yMbUO1BudkUM2SsGW1c5hr9BnhIqYqcsFv0Jp5D3DtJ4rljDKaUeNLbwr6m7pqIrkSMq5NrYf4Q==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "@expo/config": "~9.0.0-beta.0", + "@expo/env": "~0.3.0", + "@expo/json-file": "~8.3.0", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "fs-extra": "^9.1.0", + "getenv": "^1.0.0", + "glob": "^7.2.3", + "jsc-safe-url": "^0.2.4", + "lightningcss": "~1.19.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true + } + } + }, + "@expo/osascript": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.3.tgz", + "integrity": "sha512-aOEkhPzDsaAfolSswObGiYW0Pf0ROfR9J2NBRLQACdQ6uJlyAMiPF45DVEVknAU9juKh0y8ZyvC9LXqLEJYohA==", + "optional": true, + "peer": true, + "requires": { + "@expo/spawn-async": "^1.7.2", + "exec-async": "^2.2.0" + } + }, + "@expo/package-manager": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.5.2.tgz", + "integrity": "sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==", + "optional": true, + "peer": true, + "requires": { + "@expo/json-file": "^8.3.0", + "@expo/spawn-async": "^1.7.2", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "ora": "^3.4.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", + "optional": true, + "peer": true, + "requires": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "@expo/rudder-sdk-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", + "optional": true, + "peer": true, + "requires": { + "@expo/bunyan": "^4.0.0", + "@segment/loosely-validate-event": "^2.0.0", + "fetch-retry": "^4.1.1", + "md5": "^2.2.1", + "node-fetch": "^2.6.1", + "remove-trailing-slash": "^0.1.0", + "uuid": "^8.3.2" + } + }, + "@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "optional": true, + "peer": true + }, + "@expo/spawn-async": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3" + } + }, + "@expo/vector-icons": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-14.0.2.tgz", + "integrity": "sha512-70LpmXQu4xa8cMxjp1fydgRPsalefnHaXLzIwaHMEzcZhnyjw2acZz8azRrZOslPVAWlxItOa2Dd7WtD/kI+CA==", + "optional": true, + "peer": true, + "requires": { + "prop-types": "^15.8.1" + } + }, + "@expo/xcpretty": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.1.tgz", + "integrity": "sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "optional": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true, + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "optional": true, + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "optional": true, + "peer": true, + "requires": {} + }, + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } + } + }, + "@hapi/bossy": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bossy/-/bossy-6.0.1.tgz", + "integrity": "sha512-FDccJWwjorRgnbYfRGAweq1QU3kQqTeGJNY0SwWssMo+L2CXRylifQ9VcYOz2yO2rtB/wtMe/Cyow2t7pcBs5g==", + "dev": true, + "requires": { + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } + } + }, + "@hapi/bounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "dev": true, + "requires": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/code": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@hapi/code/-/code-9.0.3.tgz", + "integrity": "sha512-g50b7qz861Xfnt1NWtcba1zVxlHLPDJh/4ys6pva6jMmQgbTDLgAkbORDHYbVSA7mYxZ2cHZ2n7ZeFb5j/ZhQw==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } + } + }, + "@hapi/eslint-plugin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/eslint-plugin/-/eslint-plugin-6.0.0.tgz", + "integrity": "sha512-6eN1fnBO742nTTSpQtYB35aFGAT9I7r4u2v/+R2c9ToYTQp4QBoPOBA5R3+C7+Az3I0ugs+lTIqAsMPDLpsRAg==", + "dev": true, + "requires": {} + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "devOptional": true + }, + "@hapi/lab": { + "version": "25.3.1", + "resolved": "https://registry.npmjs.org/@hapi/lab/-/lab-25.3.1.tgz", + "integrity": "sha512-y5JL9O12F0voH5J2ROMcfskZVyqz9mp1oMv+TyMf67uco91Y9FJ0broYfeQYXwV78NF+W10/A+yCDYN6oV/ASA==", + "dev": true, + "requires": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.0", + "@hapi/bossy": "^6.0.0", + "@hapi/eslint-plugin": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "diff": "^5.0.0", + "eslint": "8.x.x", + "find-rc": "4.x.x", + "globby": "^11.1.0", + "handlebars": "4.x.x", + "mo-walk": "^1.2.0", + "seedrandom": "3.x.x", + "source-map": "0.7.x", + "source-map-support": "0.5.x", + "supports-color": "^8.1.1", + "will-call": "1.x.x" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true + } + } + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "devOptional": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "optional": true, + "peer": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "optional": true, + "peer": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "optional": true, + "peer": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "optional": true, + "peer": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "optional": true, + "peer": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3" + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "optional": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "optional": true, + "peer": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "devOptional": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "devOptional": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "devOptional": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "devOptional": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, + "@nightwatch/chai": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nightwatch/chai/-/chai-5.0.2.tgz", + "integrity": "sha512-yzILJFCcE75OPoRfBlJ80Y3Ky06ljsdrK4Ld92yhmM477vxO2GEguwnd+ldl7pdSYTcg1gSJ1bPPQrA+/Hrn+A==", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "4.0.1", + "loupe": "2.3.4", + "pathval": "1.1.1", + "type-detect": "4.0.8" + }, + "dependencies": { + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "deep-eql": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.0.1.tgz", + "integrity": "sha512-D/Oxqobjr+kxaHsgiQBZq9b6iAWdEj5W/JdJm8deNduAPc9CwXQ3BJJCuEqlrPXcy45iOMkGPZ0T81Dnz7UDCA==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + } + } + }, + "@nightwatch/html-reporter-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.2.1.tgz", + "integrity": "sha512-GEBeGoXVmTYPtNC4Yq34vfgxf6mlFyEagxpsfH18Qe5BvctF2rprX+wI5dKBm9p5IqHo6ZOcXHCufOeP3cjuOw==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "devOptional": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "devOptional": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "devOptional": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "optional": true, + "peer": true, + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + } + } + }, + "@peculiar/asn1-schema": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.13.tgz", + "integrity": "sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==", + "requires": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "peer": true + }, + "@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "@react-native-community/cli": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-14.0.0.tgz", + "integrity": "sha512-KwMKJB5jsDxqOhT8CGJ55BADDAYxlYDHv5R/ASQlEcdBEZxT0zZmnL0iiq2VqzETUy+Y/Nop+XDFgqyoQm0C2w==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-clean": "14.0.0", + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-doctor": "14.0.0", + "@react-native-community/cli-server-api": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "@react-native-community/cli-types": "14.0.0", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-clean": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-14.0.0.tgz", + "integrity": "sha512-kvHthZTNur/wLLx8WL5Oh+r04zzzFAX16r8xuaLhu9qGTE6Th1JevbsIuiQb5IJqD8G/uZDKgIZ2a0/lONcbJg==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-config": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-14.0.0.tgz", + "integrity": "sha512-2Nr8KR+dgn1z+HLxT8piguQ1SoEzgKJnOPQKE1uakxWaRFcQ4LOXgzpIAscYwDW6jmQxdNqqbg2cRUoOS7IMtQ==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true, + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "optional": true, + "peer": true, + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "optional": true, + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "optional": true, + "peer": true + } + } + }, + "@react-native-community/cli-debugger-ui": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0.tgz", + "integrity": "sha512-JpfzILfU7eKE9+7AMCAwNJv70H4tJGVv3ZGFqSVoK1YHg5QkVEGsHtoNW8AsqZRS6Fj4os+Fmh+r+z1L36sPmg==", + "optional": true, + "peer": true, + "requires": { + "serve-static": "^1.13.1" + } + }, + "@react-native-community/cli-doctor": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-14.0.0.tgz", + "integrity": "sha512-in6jylHjaPUaDzV+JtUblh8m9JYIHGjHOf6Xn57hrmE5Zwzwuueoe9rSMHF1P0mtDgRKrWPzAJVejElddfptWA==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-config": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-apple": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-android": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-14.0.0.tgz", + "integrity": "sha512-nt7yVz3pGKQXnVa5MAk7zR+1n41kNKD3Hi2OgybH5tVShMBo7JQoL2ZVVH6/y/9wAwI/s7hXJgzf1OIP3sMq+Q==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "logkitty": "^0.7.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-apple": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0.tgz", + "integrity": "sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-tools": "14.0.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "ora": "^5.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-ios": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0.tgz", + "integrity": "sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-platform-apple": "14.0.0" + } + }, + "@react-native-community/cli-server-api": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-14.0.0.tgz", + "integrity": "sha512-A0FIsj0QCcDl1rswaVlChICoNbfN+mkrKB5e1ab5tOYeZMMyCHqvU+eFvAvXjHUlIvVI+LbqCkf4IEdQ6H/2AQ==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-debugger-ui": "14.0.0", + "@react-native-community/cli-tools": "14.0.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + }, + "dependencies": { + "ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "@react-native-community/cli-tools": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-14.0.0.tgz", + "integrity": "sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-14.0.0.tgz", + "integrity": "sha512-CMUevd1pOWqvmvutkUiyQT2lNmMHUzSW7NKc1xvHgg39NjbS58Eh2pMzIUP85IwbYNeocfYc3PH19vA/8LnQtg==", + "optional": true, + "peer": true, + "requires": { + "joi": "^17.2.1" + } + }, + "@react-native/assets-registry": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.75.2.tgz", + "integrity": "sha512-P1dLHjpUeC0AIkDHRYcx0qLMr+p92IPWL3pmczzo6T76Qa9XzruQOYy0jittxyBK91Csn6HHQ/eit8TeXW8MVw==", + "optional": true, + "peer": true + }, + "@react-native/babel-plugin-codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", + "optional": true, + "peer": true, + "requires": { + "@react-native/codegen": "0.74.87" + } + }, + "@react-native/babel-preset": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.87", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + } + }, + "@react-native/codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", + "optional": true, + "peer": true, + "requires": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + } + }, + "@react-native/community-cli-plugin": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.75.2.tgz", + "integrity": "sha512-/tz0bzVja4FU0aAimzzQ7iYR43peaD6pzksArdrrGhlm8OvFYAQPOYSNeIQVMSarwnkNeg1naFKaeYf1o3++yA==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-server-api": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "@react-native/dev-middleware": "0.75.2", + "@react-native/metro-babel-transformer": "0.75.2", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "querystring": "^0.2.1", + "readline": "^1.3.0" + }, + "dependencies": { + "@react-native-community/cli-debugger-ui": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0-alpha.11.tgz", + "integrity": "sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A==", + "optional": true, + "peer": true, + "requires": { + "serve-static": "^1.13.1" + } + }, + "@react-native-community/cli-server-api": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-14.0.0-alpha.11.tgz", + "integrity": "sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg==", + "optional": true, + "peer": true, + "requires": { + "@react-native-community/cli-debugger-ui": "14.0.0-alpha.11", + "@react-native-community/cli-tools": "14.0.0-alpha.11", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + } + }, + "@react-native-community/cli-tools": { + "version": "14.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-14.0.0-alpha.11.tgz", + "integrity": "sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w==", + "optional": true, + "peer": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "@react-native/debugger-frontend": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.75.2.tgz", + "integrity": "sha512-qIC6mrlG8RQOPaYLZQiJwqnPchAVGnHWcVDeQxPMPLkM/D5+PC8tuKWYOwgLcEau3RZlgz7QQNk31Qj2/OJG6Q==", + "optional": true, + "peer": true + }, + "@react-native/dev-middleware": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.75.2.tgz", + "integrity": "sha512-fTC5m2uVjYp1XPaIJBFgscnQjPdGVsl96z/RfLgXDq0HBffyqbg29ttx6yTCx7lIa9Gdvf6nKQom+e+Oa4izSw==", + "optional": true, + "peer": true, + "requires": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.75.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "ws": "^6.2.2" + }, + "dependencies": { + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "optional": true, + "peer": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + } + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true, + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true, + "peer": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "optional": true, + "peer": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "optional": true, + "peer": true + } + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "optional": true, + "peer": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "optional": true, + "peer": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "@react-native/debugger-frontend": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz", + "integrity": "sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==", + "optional": true, + "peer": true + }, + "@react-native/dev-middleware": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz", + "integrity": "sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==", + "optional": true, + "peer": true, + "requires": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.74.85", + "@rnx-kit/chromium-edge-launcher": "^1.0.0", + "chrome-launcher": "^0.15.2", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "optional": true, + "peer": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "@react-native/gradle-plugin": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.75.2.tgz", + "integrity": "sha512-AELeAOCZi3B2vE6SeN+mjpZjjqzqa76yfFBB3L3f3NWiu4dm/YClTGOj+5IVRRgbt8LDuRImhDoaj7ukheXr4Q==", + "optional": true, + "peer": true + }, + "@react-native/js-polyfills": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.75.2.tgz", + "integrity": "sha512-AtLd3mbiE+FXK2Ru3l2NFOXDhUvzdUsCP4qspUw0haVaO/9xzV97RVD2zz0lur2f/LmZqQ2+KXyYzr7048b5iw==", + "optional": true, + "peer": true + }, + "@react-native/metro-babel-transformer": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.2.tgz", + "integrity": "sha512-EygglCCuOub2sZ00CSIiEekCXoGL2XbOC6ssOB47M55QKvhdPG/0WBQXvmOmiN42uZgJK99Lj749v4rB0PlPIQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.75.2", + "hermes-parser": "0.22.0", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "@react-native/babel-plugin-codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.2.tgz", + "integrity": "sha512-BIKVh2ZJPkzluUGgCNgpoh6NTHgX8j04FCS0Z/rTmRJ66hir/EUBl8frMFKrOy/6i4VvZEltOWB5eWfHe1AYgw==", + "optional": true, + "peer": true, + "requires": { + "@react-native/codegen": "0.75.2" + } + }, + "@react-native/babel-preset": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.75.2.tgz", + "integrity": "sha512-mprpsas+WdCEMjQZnbDiAC4KKRmmLbMB+o/v4mDqKlH4Mcm7RdtP5t80MZGOVCHlceNp1uEIpXywx69DNwgbgg==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.20.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.75.2", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + } + }, + "@react-native/codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.75.2.tgz", + "integrity": "sha512-OkWdbtO2jTkfOXfj3ibIL27rM6LoaEuApOByU2G8X+HS6v9U87uJVJlMIRWBDmnxODzazuHwNVA2/wAmSbucaw==", + "optional": true, + "peer": true, + "requires": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.22.0", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "hermes-estree": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.22.0.tgz", + "integrity": "sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==", + "optional": true, + "peer": true + }, + "hermes-parser": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.22.0.tgz", + "integrity": "sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==", + "optional": true, + "peer": true, + "requires": { + "hermes-estree": "0.22.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true + } + } + }, + "@react-native/normalize-colors": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.75.2.tgz", + "integrity": "sha512-nPwWJFtsqNFS/qSG9yDOiSJ64mjG7RCP4X/HXFfyWzCM1jq49h/DYBdr+c3e7AvTKGIdy0gGT3vgaRUHZFVdUQ==", + "optional": true, + "peer": true + }, + "@react-native/virtualized-lists": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.75.2.tgz", + "integrity": "sha512-pD5SVCjxc8k+JdoyQ+IlulBTEqJc3S4KUKsmv5zqbNCyETB0ZUvd4Su7bp+lLF6ALxx6KKmbGk8E3LaWEjUFFQ==", + "optional": true, + "peer": true, + "requires": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + } + }, + "@rnx-kit/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "^18.0.0", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "peer": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true + } + } + }, + "@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "optional": true, + "peer": true, + "requires": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, + "@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "devOptional": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "devOptional": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "devOptional": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "optional": true, + "peer": true + }, + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "optional": true, + "peer": true, + "requires": { + "type-detect": "4.0.8" + }, + "dependencies": { + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "optional": true, + "peer": true + } + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "optional": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@testim/chrome-version": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", + "dev": true + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/boom": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/@types/boom/-/boom-7.3.5.tgz", + "integrity": "sha512-jBS0kU2s9W2sx+ILEyO4kxqIYLllqcUXTaVrBctvGptZ+4X3TWkkgY9+AmxdMPKrgiDDdLcfsaQCTu7bniLvgw==", + "dev": true + }, + "@types/catbox": { + "version": "10.0.9", + "resolved": "https://registry.npmjs.org/@types/catbox/-/catbox-10.0.9.tgz", + "integrity": "sha512-4qXm1SmZurBMNFc/536+7gfbOlN43fWyoo4O0bdLqtpDK/cpuCYnEDou0Cl4naaMwuJ19rEwnuscR7tetGnTDA==", + "dev": true + }, + "@types/chai": { + "version": "4.3.18", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.18.tgz", + "integrity": "sha512-2UfJzigyNa8kYTKn7o4hNMPphkxtu4WTJyobK3m4FBpyj7EK5xgtPcOtxLm7Dznk/Qxr0QXn+gQbkg7mCZKdfg==", + "dev": true + }, + "@types/chai-as-promised": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz", + "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/hapi": { + "version": "18.0.14", + "resolved": "https://registry.npmjs.org/@types/hapi/-/hapi-18.0.14.tgz", + "integrity": "sha512-/AlCHpOTzHOX7WYGlQAhL75Ca5gsm0S6X7mkW6RWW06e4Eot6xPm76qGXPHagVrpfs8qTKJdysJah/Uhtr8ojw==", + "dev": true, + "requires": { + "@types/boom": "*", + "@types/catbox": "*", + "@types/iron": "*", + "@types/mimos": "*", + "@types/node": "*", + "@types/podium": "*", + "@types/shot": "*", + "joi": "^17.3.0" + } + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "@types/iron": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/iron/-/iron-5.0.5.tgz", + "integrity": "sha512-ndu2RvRJ5LWsSVF0kBMJe9qnNcFcAO9eYwzr2P4FOU6m5ypRrbdiX+d8x4GNG7lIn1mKShyQf3M08CIX4wPsEA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "optional": true, + "peer": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/jsonwebtoken": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "@types/mime-db": { + "version": "1.43.5", + "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", + "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==", + "dev": true + }, + "@types/mimos": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/mimos/-/mimos-3.0.6.tgz", + "integrity": "sha512-pQlYu/Q1e5F5lyu7ATW4J2cyPOfjhRHZgAepZlKBbHqqAjshteHtNLqBXgx7KV5GjXjPLXWUvbzWaGwmVFPaYA==", + "dev": true, + "requires": { + "@types/mime-db": "*" + } + }, + "@types/mocha": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "dev": true + }, + "@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, + "@types/nightwatch": { + "version": "2.3.31", + "resolved": "https://registry.npmjs.org/@types/nightwatch/-/nightwatch-2.3.31.tgz", + "integrity": "sha512-DqkgFUNhIEbO09RfsRZtFdr2cOP1TbtNDHp0RUKiVYG0mIEBQfYGBtNCH8UWEuCspMD3yhqBd+WeBdsTzQpfHQ==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/node": "*", + "@types/selenium-webdriver": "*", + "devtools-protocol": "^0.0.1025565" + } + }, + "@types/node": { + "version": "18.19.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz", + "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==", + "devOptional": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/podium": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/podium/-/podium-1.0.4.tgz", + "integrity": "sha512-HuG5/hRHs9PxuXXlNFXPy7mHMnBD6Z4riED2SFGwjs+RcszJUkxLgYHQpoiDpYrhLv7sHk9WDyswybD6aNYkig==", + "dev": true + }, + "@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "4.1.25", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.25.tgz", + "integrity": "sha512-Jnlg7h7WDq4k8N2p/zp1ax6qizvU9Pn37I/HR/KX8k5TIU1wfUAuBy8CA6x8drAqa9PY3kYykmmyNHU4tX91LQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/ws": "*" + } + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "requires": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "@types/shot": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.5.tgz", + "integrity": "sha512-4wiGdy1sXfpcFgF1VAouUaSl6zjWn0v2NarNgviAJYm3BeiODywERnRtIC5YtNIbfh3UfShfCRD9yyeWAD7R0w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "optional": true, + "peer": true + }, + "@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "optional": true, + "peer": true + }, + "@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "@unimodules/core": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-7.1.2.tgz", + "integrity": "sha512-lY+e2TAFuebD3vshHMIRqru3X4+k7Xkba4Wa7QsDBd+ex4c4N2dHAO61E2SrGD9+TRBD8w/o7mzK6ljbqRnbyg==", + "optional": true, + "requires": { + "compare-versions": "^3.4.0" + } + }, + "@unimodules/react-native-adapter": { + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@unimodules/react-native-adapter/-/react-native-adapter-6.3.9.tgz", + "integrity": "sha512-i9/9Si4AQ8awls+YGAKkByFbeAsOPgUNeLoYeh2SQ3ddjxJ5ZJDtq/I74clDnpDcn8zS9pYlcDJ9fgVJa39Glw==", + "optional": true, + "requires": { + "expo-modules-autolinking": "^0.0.3", + "invariant": "^2.2.4" + } + }, + "@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", + "optional": true, + "peer": true, + "requires": { + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + } + }, + "@urql/exchange-retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", + "optional": true, + "peer": true, + "requires": { + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + } + }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "requires": {} + }, + "@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "optional": true, + "peer": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "peer": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "devOptional": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "devOptional": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "requires": { + "acorn": "^8.11.0" + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "optional": true, + "peer": true + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "optional": true, + "peer": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "optional": true, + "peer": true + } + } + }, + "ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "optional": true, + "peer": true, + "requires": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "devOptional": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dev": true, + "requires": { + "entities": "^2.2.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "optional": true, + "peer": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "devOptional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "optional": true, + "peer": true + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "application-config-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==", + "optional": true, + "peer": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "optional": true, + "peer": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "devOptional": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "devOptional": true + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "optional": true, + "peer": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "optional": true, + "peer": true + }, + "asmcrypto.js": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/asmcrypto.js/-/asmcrypto.js-0.22.0.tgz", + "integrity": "sha512-usgMoyXjMbx/ZPdzTSXExhMPur2FTdz/Vo5PVx2gIaBcdAAJNOFlsdgqveM8Cff7W0v+xrf9BwjOV26JSAF9qA==" + }, + "asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "requires": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.0.1" + } + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "optional": true, + "peer": true + }, + "async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "optional": true, + "peer": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "devOptional": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "optional": true + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "optional": true, + "peer": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true + }, + "axios": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "b64-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/b64-lite/-/b64-lite-1.4.0.tgz", + "integrity": "sha512-aHe97M7DXt+dkpa8fHlCcm1CnskAHrJqEfMI0KN7dwqlzml/aUe1AGt6lk51HzrSfVD67xOso84sOpr+0wIe2w==", + "requires": { + "base-64": "^0.1.0" + } + }, + "b64u-lite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/b64u-lite/-/b64u-lite-1.1.0.tgz", + "integrity": "sha512-929qWGDVCRph7gQVTC6koHqQIpF4vtVaSbwLltFQo44B1bYUquALswZdBKFfrJCPEnsCOvWkJsPdQYZ/Ukhw8A==", + "requires": { + "b64-lite": "^1.4.0" + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "optional": true, + "peer": true, + "requires": {} + }, + "babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "requires": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "requires": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + } + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "requires": { + "find-up": "^6.3.0" + } + }, + "yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "devOptional": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "devOptional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "devOptional": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + } + }, + "babel-plugin-react-compiler": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0.tgz", + "integrity": "sha512-Kigl0V36a/6hLVH7+CCe1CCtU3mFBqBd829V//VtuG7I/pyq+B2QZJqOefd63snQmdfCryNhO9XW1FbGPBvYDA==", + "optional": true, + "peer": true + }, + "babel-plugin-react-native-web": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.12.tgz", + "integrity": "sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w==", + "optional": true, + "peer": true + }, + "babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "babel-preset-expo": { + "version": "11.0.14", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.14.tgz", + "integrity": "sha512-4BVYR0Sc2sSNxYTiE/OLSnPiOp+weFNy8eV+hX3aD6YAIbBnw+VubKRWqJV/sOJauzOLz0SgYAYyFciYMqizRA==", + "optional": true, + "peer": true, + "requires": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.74.87", + "babel-plugin-react-compiler": "^0.0.0-experimental-592953e-20240517", + "babel-plugin-react-native-web": "~0.19.10", + "react-refresh": "^0.14.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true + }, + "base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "devOptional": true + }, + "basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true + }, + "better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "optional": true, + "peer": true, + "requires": { + "open": "^8.0.4" + } + }, + "big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "optional": true, + "peer": true + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "devOptional": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "devOptional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==", + "optional": true, + "peer": true, + "requires": { + "stream-buffers": "~2.2.0" + } + }, + "bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "optional": true, + "peer": true, + "requires": { + "big-integer": "1.6.x" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "devOptional": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "devOptional": true, + "requires": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "optional": true, + "peer": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "devOptional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "optional": true, + "peer": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "optional": true, + "peer": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "optional": true, + "peer": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "optional": true, + "peer": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "optional": true, + "peer": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "optional": true, + "peer": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "optional": true, + "peer": true + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "optional": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "optional": true, + "peer": true + } + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "devOptional": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "optional": true, + "peer": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "optional": true, + "peer": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "optional": true, + "peer": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "devOptional": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "devOptional": true + }, + "caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "devOptional": true + }, + "chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chai-nightwatch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.5.3.tgz", + "integrity": "sha512-38ixH/mqpY6IwnZkz6xPqx8aB5/KVR+j6VPugcir3EGOsphnWXrPH/mUt8Jp+ninL6ghY0AaJDQ10hSfCPGy/g==", + "dev": true, + "requires": { + "assertion-error": "1.1.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "devOptional": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "devOptional": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "devOptional": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "optional": true, + "peer": true + }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "^3.0.3", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true, + "peer": true + }, + "chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "peer": true + } + } + }, + "chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true + }, + "chromedriver": { + "version": "127.0.3", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-127.0.3.tgz", + "integrity": "sha512-trUHkFt0n7jGzNOgkO1srOJfz50kKyAGJ016PyV0hrtyKNIGnOC9r3Jlssz19UoEjSzI/1g2shEiIFtDbBYVaw==", + "dev": true, + "requires": { + "@testim/chrome-version": "^1.1.4", + "axios": "^1.7.4", + "compare-versions": "^6.1.0", + "extract-zip": "^2.0.1", + "proxy-agent": "^6.4.0", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.2" + }, + "dependencies": { + "compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true + } + } + }, + "chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true, + "peer": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true + } + } + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "optional": true, + "peer": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "optional": true, + "peer": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "devOptional": true + }, + "cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "optional": true, + "peer": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "devOptional": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "devOptional": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "devOptional": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "optional": true, + "peer": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "devOptional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "optional": true, + "peer": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "devOptional": true + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "optional": true + }, + "component-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz", + "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==", + "optional": true, + "peer": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "peer": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "optional": true, + "peer": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "optional": true, + "peer": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true, + "peer": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "optional": true, + "peer": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "optional": true, + "peer": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "optional": true, + "peer": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "optional": true, + "peer": true + } + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==" + }, + "core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "devOptional": true, + "requires": { + "browserslist": "^4.23.3" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "devOptional": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "optional": true, + "peer": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "optional": true, + "peer": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "optional": true, + "peer": true + } + } + }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "devOptional": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "optional": true, + "peer": true + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true, + "peer": true + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==", + "optional": true, + "peer": true + }, + "data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + } + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "optional": true, + "peer": true + }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "devOptional": true + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true, + "peer": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "optional": true, + "peer": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "optional": true, + "peer": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "devOptional": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "devOptional": true + } + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "devOptional": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "devOptional": true + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "optional": true, + "peer": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "dependencies": { + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + } + } + }, + "del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "optional": true, + "peer": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "optional": true, + "peer": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "devOptional": true + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", + "optional": true, + "peer": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "devOptional": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "devOptional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "optional": true, + "peer": true + }, + "devtools-protocol": { + "version": "0.0.1025565", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1025565.tgz", + "integrity": "sha512-0s5sbGQR/EfYQhd8EpZgphpndsv+CufTlaeUyA6vYXCA0H5kMAsHCS/cHtUFWoKJCO125hpoKicQCfpxRj4oqw==", + "dev": true + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "devOptional": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "optional": true, + "peer": true + }, + "dotenv-expand": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "optional": true, + "peer": true, + "requires": { + "dotenv": "^16.4.4" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "optional": true, + "peer": true + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "devOptional": true + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "devOptional": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "devOptional": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "devOptional": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "devOptional": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "optional": true, + "peer": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, + "peer": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", + "optional": true, + "peer": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "optional": true, + "peer": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "optional": true, + "peer": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "optional": true, + "peer": true, + "requires": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + } + }, + "es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "optional": true, + "peer": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "devOptional": true, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "devOptional": true + }, + "es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "optional": true, + "peer": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "optional": true, + "peer": true, + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "optional": true, + "peer": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "devOptional": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "devOptional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "devOptional": true + }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "devOptional": true + }, + "esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "devOptional": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "devOptional": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true, + "peer": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", + "optional": true, + "peer": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "optional": true, + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "optional": true, + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "optional": true, + "peer": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "optional": true, + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "optional": true, + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "expo": { + "version": "51.0.31", + "resolved": "https://registry.npmjs.org/expo/-/expo-51.0.31.tgz", + "integrity": "sha512-YiUNcxzSkQ0jlKW+e8F81KnZfAhCugEZI9VYmuIsFONHivtiYIADHdcFvUWnexUEdgPQDkgWw85XBnIbzIZ39Q==", + "optional": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.18.29", + "@expo/config": "9.0.3", + "@expo/config-plugins": "8.0.8", + "@expo/metro-config": "0.18.11", + "@expo/vector-icons": "^14.0.0", + "babel-preset-expo": "~11.0.14", + "expo-asset": "~10.0.10", + "expo-file-system": "~17.0.1", + "expo-font": "~12.0.9", + "expo-keep-awake": "~13.0.2", + "expo-modules-autolinking": "1.11.2", + "expo-modules-core": "1.12.23", + "fbemitter": "^3.0.0", + "whatwg-url-without-unicode": "8.0.0-3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true, + "peer": true + }, + "expo-modules-autolinking": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.2.tgz", + "integrity": "sha512-fdcaNO8ucHA3yLNY52ZUENBcAG7KEx8QyMmnVNavO1JVBGRMZG8JyVcbrhYQDtVtpxkbai5YzwvLutINvbDZDQ==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "peer": true + } + } + }, + "expo-asset": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-10.0.10.tgz", + "integrity": "sha512-0qoTIihB79k+wGus9wy0JMKq7DdenziVx3iUkGvMAy2azscSgWH6bd2gJ9CGnhC6JRd3qTMFBL0ou/fx7WZl7A==", + "optional": true, + "peer": true, + "requires": { + "expo-constants": "~16.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3" + } + }, + "expo-constants": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-16.0.2.tgz", + "integrity": "sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ==", + "optional": true, + "peer": true, + "requires": { + "@expo/config": "~9.0.0", + "@expo/env": "~0.3.0" + } + }, + "expo-file-system": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-17.0.1.tgz", + "integrity": "sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw==", + "optional": true, + "peer": true, + "requires": {} + }, + "expo-font": { + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-12.0.9.tgz", + "integrity": "sha512-seTCyf0tbgkAnp3ZI9ZfK9QVtURQUgFnuj+GuJ5TSnN0XsOtVe1s2RxTvmMgkfuvfkzcjJ69gyRpsZS1cC8hjw==", + "optional": true, + "peer": true, + "requires": { + "fontfaceobserver": "^2.1.0" + } + }, + "expo-keep-awake": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-13.0.2.tgz", + "integrity": "sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw==", + "optional": true, + "peer": true, + "requires": {} + }, + "expo-modules-autolinking": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.0.3.tgz", + "integrity": "sha512-azkCRYj/DxbK4udDuDxA9beYzQTwpJ5a9QA0bBgha2jHtWdFGF4ZZWSY+zNA5mtU3KqzYt8jWHfoqgSvKyu1Aw==", + "optional": true, + "requires": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "~5.0.0", + "fs-extra": "^9.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true + } + } + }, + "expo-modules-core": { + "version": "1.12.23", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.23.tgz", + "integrity": "sha512-NYp/rWhKW6zlqNdC8/r+FckzlAGWX0IJEjOxwYHuYeRUn/vnKksb43G4E3jcaQEZgmWlKxK4LpxL3gr7m0RJFA==", + "optional": true, + "peer": true, + "requires": { + "invariant": "^2.2.4" + } + }, + "expo-random": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-14.0.1.tgz", + "integrity": "sha512-gX2mtR9o+WelX21YizXUCD/y+a4ZL+RDthDmFkHxaYbdzjSYTn8u/igoje/l3WEO+/RYspmqUFa8w/ckNbt6Vg==", + "optional": true, + "requires": { + "base64-js": "^1.3.0" + } + }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "optional": true, + "peer": true + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "devOptional": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, + "fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "optional": true, + "peer": true, + "requires": { + "strnum": "^1.0.5" + } + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "devOptional": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "optional": true, + "peer": true, + "requires": { + "bser": "2.1.1" + } + }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "optional": true, + "peer": true, + "requires": { + "fbjs": "^3.0.0" + } + }, + "fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "optional": true, + "peer": true, + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "optional": true, + "peer": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==", + "optional": true, + "peer": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "devOptional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + } + } + }, + "find-rc": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/find-rc/-/find-rc-4.0.2.tgz", + "integrity": "sha512-u7OCIGW5B2lkPHnE8Gim+KlEdQ6pbvUAwSB/sD+CW3Sy3saKNtZlr0I06h68WX4Dgbnvs76zP5QXaPKQY7Kt0Q==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "devOptional": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "optional": true, + "peer": true, + "requires": { + "micromatch": "^4.0.2" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "optional": true, + "peer": true + }, + "flow-parser": { + "version": "0.244.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.244.0.tgz", + "integrity": "sha512-Dkc88m5k8bx1VvHTO9HEJ7tvMcSb3Zvcv1PY4OHK7pHdtdY2aUjhmPy6vpjVJ2uUUOIybRlb91sXE8g4doChtA==", + "optional": true, + "peer": true + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true + }, + "fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "optional": true, + "peer": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "optional": true, + "peer": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "optional": true, + "peer": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "devOptional": true + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "devOptional": true + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "optional": true, + "peer": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "devOptional": true + }, + "get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "devOptional": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "optional": true, + "peer": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "optional": true, + "peer": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "devOptional": true + }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "optional": true, + "peer": true, + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "devOptional": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "devOptional": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "optional": true, + "peer": true + }, + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "devOptional": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "devOptional": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "devOptional": true + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "optional": true, + "peer": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "devOptional": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", + "optional": true, + "peer": true + }, + "hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", + "optional": true, + "peer": true, + "requires": { + "hermes-estree": "0.19.1" + } + }, + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "optional": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + } + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "devOptional": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "devOptional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "optional": true, + "peer": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "devOptional": true + }, + "ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "devOptional": true + }, + "image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "optional": true, + "peer": true, + "requires": { + "queue": "6.0.2" + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "devOptional": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "devOptional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "devOptional": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true, + "peer": true + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "optional": true, + "peer": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "optional": true, + "peer": true, + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "optional": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + } + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "optional": true, + "peer": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "devOptional": true + }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "optional": true, + "peer": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "optional": true, + "peer": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true, + "peer": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "optional": true, + "peer": true + }, + "is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "devOptional": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "optional": true, + "peer": true, + "requires": { + "is-typed-array": "^1.1.13" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "optional": true, + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "optional": true, + "peer": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "devOptional": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "devOptional": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "optional": true, + "peer": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "devOptional": true + }, + "is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", + "optional": true, + "peer": true, + "requires": { + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "optional": true, + "peer": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "optional": true, + "peer": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "optional": true, + "peer": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "devOptional": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "optional": true, + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "optional": true, + "peer": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "devOptional": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "devOptional": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "optional": true, + "peer": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "optional": true, + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "optional": true, + "peer": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "optional": true, + "peer": true, + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "devOptional": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", + "optional": true, + "peer": true, + "requires": { + "is-invalid-path": "^0.1.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "devOptional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "dependencies": { + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true + } + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "devOptional": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "devOptional": true + }, + "isomorphic-webcrypto": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/isomorphic-webcrypto/-/isomorphic-webcrypto-2.3.8.tgz", + "integrity": "sha512-XddQSI0WYlSCjxtm1AI8kWQOulf7hAN3k3DclF1sxDJZqOe0pcsOt675zvWW91cZH9hYs3nlA3Ev8QK5i80SxQ==", + "requires": { + "@peculiar/webcrypto": "^1.0.22", + "@unimodules/core": "*", + "@unimodules/react-native-adapter": "*", + "asmcrypto.js": "^0.22.0", + "b64-lite": "^1.3.1", + "b64u-lite": "^1.0.1", + "expo-random": "*", + "msrcrypto": "^1.5.6", + "react-native-securerandom": "^0.1.1", + "str2buf": "^1.3.0", + "webcrypto-shim": "^0.1.4" + } + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "requires": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "optional": true, + "peer": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "optional": true, + "peer": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "optional": true, + "peer": true + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "optional": true, + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "optional": true, + "peer": true + }, + "joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "devOptional": true, + "requires": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==", + "optional": true, + "peer": true + }, + "jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==" + }, + "js-base64": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "devOptional": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "devOptional": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", + "optional": true, + "peer": true + }, + "jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "optional": true, + "peer": true + }, + "jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jsdom": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz", + "integrity": "sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==", + "dev": true, + "requires": { + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "cssstyle": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "dev": true, + "requires": { + "rrweb-cssom": "^0.6.0" + }, + "dependencies": { + "rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + } + } + }, + "data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "requires": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + } + }, + "html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^3.1.1" + } + }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "requires": { + "punycode": "^2.3.1" + } + }, + "whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true + }, + "whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "requires": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "devOptional": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "optional": true, + "peer": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "devOptional": true + }, + "json-schema-deref-sync": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", + "optional": true, + "peer": true, + "requires": { + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" + }, + "dependencies": { + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "optional": true, + "peer": true, + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + } + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "devOptional": true + }, + "jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "devOptional": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "optional": true, + "peer": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "optional": true, + "peer": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "optional": true, + "peer": true, + "requires": { + "debug": "^2.6.9", + "marky": "^1.2.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + } + } + }, + "lightningcss": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", + "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", + "optional": true, + "peer": true, + "requires": { + "detect-libc": "^1.0.3", + "lightningcss-darwin-arm64": "1.19.0", + "lightningcss-darwin-x64": "1.19.0", + "lightningcss-linux-arm-gnueabihf": "1.19.0", + "lightningcss-linux-arm64-gnu": "1.19.0", + "lightningcss-linux-arm64-musl": "1.19.0", + "lightningcss-linux-x64-gnu": "1.19.0", + "lightningcss-linux-x64-musl": "1.19.0", + "lightningcss-win32-x64-msvc": "1.19.0" + } + }, + "lightningcss-darwin-arm64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", + "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", + "optional": true, + "peer": true + }, + "lightningcss-darwin-x64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", + "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", + "optional": true, + "peer": true + }, + "lightningcss-linux-arm-gnueabihf": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", + "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", + "optional": true, + "peer": true + }, + "lightningcss-linux-arm64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", + "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", + "optional": true, + "peer": true + }, + "lightningcss-linux-arm64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", + "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", + "optional": true, + "peer": true + }, + "lightningcss-linux-x64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", + "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", + "optional": true, + "peer": true + }, + "lightningcss-linux-x64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", + "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", + "optional": true, + "peer": true + }, + "lightningcss-win32-x64-msvc": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", + "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", + "optional": true, + "peer": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "optional": true, + "peer": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "devOptional": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "optional": true, + "peer": true + }, + "lodash._arraycopy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha512-RHShTDnPKP7aWxlvXKiDT6IX2jCs6YZLCtNhOru/OX2Q/tzX295vVBK5oX1ECtN+2r86S0Ogy8ykP1sgCZAN0A==", + "dev": true + }, + "lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha512-Mn7HidOVcl3mkQtbPsuKR0Fj0N6Q6DQB77CtYncZcJc0bx5qv2q4Gl6a0LC1AN+GSxpnBDNnK3CKEm9XNA4zqQ==", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ==", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._baseclone": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", + "integrity": "sha512-1K0dntf2dFQ5my0WoGKkduewR6+pTNaqX03kvs45y7G5bzl4B3kTR4hDfJIc2aCQDeLyQHhS280tc814m1QC1Q==", + "dev": true, + "requires": { + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._baseassign": "^3.0.0", + "lodash._basefor": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha512-6bc3b8grkpMgDcVJv9JYZAk/mHgcqMljzm7OsbmcE2FGUMmmLQTPHlh/dFqR8LA0GQ7z4K67JSotVKu5058v1A==", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "lodash.clone": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", + "integrity": "sha512-yVYPpFTdZDCLG2p07gVRTvcwN5X04oj2hu4gG6r0fer58JA08wAVxXzWM+CmmxO2bzOH8u8BkZTZqgX6juVF7A==", + "dev": true, + "requires": { + "lodash._baseclone": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "devOptional": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "optional": true, + "peer": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "devOptional": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "optional": true, + "peer": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "optional": true, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "optional": true, + "peer": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "optional": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "optional": true, + "peer": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "optional": true, + "peer": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "optional": true, + "peer": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "optional": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "devOptional": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "devOptional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "devOptional": true + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "optional": true, + "peer": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true + }, + "marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "optional": true, + "peer": true + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "optional": true, + "peer": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "optional": true, + "peer": true, + "requires": { + "buffer-alloc": "^1.1.0" + } + }, + "md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==", + "optional": true, + "peer": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "optional": true, + "peer": true + }, + "memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==", + "optional": true, + "peer": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "devOptional": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "devOptional": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "metro": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.10.tgz", + "integrity": "sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==", + "optional": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.23.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-config": "0.80.10", + "metro-core": "0.80.10", + "metro-file-map": "0.80.10", + "metro-resolver": "0.80.10", + "metro-runtime": "0.80.10", + "metro-source-map": "0.80.10", + "metro-symbolicate": "0.80.10", + "metro-transform-plugins": "0.80.10", + "metro-transform-worker": "0.80.10", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "optional": true, + "peer": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "hermes-estree": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz", + "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==", + "optional": true, + "peer": true + }, + "hermes-parser": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz", + "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==", + "optional": true, + "peer": true, + "requires": { + "hermes-estree": "0.23.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "optional": true, + "peer": true, + "requires": {} + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true + } + } + }, + "metro-babel-transformer": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.10.tgz", + "integrity": "sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.23.0", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "hermes-estree": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz", + "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==", + "optional": true, + "peer": true + }, + "hermes-parser": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz", + "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==", + "optional": true, + "peer": true, + "requires": { + "hermes-estree": "0.23.0" + } + } + } + }, + "metro-cache": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.10.tgz", + "integrity": "sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==", + "optional": true, + "peer": true, + "requires": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "metro-core": "0.80.10" + } + }, + "metro-cache-key": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.10.tgz", + "integrity": "sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==", + "optional": true, + "peer": true, + "requires": { + "flow-enums-runtime": "^0.0.6" + } + }, + "metro-config": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.10.tgz", + "integrity": "sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==", + "optional": true, + "peer": true, + "requires": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.6.3", + "metro": "0.80.10", + "metro-cache": "0.80.10", + "metro-core": "0.80.10", + "metro-runtime": "0.80.10" + } + }, + "metro-core": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.10.tgz", + "integrity": "sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==", + "optional": true, + "peer": true, + "requires": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.10" + } + }, + "metro-file-map": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.10.tgz", + "integrity": "sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==", + "optional": true, + "peer": true, + "requires": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "optional": true, + "peer": true + } + } + }, + "metro-minify-terser": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.10.tgz", + "integrity": "sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==", + "optional": true, + "peer": true, + "requires": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + } + }, + "metro-resolver": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.10.tgz", + "integrity": "sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==", + "optional": true, + "peer": true, + "requires": { + "flow-enums-runtime": "^0.0.6" + } + }, + "metro-runtime": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.10.tgz", + "integrity": "sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==", + "optional": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.0.0", + "flow-enums-runtime": "^0.0.6" + } + }, + "metro-source-map": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.10.tgz", + "integrity": "sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==", + "optional": true, + "peer": true, + "requires": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.10", + "nullthrows": "^1.1.1", + "ob1": "0.80.10", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "optional": true, + "peer": true + } + } + }, + "metro-symbolicate": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.10.tgz", + "integrity": "sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==", + "optional": true, + "peer": true, + "requires": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.80.10", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "optional": true, + "peer": true + } + } + }, + "metro-transform-plugins": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.10.tgz", + "integrity": "sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + } + }, + "metro-transform-worker": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.10.tgz", + "integrity": "sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "metro": "0.80.10", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-minify-terser": "0.80.10", + "metro-source-map": "0.80.10", + "metro-transform-plugins": "0.80.10", + "nullthrows": "^1.1.1" + } + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "devOptional": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "optional": true, + "peer": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "devOptional": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "devOptional": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "optional": true, + "peer": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "devOptional": true + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "optional": true, + "peer": true + }, + "minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "peer": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mo-walk": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mo-walk/-/mo-walk-1.2.0.tgz", + "integrity": "sha512-rat9d/EMjr08N56/u2MwMaykb/bGuByYmTgG8eJIJbUxPtSuoW76el6Tm1+cUqY0lmhuss4IIO3x2lWLojmRTA==", + "dev": true, + "requires": { + "pkg-up": "3.x.x" + } + }, + "mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "^3.0.3", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "msrcrypto": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/msrcrypto/-/msrcrypto-1.5.8.tgz", + "integrity": "sha512-ujZ0TRuozHKKm6eGbKHfXef7f+esIhEckmThVnz7RNyiOJd7a6MXj2JGBoL9cnPDW+JMG16MoTUh5X+XXjI66Q==" + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "optional": true, + "peer": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "devOptional": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true + }, + "nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "optional": true, + "peer": true + }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "optional": true, + "peer": true + }, + "nightwatch": { + "version": "2.6.25", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.25.tgz", + "integrity": "sha512-aYc5eA6M/iADdbKbD6dMHlhUsaJm/Y4/VOtSHSC23nimGTXMUKbe1Bb14Iz3/SNyz2joHOkpxaDIPIAZCSlOiQ==", + "dev": true, + "requires": { + "@nightwatch/chai": "5.0.2", + "@nightwatch/html-reporter-template": "0.2.1", + "ansi-to-html": "0.7.2", + "assertion-error": "1.1.0", + "boxen": "5.1.2", + "chai-nightwatch": "0.5.3", + "ci-info": "3.3.0", + "cli-table3": "^0.6.3", + "didyoumean": "1.2.2", + "dotenv": "10.0.0", + "ejs": "3.1.8", + "envinfo": "7.8.1", + "fs-extra": "^10.1.0", + "glob": "^7.2.3", + "jsdom": "19.0.0", + "lodash.clone": "3.0.3", + "lodash.defaultsdeep": "4.6.1", + "lodash.escape": "4.0.1", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "minimatch": "3.1.2", + "minimist": "1.2.6", + "mocha": "9.2.2", + "nightwatch-axe-verbose": "^2.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "selenium-webdriver": "4.6.1", + "semver": "7.3.5", + "stacktrace-parser": "0.1.10", + "strip-ansi": "6.0.1", + "untildify": "^4.0.0", + "uuid": "8.3.2" + }, + "dependencies": { + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "nightwatch-axe-verbose": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.3.1.tgz", + "integrity": "sha512-C6N95bwPHsRnv04eVIwJ6w5m6X1+Pddvo6nzpzOHQlO0j+pYRVU7zaQmFUJ0L4cqeUxReNEXyTUg/R9WWfHk7w==", + "dev": true, + "requires": { + "axe-core": "^4.9.1" + } + }, + "nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "optional": true, + "peer": true + }, + "node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "optional": true, + "peer": true + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "optional": true, + "peer": true, + "requires": { + "minimatch": "^3.0.2" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "optional": true, + "peer": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "optional": true, + "peer": true + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "devOptional": true + }, + "node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "optional": true, + "peer": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true + }, + "npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "optional": true, + "peer": true, + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "peer": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "optional": true, + "peer": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "optional": true, + "peer": true + } + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "optional": true, + "peer": true + }, + "nwsapi": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "dev": true + }, + "nyc": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.0.0.tgz", + "integrity": "sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "ob1": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.10.tgz", + "integrity": "sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==", + "optional": true, + "peer": true, + "requires": { + "flow-enums-runtime": "^0.0.6" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "devOptional": true + }, + "object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "devOptional": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true, + "peer": true + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "devOptional": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "optional": true, + "peer": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "devOptional": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "optional": true, + "peer": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "optional": true, + "peer": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "optional": true, + "peer": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "optional": true, + "peer": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "optional": true, + "peer": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "peer": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "optional": true, + "peer": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "devOptional": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "peer": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "devOptional": true + }, + "pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "dev": true, + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + } + } + }, + "pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "requires": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + } + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "optional": true, + "peer": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "devOptional": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "optional": true, + "peer": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "optional": true, + "peer": true, + "requires": { + "pngjs": "^3.3.0" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + }, + "dependencies": { + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "devOptional": true + }, + "password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "optional": true, + "peer": true, + "requires": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "devOptional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "devOptional": true + }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "optional": true, + "peer": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "optional": true, + "peer": true + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "devOptional": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "devOptional": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "devOptional": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "optional": true, + "peer": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "optional": true, + "peer": true, + "requires": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "dependencies": { + "@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "optional": true, + "peer": true + }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "optional": true, + "peer": true + } + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "optional": true, + "peer": true + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "optional": true, + "peer": true + }, + "postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "optional": true, + "peer": true, + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "dependencies": { + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "optional": true, + "peer": true + } + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "optional": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "devOptional": true + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "optional": true, + "peer": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "optional": true, + "peer": true, + "requires": { + "asap": "~2.0.3" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "optional": true, + "peer": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "optional": true, + "peer": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "devOptional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "devOptional": true + }, + "pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "requires": { + "tslib": "^2.6.1" + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + }, + "qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "optional": true, + "peer": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "optional": true, + "peer": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "optional": true, + "peer": true, + "requires": { + "inherits": "~2.0.3" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "devOptional": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "devOptional": true + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "peer": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "optional": true, + "peer": true + } + } + }, + "react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "optional": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-devtools-core": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.1.tgz", + "integrity": "sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==", + "optional": true, + "peer": true, + "requires": { + "shell-quote": "^1.6.1", + "ws": "^7" + }, + "dependencies": { + "ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "optional": true, + "peer": true, + "requires": {} + } + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "optional": true, + "peer": true + }, + "react-native": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.75.2.tgz", + "integrity": "sha512-pP+Yswd/EurzAlKizytRrid9LJaPJzuNldc+o5t01md2VLHym8V7FWH2z9omFKtFTer8ERg0fAhG1fpd0Qq6bQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "14.0.0", + "@react-native-community/cli-platform-android": "14.0.0", + "@react-native-community/cli-platform-ios": "14.0.0", + "@react-native/assets-registry": "0.75.2", + "@react-native/codegen": "0.75.2", + "@react-native/community-cli-plugin": "0.75.2", + "@react-native/gradle-plugin": "0.75.2", + "@react-native/js-polyfills": "0.75.2", + "@react-native/normalize-colors": "0.75.2", + "@react-native/virtualized-lists": "0.75.2", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^5.3.1", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "dependencies": { + "@react-native/codegen": { + "version": "0.75.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.75.2.tgz", + "integrity": "sha512-OkWdbtO2jTkfOXfj3ibIL27rM6LoaEuApOByU2G8X+HS6v9U87uJVJlMIRWBDmnxODzazuHwNVA2/wAmSbucaw==", + "optional": true, + "peer": true, + "requires": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.22.0", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "hermes-estree": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.22.0.tgz", + "integrity": "sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==", + "optional": true, + "peer": true + }, + "hermes-parser": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.22.0.tgz", + "integrity": "sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==", + "optional": true, + "peer": true, + "requires": { + "hermes-estree": "0.22.0" + } + }, + "promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "optional": true, + "peer": true, + "requires": { + "asap": "~2.0.6" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "optional": true, + "peer": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "peer": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true + } + } + }, + "react-native-securerandom": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz", + "integrity": "sha512-CozcCx0lpBLevxiXEb86kwLRalBCHNjiGPlw3P7Fi27U6ZLdfjOCNRHD1LtBKcvPvI3TvkBXB3GOtLvqaYJLGw==", + "optional": true, + "requires": { + "base64-js": "*" + } + }, + "react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "optional": true, + "peer": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "devOptional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", + "optional": true, + "peer": true + }, + "recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "optional": true, + "peer": true, + "requires": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true + } + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "devOptional": true + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "devOptional": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "devOptional": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "devOptional": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "devOptional": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "devOptional": true + } + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-slash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==", + "optional": true, + "peer": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "devOptional": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "devOptional": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "devOptional": true + }, + "requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "optional": true, + "peer": true, + "requires": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "dependencies": { + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "optional": true, + "peer": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "devOptional": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "devOptional": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "optional": true, + "peer": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "devOptional": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "devOptional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "devOptional": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "optional": true, + "peer": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "optional": true, + "peer": true + }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "optional": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "dev": true + }, + "selenium-webdriver": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", + "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", + "dev": true, + "requires": { + "jszip": "^3.10.0", + "tmp": "^0.2.1", + "ws": ">=8.7.0" + }, + "dependencies": { + "tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true + } + } + }, + "selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "optional": true, + "peer": true, + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "devOptional": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "devOptional": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "devOptional": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "devOptional": true + } + } + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "optional": true, + "peer": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "devOptional": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "devOptional": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "optional": true, + "peer": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "devOptional": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "devOptional": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "devOptional": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "devOptional": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "devOptional": true + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "optional": true, + "peer": true + }, + "shiki": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", + "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", + "dev": true, + "requires": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "5.2.0" + } + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "devOptional": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + }, + "simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "optional": true, + "peer": true, + "requires": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + }, + "dependencies": { + "bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "optional": true, + "peer": true, + "requires": { + "stream-buffers": "2.2.x" + } + }, + "bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "optional": true, + "peer": true, + "requires": { + "big-integer": "1.6.x" + } + } + } + }, + "sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "optional": true, + "peer": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "optional": true, + "peer": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "requires": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + } + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "optional": true, + "peer": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true + } + } + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + } + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "optional": true, + "peer": true, + "requires": { + "through": "2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "devOptional": true + }, + "ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "optional": true, + "peer": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "optional": true, + "peer": true + } + } + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "optional": true, + "peer": true + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "devOptional": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "devOptional": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "devOptional": true + }, + "str2buf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/str2buf/-/str2buf-1.3.0.tgz", + "integrity": "sha512-xIBmHIUHYZDP4HyoXGHYNVmxlXLXDrtFHYT0eV6IOdEj3VO9ccaF1Ejl9Oq8iFjITllpT8FhaXb4KsNmw+3EuA==" + }, + "stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "optional": true, + "peer": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "devOptional": true + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true, + "peer": true + } + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "optional": true, + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "optional": true, + "peer": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "optional": true, + "peer": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true, + "peer": true + }, + "structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "optional": true, + "peer": true + }, + "sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "optional": true, + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "optional": true, + "peer": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "devOptional": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "optional": true, + "peer": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "optional": true, + "peer": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true, + "peer": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "peer": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true, + "peer": true + } + } + }, + "tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dev": true, + "requires": { + "debug": "4.3.1", + "is2": "^2.0.6" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "optional": true, + "peer": true, + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "optional": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "optional": true, + "peer": true + }, + "tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "optional": true, + "peer": true, + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true, + "peer": true + }, + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "optional": true, + "peer": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "optional": true, + "peer": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "devOptional": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "dependencies": { + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "devOptional": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "optional": true, + "peer": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "optional": true, + "peer": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "optional": true, + "peer": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "optional": true, + "peer": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "peer": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "optional": true, + "peer": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "optional": true, + "peer": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "devOptional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "devOptional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "devOptional": true + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true + }, + "tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "traverse": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "optional": true, + "peer": true, + "requires": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + } + }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "optional": true, + "peer": true + }, + "ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "optional": true, + "peer": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + } + }, + "typedoc": { + "version": "0.22.18", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.18.tgz", + "integrity": "sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==", + "dev": true, + "requires": { + "glob": "^8.0.3", + "lunr": "^2.3.9", + "marked": "^4.0.16", + "minimatch": "^5.1.0", + "shiki": "^0.10.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "ua-parser-js": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz", + "integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==", + "optional": true, + "peer": true + }, + "uglify-js": { + "version": "3.19.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.2.tgz", + "integrity": "sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==", + "dev": true, + "optional": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "optional": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "devOptional": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "devOptional": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "devOptional": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "devOptional": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "devOptional": true + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "optional": true, + "peer": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "peer": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "optional": true, + "peer": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "devOptional": true + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "devOptional": true, + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==", + "optional": true, + "peer": true + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "devOptional": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "devOptional": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "devOptional": true + }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==", + "optional": true, + "peer": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "optional": true, + "peer": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "devOptional": true + }, + "vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "optional": true, + "peer": true + }, + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "requires": { + "xml-name-validator": "^5.0.0" + }, + "dependencies": { + "xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true + } + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "optional": true, + "peer": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "devOptional": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webcrypto-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", + "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "webcrypto-shim": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz", + "integrity": "sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg==" + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "dev": true, + "requires": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "requires": {} + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "requires": {} + } + } + }, + "webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "optional": true, + "peer": true + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "whatwg-url-without-unicode": { + "version": "8.0.0-3", + "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", + "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", + "optional": true, + "peer": true, + "requires": { + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "optional": true, + "peer": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "optional": true, + "peer": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "devOptional": true + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "optional": true, + "peer": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "will-call": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/will-call/-/will-call-1.0.1.tgz", + "integrity": "sha512-1hEeV8SfBYhNRc/bNXeQfyUBX8Dl9SCYME3qXh99iZP9wJcnhnlBsoBw8Y0lXVZ3YuPsoxImTzBiol1ouNR/hg==", + "dev": true + }, + "wonka": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==", + "optional": true, + "peer": true + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "devOptional": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "devOptional": true, + "requires": {} + }, + "xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "optional": true, + "peer": true, + "requires": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "dependencies": { + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "optional": true, + "peer": true + } + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "optional": true, + "peer": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "optional": true, + "peer": true + } + } + }, + "xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "optional": true, + "peer": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "optional": true, + "peer": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "devOptional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "devOptional": true + }, + "yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "optional": true, + "peer": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "devOptional": true + } + } +} diff --git a/package.json b/package.json index 0e9dc1cd..746335d6 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,99 @@ { - "name": "fhir-js-client", - "version": "0.0.1", + "name": "fhirclient", + "version": "2.5.4", "description": "JavaScript client for Fast Healthcare Interoperability Resources", - "author": "Josh Mandel ", + "author": "SMART Health IT (https://smarthealthit.org/)", + "contributors": [ + "Josh Mandel ", + "Vladimir Ignatov ", + "Dylan Phelan " + ], + "keywords": [ + "SMART", + "FHIR", + "Client" + ], + "license": "Apache-2.0", + "main": "dist/lib/entry/node.js", + "browser": "dist/lib/entry/browser.js", + "browserslist": [ + "last 2 Chrome versions", + "last 2 firefox versions", + "last 2 Edge versions", + "ie 11" + ], "dependencies": { - "btoa": "*", - "browserify": "<4.0.0", - "jquery": "*" + "abortcontroller-polyfill": "^1.5.0", + "core-js": "^3.23.4", + "cross-fetch": "^3.0.5", + "debug": "^4.1.1", + "isomorphic-webcrypto": "^2.3.8", + "jose": "^4.15.5", + "js-base64": "^3.7.2" + }, + "overrides": { + "braces": "^3.0.3", + "ip": "^1.1.9" }, "scripts": { - "test": "mocha -c -R spec" + "test-only": "lab --typescript test/*.test.ts", + "test": "nyc --cache false --reporter lcov --reporter html lab --typescript test/*.test.ts", + "pack": "webpack", + "build": "npm run clean && npm run build:module && npm run pack", + "build:dev": "webpack --watch", + "build:module": "cp src/types.d.ts dist/lib && tsc -p tsconfig.module.json && babel --env-name module -d dist/lib dist/lib", + "doc": "typedoc", + "clean": "rm -rf dist/build && rm -r dist/lib/*", + "nightwatch": "nightwatch --headless test/specs/*.js" }, "devDependencies": { - "mocha": "*", - "should": "*", - "sinon": "*", - "grunt": "~0.4.1", - "grunt-browserify": "~2.0.8", - "grunt-contrib-concat": "~0.3.0", - "grunt-contrib-clean": "~0.5.0", - "grunt-shell": "~0.3.1", - "jsdom": "*", - "grunt-curl": "~1.5.1", - "browserify-shim": "~3.4.1", - "grunt-contrib-uglify": "~0.4.0" + "@babel/cli": "^7.18.6", + "@babel/core": "^7.18.6", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@hapi/code": "^9.0.3", + "@hapi/lab": "^25.3.1", + "@types/chai": "^4.3.18", + "@types/chai-as-promised": "^7.1.5", + "@types/debug": "^4.1.5", + "@types/express": "^4.17.21", + "@types/hapi": "^18.0.3", + "@types/jsonwebtoken": "^9.0.6", + "@types/mocha": "^9.1.1", + "@types/nightwatch": "^2.3.0", + "@types/node": "^18.19.45", + "babel-loader": "^9.1.3", + "chai": "^4.5.0", + "chai-as-promised": "^7.1.1", + "chromedriver": "^127.0.3", + "cors": "^2.8.5", + "express": "^4.19.2", + "jsdom": "^25.0.0", + "jsonwebtoken": "^9.0.2", + "nightwatch": "^2.3.0", + "nyc": "^17.0.0", + "ts-loader": "^9.5.1", + "typedoc": "^0.22.13", + "typescript": "^4.6.0", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-cli": "^4.10.0", + "webpack-merge": "^5.10.0" + }, + "engines": { + "node": ">=18" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/smart-on-fhir/client-js.git" + }, + "bugs": { + "url": "https://github.com/smart-on-fhir/client-js/issues" }, - "engine": "node >= 0.6.0" + "homepage": "http://docs.smarthealthit.org/client-js/", + "types": "src/types.d.ts", + "nyc": { + "include": "src" + } } diff --git a/src/Client.ts b/src/Client.ts new file mode 100644 index 00000000..c2785f7c --- /dev/null +++ b/src/Client.ts @@ -0,0 +1,1210 @@ +import { + absolute, + debug as _debug, + getPath, + setPath, + jwtDecode, + makeArray, + request, + byCode, + byCodes, + units, + getPatientParam, + fetchConformanceStatement, + getAccessTokenExpiration, + assertJsonPatch, + assert +} from "./lib"; + +import str from "./strings"; +import { SMART_KEY, patientCompartment, fhirVersions } from "./settings"; +import HttpError from "./HttpError"; +import BrowserAdapter from "./adapters/BrowserAdapter"; +import { fhirclient } from "./types"; + +// $lab:coverage:off$ +// @ts-ignore +const { Response } = typeof FHIRCLIENT_PURE !== "undefined" ? window : require("cross-fetch"); +// $lab:coverage:on$ + +const debug = _debug.extend("client"); + +/** + * Adds patient context to requestOptions object to be used with [[Client.request]] + * @param requestOptions Can be a string URL (relative to the serviceUrl), or an + * object which will be passed to fetch() + * @param client Current FHIR client object containing patient context + * @return requestOptions object contextualized to current patient + */ +async function contextualize( + requestOptions: string | URL | fhirclient.RequestOptions, + client: Client +): Promise +{ + const base = absolute("/", client.state.serverUrl); + + async function contextualURL(_url: URL) { + const resourceType = _url.pathname.split("/").pop(); + assert(resourceType, `Invalid url "${_url}"`); + assert(patientCompartment.indexOf(resourceType) > -1, `Cannot filter "${resourceType}" resources by patient`); + const conformance = await fetchConformanceStatement(client.state.serverUrl); + const searchParam = getPatientParam(conformance, resourceType); + _url.searchParams.set(searchParam, client.patient.id as string); + return _url.href; + } + + if (typeof requestOptions == "string" || requestOptions instanceof URL) { + return { url: await contextualURL(new URL(requestOptions + "", base)) }; + } + + requestOptions.url = await contextualURL(new URL(requestOptions.url + "", base)); + return requestOptions; +} + +/** + * Gets single reference by id. Caches the result. + * @param refId + * @param cache A map to store the resolved refs + * @param client The client instance + * @param requestOptions Only signal and headers are currently used if provided + * @returns The resolved reference + * @private + */ +function getRef( + refId: string, + cache: Record, + client: Client, + requestOptions: RequestInit +): Promise { + if (!cache[refId]) { + + const { signal, headers } = requestOptions; + + // Note that we set cache[refId] immediately! When the promise is + // settled it will be updated. This is to avoid a ref being fetched + // twice because some of these requests are executed in parallel. + cache[refId] = client.request({ + url: refId, + headers, + signal + }).then(res => { + cache[refId] = res; + return res; + }, (error: Error) => { + delete cache[refId]; + throw error; + }); + } + + return Promise.resolve(cache[refId]); +} + +/** + * Resolves a reference in the given resource. + * @param obj FHIR Resource + */ +function resolveRef( + obj: fhirclient.FHIR.Resource, + path: string, + graph: boolean, + cache: fhirclient.JsonObject, + client: Client, + requestOptions: fhirclient.RequestOptions +) { + const node = getPath(obj, path); + if (node) { + const isArray = Array.isArray(node); + return Promise.all(makeArray(node).filter(Boolean).map((item, i) => { + const ref = item.reference; + if (ref) { + return getRef(ref, cache, client, requestOptions).then(sub => { + if (graph) { + if (isArray) { + if (path.indexOf("..") > -1) { + setPath(obj, `${path.replace("..", `.${i}.`)}`, sub); + } else { + setPath(obj, `${path}.${i}`, sub); + } + } else { + setPath(obj, path, sub); + } + } + }).catch((ex) => { + /* ignore missing references */ + if (ex.status !== 404) { + throw ex; + } + }); + } + })); + } +} + +/** + * Given a resource and a list of ref paths - resolves them all + * @param obj FHIR Resource + * @param fhirOptions The fhir options of the initiating request call + * @param cache A map to store fetched refs + * @param client The client instance + * @private + */ +function resolveRefs( + obj: fhirclient.FHIR.Resource, + fhirOptions: fhirclient.FhirOptions, + cache: fhirclient.JsonObject, + client: Client, + requestOptions: fhirclient.RequestOptions +) { + + // 1. Sanitize paths, remove any invalid ones + let paths = makeArray(fhirOptions.resolveReferences) + .filter(Boolean) // No false, 0, null, undefined or "" + .map(path => String(path).trim()) + .filter(Boolean); // No space-only strings + + // 2. Remove duplicates + paths = paths.filter((p, i) => { + const index = paths.indexOf(p, i + 1); + if (index > -1) { + debug("Duplicated reference path \"%s\"", p); + return false; + } + return true; + }); + + // 3. Early exit if no valid paths are found + if (!paths.length) { + return Promise.resolve(); + } + + // 4. Group the paths by depth so that child refs are looked up + // after their parents! + const groups: Record = {}; + paths.forEach(path => { + const len = path.split(".").length; + if (!groups[len]) { + groups[len] = []; + } + groups[len].push(path); + }); + + // 5. Execute groups sequentially! Paths within same group are + // fetched in parallel! + let task: Promise = Promise.resolve(); + Object.keys(groups).sort().forEach(len => { + const group = groups[len]; + task = task.then(() => Promise.all(group.map((path: string) => { + return resolveRef(obj, path, !!fhirOptions.graph, cache, client, requestOptions); + }))); + }); + return task; +} + +/** + * This is a FHIR client that is returned to you from the `ready()` call of the + * **SMART API**. You can also create it yourself if needed: + * + * ```js + * // BROWSER + * const client = FHIR.client("https://r4.smarthealthit.org"); + * + * // SERVER + * const client = smart(req, res).client("https://r4.smarthealthit.org"); + * ``` + */ +export default class Client +{ + /** + * The state of the client instance is an object with various properties. + * It contains some details about how the client has been authorized and + * determines the behavior of the client instance. This state is persisted + * in `SessionStorage` in browsers or in request session on the servers. + */ + readonly state: fhirclient.ClientState; + + /** + * The adapter to use to connect to the current environment. Currently we have: + * - BrowserAdapter - for browsers + * - NodeAdapter - for Express or vanilla NodeJS servers + * - HapiAdapter - for HAPI NodeJS servers + */ + readonly environment: fhirclient.Adapter; + + /** + * A SMART app is typically associated with a patient. This is a namespace + * for the patient-related functionality of the client. + */ + readonly patient: { + + /** + * The ID of the current patient or `null` if there is no current patient + */ + id: string | null + + /** + * A method to fetch the current patient resource from the FHIR server. + * If there is no patient context, it will reject with an error. + * @param {fhirclient.FetchOptions} [requestOptions] Any options to pass to the `fetch` call. + * @category Request + */ + read: fhirclient.RequestFunction + + /** + * This is similar to [[request]] but it makes requests in the + * context of the current patient. For example, instead of doing + * ```js + * client.request("Observation?patient=" + client.patient.id) + * ``` + * you can do + * ```js + * client.patient.request("Observation") + * ``` + * The return type depends on the arguments. Typically it will be the + * response payload JSON object. Can also be a string or the `Response` + * object itself if we have received a non-json result, which allows us + * to handle even binary responses. Can also be a [[CombinedFetchResult]] + * object if the `requestOptions.includeResponse`s has been set to true. + * @category Request + */ + request: ( + requestOptions: string|URL|fhirclient.RequestOptions, + fhirOptions?: fhirclient.FhirOptions + ) => Promise + + /** + * This is the FhirJS Patient API. It will ONLY exist if the `Client` + * instance is "connected" to FhirJS. + */ + api?: Record + }; + + /** + * The client may be associated with a specific encounter, if the scopes + * permit that and if the back-end server supports that. This is a namespace + * for encounter-related functionality. + */ + readonly encounter: { + + /** + * The ID of the current encounter or `null` if there is no current + * encounter + */ + id: string | null + + /** + * A method to fetch the current encounter resource from the FHIR server. + * If there is no encounter context, it will reject with an error. + * @param [requestOptions] Any options to pass to the `fetch` call. + * @category Request + */ + read: fhirclient.RequestFunction + }; + + /** + * The client may be associated with a specific user, if the scopes + * permit that. This is a namespace for user-related functionality. + */ + readonly user: { + + /** + * The ID of the current user or `null` if there is no current user + */ + id: string | null + + /** + * A method to fetch the current user resource from the FHIR server. + * If there is no user context, it will reject with an error. + * @param [requestOptions] Any options to pass to the `fetch` call. + * @category Request + */ + read: fhirclient.RequestFunction< + fhirclient.FHIR.Patient | + fhirclient.FHIR.Practitioner | + fhirclient.FHIR.RelatedPerson + > + + /** + * Returns the profile of the logged_in user (if any), or null if the + * user is not available. This is a string having the shape + * `{user type}/{user id}`. For example `Practitioner/abc` or + * `Patient/xyz`. + * @alias client.getFhirUser() + */ + fhirUser: string | null + + /** + * Returns the type of the logged-in user or null. The result can be + * `Practitioner`, `Patient` or `RelatedPerson`. + * @alias client.getUserType() + */ + resourceType: string | null + }; + + /** + * The [FhirJS](https://github.com/FHIR/fhir.js/blob/master/README.md) API. + * **NOTE:** This will only be available if `fhir.js` is used. Otherwise it + * will be `undefined`. + */ + api: Record | undefined; + + /** + * Refers to the refresh task while it is being performed. + * @see [[refresh]] + */ + private _refreshTask: Promise | null; + + /** + * Validates the parameters, creates an instance and tries to connect it to + * FhirJS, if one is available globally. + */ + constructor(environment: fhirclient.Adapter, state: fhirclient.ClientState | string) + { + const _state = typeof state == "string" ? { serverUrl: state } : state; + + // Valid serverUrl is required! + assert( + _state.serverUrl && _state.serverUrl.match(/https?:\/\/.+/), + "A \"serverUrl\" option is required and must begin with \"http(s)\"" + ); + + this.state = _state; + this.environment = environment; + this._refreshTask = null; + + const client = this; + + // patient api --------------------------------------------------------- + this.patient = { + get id() { return client.getPatientId(); }, + read: (requestOptions) => { + const id = this.patient.id; + return id ? + this.request({ ...requestOptions, url: `Patient/${id}` }) : + Promise.reject(new Error("Patient is not available")); + }, + request: (requestOptions, fhirOptions = {}) => { + if (this.patient.id) { + return (async () => { + const options = await contextualize(requestOptions, this); + return this.request(options, fhirOptions); + })(); + } else { + return Promise.reject(new Error("Patient is not available")); + } + } + }; + + // encounter api ------------------------------------------------------- + this.encounter = { + get id() { return client.getEncounterId(); }, + read: requestOptions => { + const id = this.encounter.id; + return id ? + this.request({ ...requestOptions, url: `Encounter/${id}` }) : + Promise.reject(new Error("Encounter is not available")); + } + }; + + // user api ------------------------------------------------------------ + this.user = { + get fhirUser() { return client.getFhirUser(); }, + get id() { return client.getUserId(); }, + get resourceType() { return client.getUserType(); }, + read: requestOptions => { + const fhirUser = this.user.fhirUser; + return fhirUser ? + this.request({ ...requestOptions, url: fhirUser }) : + Promise.reject(new Error("User is not available")); + } + }; + + // fhir.js api (attached automatically in browser) + // --------------------------------------------------------------------- + this.connect((environment as BrowserAdapter).fhir); + } + + /** + * This method is used to make the "link" between the `fhirclient` and the + * `fhir.js`, if one is available. + * **Note:** This is called by the constructor. If fhir.js is available in + * the global scope as `fhir`, it will automatically be linked to any [[Client]] + * instance. You should only use this method to connect to `fhir.js` which + * is not global. + */ + connect(fhirJs?: (options: Record) => Record): Client + { + if (typeof fhirJs == "function") { + const options: Record = { + baseUrl: this.state.serverUrl.replace(/\/$/, "") + }; + + const accessToken = this.getState("tokenResponse.access_token"); + if (accessToken) { + options.auth = { token: accessToken }; + } + else { + const { username, password } = this.state; + if (username && password) { + options.auth = { + user: username, + pass: password + }; + } + } + this.api = fhirJs(options); + + const patientId = this.getState("tokenResponse.patient"); + if (patientId) { + this.patient.api = fhirJs({ + ...options, + patient: patientId + }); + } + } + return this; + } + + /** + * Returns the ID of the selected patient or null. You should have requested + * "launch/patient" scope. Otherwise this will return null. + */ + getPatientId(): string | null + { + const tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + // We have been authorized against this server but we don't know + // the patient. This should be a scope issue. + if (!tokenResponse.patient) { + if (!(this.state.scope || "").match(/\blaunch(\/patient)?\b/)) { + debug(str.noScopeForId, "patient", "patient"); + } + else { + // The server should have returned the patient! + debug("The ID of the selected patient is not available. Please check if your server supports that."); + } + return null; + } + return tokenResponse.patient; + } + + if (this.state.authorizeUri) { + debug(str.noIfNoAuth, "the ID of the selected patient"); + } + else { + debug(str.noFreeContext, "selected patient"); + } + return null; + } + + /** + * Returns the ID of the selected encounter or null. You should have + * requested "launch/encounter" scope. Otherwise this will return null. + * Note that not all servers support the "launch/encounter" scope so this + * will be null if they don't. + */ + getEncounterId(): string | null + { + const tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + // We have been authorized against this server but we don't know + // the encounter. This should be a scope issue. + if (!tokenResponse.encounter) { + if (!(this.state.scope || "").match(/\blaunch(\/encounter)?\b/)) { + debug(str.noScopeForId, "encounter", "encounter"); + } + else { + // The server should have returned the encounter! + debug("The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters."); + } + return null; + } + return tokenResponse.encounter; + } + + if (this.state.authorizeUri) { + debug(str.noIfNoAuth, "the ID of the selected encounter"); + } + else { + debug(str.noFreeContext, "selected encounter"); + } + return null; + } + + /** + * Returns the (decoded) id_token if any. You need to request "openid" and + * "profile" scopes if you need to receive an id_token (if you need to know + * who the logged-in user is). + */ + getIdToken(): fhirclient.IDToken | null + { + const tokenResponse = this.state.tokenResponse; + if (tokenResponse) { + const idToken = tokenResponse.id_token; + const scope = this.state.scope || ""; + + // We have been authorized against this server but we don't have + // the id_token. This should be a scope issue. + if (!idToken) { + const hasOpenid = scope.match(/\bopenid\b/); + const hasProfile = scope.match(/\bprofile\b/); + const hasFhirUser = scope.match(/\bfhirUser\b/); + if (!hasOpenid || !(hasFhirUser || hasProfile)) { + debug( + "You are trying to get the id_token but you are not " + + "using the right scopes. Please add 'openid' and " + + "'fhirUser' or 'profile' to the scopes you are " + + "requesting." + ); + } + else { + // The server should have returned the id_token! + debug("The id_token is not available. Please check if your server supports that."); + } + return null; + } + return jwtDecode(idToken, this.environment) as fhirclient.IDToken; + } + if (this.state.authorizeUri) { + debug(str.noIfNoAuth, "the id_token"); + } + else { + debug(str.noFreeContext, "id_token"); + } + return null; + } + + /** + * Returns the profile of the logged_in user (if any). This is a string + * having the following shape `"{user type}/{user id}"`. For example: + * `"Practitioner/abc"` or `"Patient/xyz"`. + */ + getFhirUser(): string | null + { + const idToken = this.getIdToken(); + if (idToken) { + // Epic may return a full url + // @see https://github.com/smart-on-fhir/client-js/issues/105 + if (idToken.fhirUser) { + return idToken.fhirUser.split("/").slice(-2).join("/"); + } + return idToken.profile + } + return null; + } + + /** + * Returns the user ID or null. + */ + getUserId(): string | null + { + const profile = this.getFhirUser(); + if (profile) { + return profile.split("/")[1]; + } + return null; + } + + /** + * Returns the type of the logged-in user or null. The result can be + * "Practitioner", "Patient" or "RelatedPerson". + */ + getUserType(): string | null + { + const profile = this.getFhirUser(); + if (profile) { + return profile.split("/")[0]; + } + return null; + } + + /** + * Builds and returns the value of the `Authorization` header that can be + * sent to the FHIR server + */ + getAuthorizationHeader(): string | null + { + const accessToken = this.getState("tokenResponse.access_token"); + if (accessToken) { + return "Bearer " + accessToken; + } + const { username, password } = this.state; + if (username && password) { + return "Basic " + this.environment.btoa(username + ":" + password); + } + return null; + } + + /** + * Used internally to clear the state of the instance and the state in the + * associated storage. + */ + private async _clearState() { + const storage = this.environment.getStorage(); + const key = await storage.get(SMART_KEY); + if (key) { + await storage.unset(key); + } + await storage.unset(SMART_KEY); + this.state.tokenResponse = {}; + } + + /** + * Creates a new resource in a server-assigned location + * @see http://hl7.org/fhir/http.html#create + * @param resource A FHIR resource to be created + * @param [requestOptions] Any options to be passed to the fetch call. + * Note that `method` and `body` will be ignored. + * @category Request + */ + create( + resource: fhirclient.FHIR.Resource, + requestOptions?: O + ): Promise : R> + { + return this.request({ + ...requestOptions, + url: `${resource.resourceType}`, + method: "POST", + body: JSON.stringify(resource), + headers: { + // TODO: Do we need to alternate with "application/json+fhir"? + "content-type": "application/json", + ...(requestOptions || {}).headers + } + }); + } + + /** + * Creates a new current version for an existing resource or creates an + * initial version if no resource already exists for the given id. + * @see http://hl7.org/fhir/http.html#update + * @param resource A FHIR resource to be updated + * @param requestOptions Any options to be passed to the fetch call. + * Note that `method` and `body` will be ignored. + * @category Request + */ + update( + resource: fhirclient.FHIR.Resource, + requestOptions?: O + ): Promise : R> + { + return this.request({ + ...requestOptions, + url: `${resource.resourceType}/${resource.id}`, + method: "PUT", + body: JSON.stringify(resource), + headers: { + // TODO: Do we need to alternate with "application/json+fhir"? + "content-type": "application/json", + ...(requestOptions || {}).headers + } + }); + } + + /** + * Removes an existing resource. + * @see http://hl7.org/fhir/http.html#delete + * @param url Relative URI of the FHIR resource to be deleted + * (format: `resourceType/id`) + * @param requestOptions Any options (except `method` which will be fixed + * to `DELETE`) to be passed to the fetch call. + * @category Request + */ + delete(url: string, requestOptions: fhirclient.FetchOptions = {}): Promise + { + return this.request({ + ...requestOptions, + url, + method: "DELETE" + }); + } + + /** + * Makes a JSON Patch to the given resource + * @see http://hl7.org/fhir/http.html#patch + * @param url Relative URI of the FHIR resource to be patched + * (format: `resourceType/id`) + * @param patch A JSON Patch array to send to the server, For details + * see https://datatracker.ietf.org/doc/html/rfc6902 + * @param requestOptions Any options to be passed to the fetch call, + * except for `method`, `url` and `body` which cannot be overridden. + * @since 2.4.0 + * @category Request + * @typeParam ResolveType This method would typically resolve with the + * patched resource or reject with an OperationOutcome. However, this may + * depend on the server implementation or even on the request headers. + * For that reason, if the default resolve type (which is + * [[fhirclient.FHIR.Resource]]) does not work for you, you can pass + * in your own resolve type parameter. + */ + async patch(url: string, patch: fhirclient.JsonPatch, requestOptions: fhirclient.FetchOptions = {}): Promise + { + assertJsonPatch(patch); + return this.request({ + ...requestOptions, + url, + method: "PATCH", + body: JSON.stringify(patch), + headers: { + "prefer": "return=presentation", + "content-type": "application/json-patch+json; charset=UTF-8", + ...requestOptions.headers, + } + }); + } + + /** + * @param requestOptions Can be a string URL (relative to the serviceUrl), + * or an object which will be passed to fetch() + * @param fhirOptions Additional options to control the behavior + * @param _resolvedRefs DO NOT USE! Used internally. + * @category Request + */ + async request( + requestOptions: string|URL|fhirclient.RequestOptions, + fhirOptions: fhirclient.FhirOptions = {}, + _resolvedRefs: fhirclient.JsonObject = {} + ): Promise + { + const debugRequest = _debug.extend("client:request"); + assert(requestOptions, "request requires an url or request options as argument"); + + // url ----------------------------------------------------------------- + let url: string; + if (typeof requestOptions == "string" || requestOptions instanceof URL) { + url = String(requestOptions); + requestOptions = {} as fhirclient.RequestOptions; + } + else { + url = String(requestOptions.url); + } + + url = absolute(url, this.state.serverUrl); + + const options = { + graph: fhirOptions.graph !== false, + flat : !!fhirOptions.flat, + pageLimit: fhirOptions.pageLimit ?? 1, + resolveReferences: (fhirOptions.resolveReferences || []) as string[], + useRefreshToken: fhirOptions.useRefreshToken !== false, + onPage: typeof fhirOptions.onPage == "function" ? + fhirOptions.onPage as ( + data: fhirclient.JsonObject | fhirclient.JsonObject[], + references?: fhirclient.JsonObject | undefined) => any : + undefined + }; + + const signal = (requestOptions as RequestInit).signal || undefined; + + // Refresh the access token if needed + const job = options.useRefreshToken ? + this.refreshIfNeeded({ signal }).then(() => requestOptions as fhirclient.RequestOptions) : + Promise.resolve(requestOptions as fhirclient.RequestOptions); + + let response: Response | undefined; + + return job + + // Add the Authorization header now, after the access token might + // have been updated + .then(requestOptions => { + const authHeader = this.getAuthorizationHeader(); + if (authHeader) { + requestOptions.headers = { + ...requestOptions.headers, + authorization: authHeader + }; + } + return requestOptions; + }) + + // Make the request + .then(requestOptions => { + debugRequest( + "%s, options: %O, fhirOptions: %O", + url, + requestOptions, + options + ); + return request(url, requestOptions).then(result => { + if (requestOptions.includeResponse) { + response = (result as fhirclient.CombinedFetchResult).response; + return (result as fhirclient.CombinedFetchResult).body; + } + return result; + }); + }) + + // Handle 401 ------------------------------------------------------ + .catch(async (error: HttpError) => { + if (error.status == 401) { + + // !accessToken -> not authorized -> No session. Need to launch. + if (!this.getState("tokenResponse.access_token")) { + error.message += "\nThis app cannot be accessed directly. Please launch it as SMART app!"; + throw error; + } + + // auto-refresh not enabled and Session expired. + // Need to re-launch. Clear state to start over! + if (!options.useRefreshToken) { + debugRequest("Your session has expired and the useRefreshToken option is set to false. Please re-launch the app."); + await this._clearState(); + error.message += "\n" + str.expired; + throw error; + } + + // In rare cases we may have a valid access token and a refresh + // token and the request might still fail with 401 just because + // the access token has just been revoked. + + // otherwise -> auto-refresh failed. Session expired. + // Need to re-launch. Clear state to start over! + debugRequest("Auto-refresh failed! Please re-launch the app."); + await this._clearState(); + error.message += "\n" + str.expired; + throw error; + } + throw error; + }) + + // Handle 403 ------------------------------------------------------ + .catch((error: HttpError) => { + if (error.status == 403) { + debugRequest("Permission denied! Please make sure that you have requested the proper scopes."); + } + throw error; + }) + + .then((data: any) => { + + // At this point we don't know what `data` actually is! + + // We might get an empty or falsy result. If so return it as is + // Also handle raw responses + if (!data || typeof data == "string" || data instanceof Response) { + if ((requestOptions as fhirclient.FetchOptions).includeResponse) { + return { + body: data, + response + } + } + return data; + } + + // Resolve References ------------------------------------------ + return (async (_data: fhirclient.FHIR.Resource) => { + + if (_data.resourceType == "Bundle") { + await Promise.all(((_data as fhirclient.FHIR.Bundle).entry || []).map(item => resolveRefs( + item.resource, + options, + _resolvedRefs, + this, + requestOptions as fhirclient.RequestOptions + ))); + } + else { + await resolveRefs( + _data, + options, + _resolvedRefs, + this, + requestOptions as fhirclient.RequestOptions + ); + } + + return _data; + })(data) + + // Pagination ---------------------------------------------- + .then(async _data => { + if (_data && _data.resourceType == "Bundle") { + const links = (_data.link || []) as fhirclient.FHIR.BundleLink[]; + + if (options.flat) { + _data = (_data.entry || []).map( + (entry: fhirclient.FHIR.BundleEntry) => entry.resource + ); + } + + if (options.onPage) { + await options.onPage(_data, { ..._resolvedRefs }); + } + + if (--options.pageLimit) { + const next = links.find(l => l.relation == "next"); + _data = makeArray(_data); + if (next && next.url) { + const nextPage = await this.request( + { + url: next.url, + + // Aborting the main request (even after it is complete) + // must propagate to any child requests and abort them! + // To do so, just pass the same AbortSignal if one is + // provided. + signal + }, + options, + _resolvedRefs + ); + + if (options.onPage) { + return null; + } + + if (options.resolveReferences.length) { + Object.assign(_resolvedRefs, nextPage.references); + return _data.concat(makeArray(nextPage.data || nextPage)); + } + return _data.concat(makeArray(nextPage)); + } + } + } + return _data; + }) + + // Finalize ------------------------------------------------ + .then(_data => { + if (options.graph) { + _resolvedRefs = {}; + } + else if (!options.onPage && options.resolveReferences.length) { + return { + data: _data, + references: _resolvedRefs + }; + } + return _data; + }) + .then(_data => { + if ((requestOptions as fhirclient.FetchOptions).includeResponse) { + return { + body: _data, + response + } + } + return _data; + }); + }); + } + + /** + * Checks if access token and refresh token are present. If they are, and if + * the access token is expired or is about to expire in the next 10 seconds, + * calls `this.refresh()` to obtain new access token. + * @param requestOptions Any options to pass to the fetch call. Most of them + * will be overridden, bit it might still be useful for passing additional + * request options or an abort signal. + * @category Request + */ + refreshIfNeeded(requestOptions: RequestInit = {}): Promise + { + const accessToken = this.getState("tokenResponse.access_token"); + const refreshToken = this.getState("tokenResponse.refresh_token"); + const expiresAt = this.state.expiresAt || 0; + + if (accessToken && refreshToken && expiresAt - 10 < Date.now() / 1000) { + return this.refresh(requestOptions); + } + + return Promise.resolve(this.state); + } + + /** + * Use the refresh token to obtain new access token. If the refresh token is + * expired (or this fails for any other reason) it will be deleted from the + * state, so that we don't enter into loops trying to re-authorize. + * + * This method is typically called internally from [[request]] if + * certain request fails with 401. + * + * @param requestOptions Any options to pass to the fetch call. Most of them + * will be overridden, bit it might still be useful for passing additional + * request options or an abort signal. + * @category Request + */ + refresh(requestOptions: RequestInit = {}): Promise + { + const debugRefresh = _debug.extend("client:refresh"); + debugRefresh("Attempting to refresh with refresh_token..."); + + const refreshToken = this.state?.tokenResponse?.refresh_token; + assert(refreshToken, "Unable to refresh. No refresh_token found."); + + const tokenUri = this.state.tokenUri; + assert(tokenUri, "Unable to refresh. No tokenUri found."); + + const scopes = this.getState("tokenResponse.scope") || ""; + const hasOfflineAccess = scopes.search(/\boffline_access\b/) > -1; + const hasOnlineAccess = scopes.search(/\bonline_access\b/) > -1; + assert(hasOfflineAccess || hasOnlineAccess, "Unable to refresh. No offline_access or online_access scope found."); + + // This method is typically called internally from `request` if certain + // request fails with 401. However, clients will often run multiple + // requests in parallel which may result in multiple refresh calls. + // To avoid that, we keep a reference to the current refresh task (if any). + if (!this._refreshTask) { + + const refreshRequestOptions = { + credentials: this.environment.options.refreshTokenWithCredentials || "same-origin", + ...requestOptions, + method : "POST", + mode : "cors" as RequestMode, + headers: { + ...(requestOptions.headers || {}), + "content-type": "application/x-www-form-urlencoded" + }, + body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(refreshToken)}` + }; + + // custom authorization header can be passed on manual calls + if (!("authorization" in refreshRequestOptions.headers)) { + const { clientSecret, clientId } = this.state; + if (clientSecret) { + // @ts-ignore + refreshRequestOptions.headers.authorization = "Basic " + this.environment.btoa( + clientId + ":" + clientSecret + ); + } + } + + this._refreshTask = request(tokenUri, refreshRequestOptions) + .then(data => { + assert(data.access_token, "No access token received"); + debugRefresh("Received new access token response %O", data); + this.state.tokenResponse = { ...this.state.tokenResponse, ...data }; + this.state.expiresAt = getAccessTokenExpiration(data, this.environment); + return this.state; + }) + .catch((error: Error) => { + if (this.state?.tokenResponse?.refresh_token) { + debugRefresh("Deleting the expired or invalid refresh token."); + delete this.state.tokenResponse.refresh_token; + } + throw error; + }) + .finally(() => { + this._refreshTask = null; + const key = this.state.key; + if (key) { + this.environment.getStorage().set(key, this.state); + } else { + debugRefresh("No 'key' found in Clint.state. Cannot persist the instance."); + } + }); + } + + return this._refreshTask; + } + + // utils ------------------------------------------------------------------- + + /** + * Groups the observations by code. Returns a map that will look like: + * ```js + * const map = client.byCodes(observations, "code"); + * // map = { + * // "55284-4": [ observation1, observation2 ], + * // "6082-2": [ observation3 ] + * // } + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + byCode( + observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[], + property: string + ): fhirclient.ObservationMap + { + return byCode(observations, property); + } + + /** + * First groups the observations by code using `byCode`. Then returns a function + * that accepts codes as arguments and will return a flat array of observations + * having that codes. Example: + * ```js + * const filter = client.byCodes(observations, "category"); + * filter("laboratory") // => [ observation1, observation2 ] + * filter("vital-signs") // => [ observation3 ] + * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + byCodes( + observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[], + property: string + ): (...codes: string[]) => any[] + { + return byCodes(observations, property); + } + + /** + * @category Utility + */ + units = units; + + /** + * Walks through an object (or array) and returns the value found at the + * provided path. This function is very simple so it intentionally does not + * support any argument polymorphism, meaning that the path can only be a + * dot-separated string. If the path is invalid returns undefined. + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + * @todo This should be deprecated and moved elsewhere. One should not have + * to obtain an instance of [[Client]] just to use utility functions like this. + * @deprecated + * @category Utility + */ + getPath(obj: Record, path = ""): any { + return getPath(obj, path); + } + + /** + * Returns a copy of the client state. Accepts a dot-separated path argument + * (same as for `getPath`) to allow for selecting specific properties. + * Examples: + * ```js + * client.getState(); // -> the entire state object + * client.getState("serverUrl"); // -> the URL we are connected to + * client.getState("tokenResponse.patient"); // -> The selected patient ID (if any) + * ``` + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + */ + getState(path = "") { + return getPath({ ...this.state }, path); + } + + /** + * Returns a promise that will be resolved with the fhir version as defined + * in the CapabilityStatement. + */ + getFhirVersion(): Promise { + return fetchConformanceStatement(this.state.serverUrl) + .then((metadata) => metadata.fhirVersion); + } + + /** + * Returns a promise that will be resolved with the numeric fhir version + * - 2 for DSTU2 + * - 3 for STU3 + * - 4 for R4 + * - 0 if the version is not known + */ + getFhirRelease(): Promise { + return this.getFhirVersion().then(v => (fhirVersions as any)[v] ?? 0); + } +} diff --git a/src/HttpError.ts b/src/HttpError.ts new file mode 100644 index 00000000..b92964f7 --- /dev/null +++ b/src/HttpError.ts @@ -0,0 +1,77 @@ +import { fhirclient } from "./types"; + + +export default class HttpError extends Error +{ + /** + * The HTTP status code for this error + */ + statusCode: number; + + /** + * The HTTP status code for this error. + * Note that this is the same as `status`, i.e. the code is available + * through any of these. + */ + status: number; + + /** + * The HTTP status text corresponding to this error + */ + statusText: string; + + /** + * Reference to the HTTP Response object + */ + response: Response; + + constructor(response: Response) { + super(`${response.status} ${response.statusText}\nURL: ${response.url}`); + this.name = "HttpError"; + this.response = response; + this.statusCode = response.status; + this.status = response.status; + this.statusText = response.statusText; + } + + async parse() + { + if (!this.response.bodyUsed) { + try { + const type = this.response.headers.get("content-type") || "text/plain"; + if (type.match(/\bjson\b/i)) { + let body = await this.response.json(); + if (body.error) { + this.message += "\n" + body.error; + if (body.error_description) { + this.message += ": " + body.error_description; + } + } + else { + this.message += "\n\n" + JSON.stringify(body, null, 4); + } + } + else if (type.match(/^text\//i)) { + let body = await this.response.text(); + if (body) { + this.message += "\n\n" + body; + } + } + } catch { + // ignore + } + } + + return this; + } + + toJSON() { + return { + name : this.name, + statusCode: this.statusCode, + status : this.status, + statusText: this.statusText, + message : this.message + }; + } +} diff --git a/src/abortcontroller-polyfill.d.ts b/src/abortcontroller-polyfill.d.ts new file mode 100644 index 00000000..3fd0886c --- /dev/null +++ b/src/abortcontroller-polyfill.d.ts @@ -0,0 +1,13 @@ +declare module "abortcontroller-polyfill/dist/cjs-ponyfill" { + const AbortController: { + new (): AbortController; + prototype: AbortController; + }; +} + +declare module "abortcontroller-polyfill/dist/abortcontroller-polyfill-only" { + const AbortController: { + new (): AbortController; + prototype: AbortController; + }; +} diff --git a/src/adapters/BrowserAdapter.ts b/src/adapters/BrowserAdapter.ts new file mode 100644 index 00000000..3cce30b8 --- /dev/null +++ b/src/adapters/BrowserAdapter.ts @@ -0,0 +1,180 @@ +import { ready, authorize, init } from "../smart"; +import Client from "../Client"; +import BrowserStorage from "../storage/BrowserStorage"; +import { fhirclient } from "../types"; +import * as security from "../security/browser" +import { encodeURL, decode, fromUint8Array } from "js-base64" + +/** + * Browser Adapter + */ +export default class BrowserAdapter implements fhirclient.Adapter +{ + /** + * Stores the URL instance associated with this adapter + */ + private _url: URL | null = null; + + /** + * Holds the Storage instance associated with this instance + */ + private _storage: fhirclient.Storage | null = null; + + /** + * Environment-specific options + */ + options: fhirclient.BrowserFHIRSettings; + + security = security; + + /** + * @param options Environment-specific options + */ + constructor(options: fhirclient.BrowserFHIRSettings = {}) + { + this.options = { + // Replaces the browser's current URL + // using window.history.replaceState API or by reloading. + replaceBrowserHistory: true, + + // When set to true, this variable will fully utilize + // HTML5 sessionStorage API. + // This variable can be overridden to false by setting + // FHIR.oauth2.settings.fullSessionStorageSupport = false. + // When set to false, the sessionStorage will be keyed + // by a state variable. This is to allow the embedded IE browser + // instances instantiated on a single thread to continue to + // function without having sessionStorage data shared + // across the embedded IE instances. + fullSessionStorageSupport: true, + + // Do we want to send cookies while making a request to the token + // endpoint in order to obtain new access token using existing + // refresh token. In rare cases the auth server might require the + // client to send cookies along with those requests. In this case + // developers will have to change this before initializing the app + // like so: + // `FHIR.oauth2.settings.refreshTokenWithCredentials = "include";` + // or + // `FHIR.oauth2.settings.refreshTokenWithCredentials = "same-origin";` + // Can be one of: + // "include" - always send cookies + // "same-origin" - only send cookies if we are on the same domain (default) + // "omit" - do not send cookies + refreshTokenWithCredentials: "same-origin", + + ...options + }; + } + + /** + * Given a relative path, returns an absolute url using the instance base URL + */ + relative(path: string): string + { + return new URL(path, this.getUrl().href).href; + } + + /** + * In browsers we need to be able to (dynamically) check if fhir.js is + * included in the page. If it is, it should have created a "fhir" variable + * in the global scope. + */ + get fhir() + { + // @ts-ignore + return typeof fhir === "function" ? fhir : null; + } + + /** + * Given the current environment, this method must return the current url + * as URL instance + */ + getUrl(): URL + { + if (!this._url) { + this._url = new URL(location + ""); + } + return this._url; + } + + /** + * Given the current environment, this method must redirect to the given + * path + */ + redirect(to: string): void + { + location.href = to; + } + + /** + * Returns a BrowserStorage object which is just a wrapper around + * sessionStorage + */ + getStorage(): BrowserStorage + { + if (!this._storage) { + this._storage = new BrowserStorage(); + } + return this._storage; + } + + /** + * Returns a reference to the AbortController constructor. In browsers, + * AbortController will always be available as global (native or polyfilled) + */ + getAbortController() + { + return AbortController; + } + + /** + * ASCII string to Base64 + */ + atob(str: string): string + { + return window.atob(str); + } + + /** + * Base64 to ASCII string + */ + btoa(str: string): string + { + return window.btoa(str); + } + + base64urlencode(input: string | Uint8Array) + { + if (typeof input == "string") { + return encodeURL(input) + } + return fromUint8Array(input, true) + } + + base64urldecode(input: string) + { + return decode(input) + } + + /** + * Creates and returns adapter-aware SMART api. Not that while the shape of + * the returned object is well known, the arguments to this function are not. + * Those who override this method are free to require any environment-specific + * arguments. For example in node we will need a request, a response and + * optionally a storage or storage factory function. + */ + getSmartApi(): fhirclient.SMART + { + return { + ready : (...args: any[]) => ready(this, ...args), + authorize: options => authorize(this, options), + init : options => init(this, options), + client : (state: string | fhirclient.ClientState) => new Client(this, state), + options : this.options, + utils: { + security + } + }; + } +} diff --git a/src/adapters/HapiAdapter.ts b/src/adapters/HapiAdapter.ts new file mode 100644 index 00000000..d9031d80 --- /dev/null +++ b/src/adapters/HapiAdapter.ts @@ -0,0 +1,96 @@ +import NodeAdapter from "./NodeAdapter"; +import ServerStorage from "../storage/ServerStorage"; +import { fhirclient } from "../types"; +import { ResponseToolkit, Request, ResponseObject } from "hapi"; + +interface HapiAdapterOptions { + request: Request; + responseToolkit: ResponseToolkit; + storage?: fhirclient.Storage | fhirclient.storageFactory; +} + +export default class HapiAdapter extends NodeAdapter +{ + private _responseToolkit: ResponseToolkit; + + private _request: Request; + + /** + * Holds the Storage instance associated with this instance + */ + protected _storage: fhirclient.Storage | null = null; + + /** + * @param options Environment-specific options + */ + constructor(options: HapiAdapterOptions) + { + super({ + request : options.request.raw.req, + response: options.request.raw.res, + storage : options.storage + }); + + this._request = options.request; + this._responseToolkit = options.responseToolkit; + } + + /** + * Returns a ServerStorage instance + */ + getStorage(): fhirclient.Storage + { + if (!this._storage) { + if (this.options.storage) { + if (typeof this.options.storage == "function") { + this._storage = this.options.storage({ request: this._request }); + } else { + this._storage = this.options.storage; + } + } else { + this._storage = new ServerStorage(this._request as any); + } + } + return this._storage as fhirclient.Storage; + } + + /** + * Given the current environment, this method must redirect to the given + * path + * @param location The path to redirect to + */ + redirect(location: string): ResponseObject + { + return this._responseToolkit.redirect(location); + } + + // /** + // * Returns the protocol of the current request + // */ + // getProtocol(): string + // { + // const req = this.options.request; + // return req.headers["x-forwarded-proto"] as string || String( + // this._request.url.protocol || "http" + // ).replace(":", ""); + // } + + /** + * This is the static entry point and MUST be provided + * @param request The hapi request + * @param h The hapi response toolkit + * @param storage Custom storage instance or a storage factory function + */ + static smart( + request: Request, + h: ResponseToolkit, + storage?: fhirclient.Storage | fhirclient.storageFactory + ) + { + return new HapiAdapter({ + request, + responseToolkit: h, + storage + }).getSmartApi(); + } +} diff --git a/src/adapters/NodeAdapter.ts b/src/adapters/NodeAdapter.ts new file mode 100644 index 00000000..452cb976 --- /dev/null +++ b/src/adapters/NodeAdapter.ts @@ -0,0 +1,168 @@ +import { fhirclient } from "../types"; +import { ready, authorize, init } from "../smart"; +import Client from "../Client"; +import ServerStorage from "../storage/ServerStorage"; +import { AbortController } from "abortcontroller-polyfill/dist/cjs-ponyfill"; +import { IncomingMessage, ServerResponse } from "http"; +import { TLSSocket } from "tls"; +import * as security from "../security/server" +import { base64url } from "jose" + + +interface NodeAdapterOptions { + request: IncomingMessage; + response: ServerResponse; + storage?: fhirclient.Storage | fhirclient.storageFactory; +} + +/** + * Node Adapter - works with native NodeJS and with Express + */ +export default class NodeAdapter implements fhirclient.Adapter +{ + /** + * Holds the Storage instance associated with this instance + */ + protected _storage: fhirclient.Storage | null = null; + + /** + * Environment-specific options + */ + options: NodeAdapterOptions; + + security = security; + + /** + * @param options Environment-specific options + */ + constructor(options: NodeAdapterOptions) + { + this.options = { ...options }; + } + + /** + * Given a relative path, returns an absolute url using the instance base URL + */ + relative(path: string): string + { + return new URL(path, this.getUrl().href).href; + } + + /** + * Returns the protocol of the current request ("http" or "https") + */ + getProtocol(): string + { + const req = this.options.request; + const proto = (req.socket as TLSSocket).encrypted ? "https" : "http"; + return req.headers["x-forwarded-proto"] as string || proto; + } + + /** + * Given the current environment, this method must return the current url + * as URL instance. In Node we might be behind a proxy! + */ + getUrl(): URL + { + const req = this.options.request; + + let host = req.headers.host; + if (req.headers["x-forwarded-host"]) { + host = req.headers["x-forwarded-host"] as string; + if (req.headers["x-forwarded-port"] && host.indexOf(":") === -1) { + host += ":" + req.headers["x-forwarded-port"]; + } + } + + const protocol = this.getProtocol(); + const orig = String(req.headers["x-original-uri"] || req.url); + return new URL(orig, protocol + "://" + host); + } + + /** + * Given the current environment, this method must redirect to the given + * path + * @param location The path to redirect to + */ + redirect(location: string): void + { + this.options.response.writeHead(302, { location }); + this.options.response.end(); + } + + /** + * Returns a ServerStorage instance + */ + getStorage(): fhirclient.Storage + { + if (!this._storage) { + if (this.options.storage) { + if (typeof this.options.storage == "function") { + this._storage = this.options.storage(this.options); + } else { + this._storage = this.options.storage; + } + } else { + this._storage = new ServerStorage(this.options.request as fhirclient.RequestWithSession); + } + } + return this._storage; + } + + /** + * Base64 to ASCII string + */ + btoa(str: string): string + { + // The "global." makes Webpack understand that it doesn't have to + // include the Buffer code in the bundle + return global.Buffer.from(str).toString("base64"); + } + + /** + * ASCII string to Base64 + */ + atob(str: string): string + { + // The "global." makes Webpack understand that it doesn't have to + // include the Buffer code in the bundle + return global.Buffer.from(str, "base64").toString("ascii"); + } + + base64urlencode(input: string | Uint8Array) + { + return base64url.encode(input); + } + + base64urldecode(input: string) + { + return base64url.decode(input).toString(); + } + + /** + * Returns a reference to the AbortController constructor. In browsers, + * AbortController will always be available as global (native or polyfilled) + */ + getAbortController() + { + return AbortController; + } + + /** + * Creates and returns adapter-aware SMART api. Not that while the shape of + * the returned object is well known, the arguments to this function are not. + * Those who override this method are free to require any environment-specific + * arguments. For example in node we will need a request, a response and + * optionally a storage or storage factory function. + */ + getSmartApi(): fhirclient.SMART + { + return { + ready : (...args: any[]) => ready(this, ...args), + authorize: options => authorize(this, options), + init : options => init(this, options), + client : (state: string | fhirclient.ClientState) => new Client(this, state), + options : this.options + }; + } +} diff --git a/src/entry/browser.ts b/src/entry/browser.ts new file mode 100644 index 00000000..65914d31 --- /dev/null +++ b/src/entry/browser.ts @@ -0,0 +1,45 @@ + +// Note: the following 2 imports appear as unused but they affect how tsc is +// generating type definitions! +import { fhirclient } from "../types"; +import Client from "../Client"; + +// In Browsers we create an adapter, get the SMART api from it and build the +// global FHIR object +import BrowserAdapter from "../adapters/BrowserAdapter"; + +const adapter = new BrowserAdapter(); +const { ready, authorize, init, client, options, utils } = adapter.getSmartApi(); + +// We have two kinds of browser builds - "pure" for new browsers and "legacy" +// for old ones. In pure builds we assume that the browser supports everything +// we need. In legacy mode, the library also acts as a polyfill. Babel will +// automatically polyfill everything except "fetch", which we have to handle +// manually. +// @ts-ignore +if (typeof FHIRCLIENT_PURE == "undefined") { + const fetch = require("cross-fetch"); + require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only"); + if (!window.fetch) { + window.fetch = fetch.default; + window.Headers = fetch.Headers; + window.Request = fetch.Request; + window.Response = fetch.Response; + } +} + +// $lab:coverage:off$ +const FHIR = { + AbortController: window.AbortController, + client, + utils, + oauth2: { + settings: options, + ready, + authorize, + init + } +}; + +export = FHIR; +// $lab:coverage:on$ diff --git a/src/entry/hapi.ts b/src/entry/hapi.ts new file mode 100644 index 00000000..5acce98c --- /dev/null +++ b/src/entry/hapi.ts @@ -0,0 +1,22 @@ +import HapiAdapter from "../adapters/HapiAdapter"; +import { fhirclient } from "../types"; +import { AbortController } from "abortcontroller-polyfill/dist/cjs-ponyfill"; +import { ResponseToolkit, Request } from "hapi"; + + +function smart( + request: Request, + h: ResponseToolkit, + storage?: fhirclient.Storage | fhirclient.storageFactory +) +{ + return new HapiAdapter({ + request, + responseToolkit: h, + storage + }).getSmartApi(); +} + +smart.AbortController = AbortController; + +export = smart; diff --git a/src/entry/node.ts b/src/entry/node.ts new file mode 100644 index 00000000..f5eba75c --- /dev/null +++ b/src/entry/node.ts @@ -0,0 +1,23 @@ +import NodeAdapter from "../adapters/NodeAdapter"; +import { IncomingMessage, ServerResponse } from "http"; +import { fhirclient } from "../types"; +import { AbortController as Controller } from "abortcontroller-polyfill/dist/cjs-ponyfill"; + +type storageFactory = (options?: Record) => fhirclient.Storage; + +function smart( + request: IncomingMessage, + response: ServerResponse, + storage?: fhirclient.Storage | storageFactory +) +{ + return new NodeAdapter({ + request, + response, + storage + }).getSmartApi(); +} + +smart.AbortController = Controller as typeof AbortController; + +export = smart; diff --git a/src/lib.ts b/src/lib.ts new file mode 100644 index 00000000..03a670b7 --- /dev/null +++ b/src/lib.ts @@ -0,0 +1,592 @@ +/* + * This file contains some shared functions. They are used by other modules, but + * are defined here so that tests can import this library and test them. + */ + +import HttpError from "./HttpError"; +import { patientParams } from "./settings"; +import { fhirclient } from "./types"; +const debug = require("debug"); + +// $lab:coverage:off$ +// @ts-ignore +const { fetch } = typeof FHIRCLIENT_PURE !== "undefined" ? window : require("cross-fetch"); +// $lab:coverage:on$ + +const _debug = debug("FHIR"); +export { _debug as debug }; + +/** + * The cache for the `getAndCache` function + */ +const cache: Record = {}; + +/** + * A namespace with functions for converting between different measurement units + */ +export const units = { + cm({ code, value }: fhirclient.CodeValue) { + ensureNumerical({ code, value }); + if (code == "cm" ) return value; + if (code == "m" ) return value * 100; + if (code == "in" ) return value * 2.54; + if (code == "[in_us]") return value * 2.54; + if (code == "[in_i]" ) return value * 2.54; + if (code == "ft" ) return value * 30.48; + if (code == "[ft_us]") return value * 30.48; + throw new Error("Unrecognized length unit: " + code); + }, + kg({ code, value }: fhirclient.CodeValue){ + ensureNumerical({ code, value }); + if (code == "kg" ) return value; + if (code == "g" ) return value / 1000; + if (code.match(/lb/)) return value / 2.20462; + if (code.match(/oz/)) return value / 35.274; + throw new Error("Unrecognized weight unit: " + code); + }, + any(pq: fhirclient.CodeValue){ + ensureNumerical(pq); + return pq.value; + } +}; + +/** + * Assertion function to guard arguments for `units` functions + */ +function ensureNumerical({ value, code }: fhirclient.CodeValue) { + if (typeof value !== "number") { + throw new Error("Found a non-numerical unit: " + value + " " + code); + } +} + +/** + * Used in fetch Promise chains to reject if the "ok" property is not true + */ +export async function checkResponse(resp: Response): Promise { + if (!resp.ok) { + const error = new HttpError(resp); + await error.parse(); + throw error; + } + return resp; +} + +/** + * Used in fetch Promise chains to return the JSON version of the response. + * Note that `resp.json()` will throw on empty body so we use resp.text() + * instead. + */ +export function responseToJSON(resp: Response): Promise { + return resp.text().then(text => text.length ? JSON.parse(text) : ""); +} + +export function loweCaseKeys | any[] | undefined>(obj: T): T { + + // Can be undefined to signal that this key should be removed + if (!obj) { + return obj as T + } + + // Arrays are valid values in case of recursive calls + if (Array.isArray(obj)) { + return obj.map(v => v && typeof v === "object" ? loweCaseKeys(v) : v) as unknown as T; + } + + // Plain object + let out: Record = {}; + Object.keys(obj).forEach(key => { + const lowerKey = key.toLowerCase() + const v = (obj as Record)[key] + out[lowerKey] = v && typeof v == "object" ? loweCaseKeys(v) : v; + }); + return out as T; +} + +/** + * This is our built-in request function. It does a few things by default + * (unless told otherwise): + * - Makes CORS requests + * - Sets accept header to "application/json" + * - Handles errors + * - If the response is json return the json object + * - If the response is text return the result text + * - Otherwise return the response object on which we call stuff like `.blob()` + */ +export function request( + url: string | Request, + requestOptions: fhirclient.FetchOptions = {} +): Promise +{ + const { includeResponse, ...options } = requestOptions; + return fetch(url, { + mode: "cors", + ...options, + headers: { + accept: "application/json", + ...loweCaseKeys(options.headers) + } + }) + .then(checkResponse) + .then((res: Response) => { + const type = res.headers.get("content-type") + ""; + if (type.match(/\bjson\b/i)) { + return responseToJSON(res).then(body => ({ res, body })); + } + if (type.match(/^text\//i)) { + return res.text().then(body => ({ res, body })); + } + return { res }; + }) + .then(({res, body}: {res:Response, body?:fhirclient.JsonObject|string}) => { + + // Some servers will reply after CREATE with json content type but with + // empty body. In this case check if a location header is received and + // fetch that to use it as the final result. + if (!body && res.status == 201) { + const location = res.headers.get("location"); + if (location) { + return request(location, { ...options, method: "GET", body: null, includeResponse }); + } + } + + if (includeResponse) { + return { body, response: res }; + } + + // For any non-text and non-json response return the Response object. + // This to let users decide if they want to call text(), blob() or + // something else on it + if (body === undefined) { + return res; + } + + // Otherwise just return the parsed body (can also be "" or null) + return body; + }); +} + +/** + * Makes a request using `fetch` and stores the result in internal memory cache. + * The cache is cleared when the page is unloaded. + * @param url The URL to request + * @param requestOptions Request options + * @param force If true, reload from source and update the cache, even if it has + * already been cached. + */ +export function getAndCache(url: string, requestOptions?: RequestInit, force: boolean = process.env.NODE_ENV === "test"): Promise { + if (force || !cache[url]) { + cache[url] = request(url, requestOptions); + return cache[url]; + } + return Promise.resolve(cache[url]); +} + +/** + * Fetches the conformance statement from the given base URL. + * Note that the result is cached in memory (until the page is reloaded in the + * browser) because it might have to be re-used by the client + * @param baseUrl The base URL of the FHIR server + * @param [requestOptions] Any options passed to the fetch call + */ +export function fetchConformanceStatement(baseUrl = "/", requestOptions?: RequestInit): Promise +{ + const url = String(baseUrl).replace(/\/*$/, "/") + "metadata"; + return getAndCache(url, requestOptions).catch((ex: Error) => { + throw new Error( + `Failed to fetch the conformance statement from "${url}". ${ex}` + ); + }); +} + + +/** + * Walks through an object (or array) and returns the value found at the + * provided path. This function is very simple so it intentionally does not + * support any argument polymorphism, meaning that the path can only be a + * dot-separated string. If the path is invalid returns undefined. + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @returns {*} Whatever is found in the path or undefined + */ +export function getPath(obj: Record, path = ""): any { + path = path.trim(); + if (!path) { + return obj; + } + + let segments = path.split("."); + let result = obj; + + while (result && segments.length) { + const key = segments.shift(); + if (!key && Array.isArray(result)) { + return result.map(o => getPath(o, segments.join("."))); + } else { + result = result[key as string]; + } + } + + return result; +} + +/** + * Like getPath, but if the node is found, its value is set to @value + * @param obj The object (or Array) to walk through + * @param path The path (eg. "a.b.4.c") + * @param value The value to set + * @param createEmpty If true, create missing intermediate objects or arrays + * @returns The modified object + */ +export function setPath(obj: Record, path: string, value: any, createEmpty = false): Record { + path.trim().split(".").reduce( + (out, key, idx, arr) => { + if (out && idx === arr.length - 1) { + out[key] = value; + } + else { + if (out && out[key] === undefined && createEmpty) { + out[key] = arr[idx + 1].match(/^[0-9]+$/) ? [] : {}; + } + return out ? out[key] : undefined; + } + }, + obj + ); + return obj; +} + +/** + * If the argument is an array returns it as is. Otherwise puts it in an array + * (`[arg]`) and returns the result + * @param arg The element to test and possibly convert to array + * @category Utility + */ +export function makeArray(arg: any): T[] { + if (Array.isArray(arg)) { + return arg; + } + return [arg]; +} + +/** + * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl + * is not provided, the result would be a rooted path (one that starts with `/`). + * @param path The path to convert + * @param baseUrl The base URL + */ +export function absolute(path: string, baseUrl?: string): string +{ + if (path.match(/^http/)) return path; + if (path.match(/^urn/)) return path; + return String(baseUrl || "").replace(/\/+$/, "") + "/" + path.replace(/^\/+/, ""); +} + +/** + * Generates random strings. By default this returns random 8 characters long + * alphanumeric strings. + * @param strLength The length of the output string. Defaults to 8. + * @param charSet A string containing all the possible characters. + * Defaults to all the upper and lower-case letters plus digits. + * @category Utility + */ +export function randomString( + strLength = 8, + charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" +): string +{ + const result = []; + const len = charSet.length; + while (strLength--) { + result.push(charSet.charAt(Math.floor(Math.random() * len))); + } + return result.join(""); +} + +/** + * Decodes a JWT token and returns it's body. + * @param token The token to read + * @param env An `Adapter` or any other object that has an `atob` method + * @category Utility + */ +export function jwtDecode(token: string, env: fhirclient.Adapter): Record | null +{ + const payload = token.split(".")[1]; + return payload ? JSON.parse(env.atob(payload)) : null; +} + +/** + * Add a supplied number of seconds to the supplied Date, returning + * an integer number of seconds since the epoch + * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds) + * @param from Initial time (defaults to current time) + */ +export function getTimeInFuture(secondsAhead: number = 120, from?: Date | number): number { + return Math.floor(+(from || new Date()) / 1000 + secondsAhead) +} + +/** + * Given a token response, computes and returns the expiresAt timestamp. + * Note that this should only be used immediately after an access token is + * received, otherwise the computed timestamp will be incorrect. + * @param tokenResponse + * @param env + */ +export function getAccessTokenExpiration(tokenResponse: fhirclient.TokenResponse, env: fhirclient.Adapter): number +{ + const now = Math.floor(Date.now() / 1000); + + // Option 1 - using the expires_in property of the token response + if (tokenResponse.expires_in) { + return now + tokenResponse.expires_in; + } + + // Option 2 - using the exp property of JWT tokens (must not assume JWT!) + if (tokenResponse.access_token) { + let tokenBody = jwtDecode(tokenResponse.access_token, env); + if (tokenBody && tokenBody.exp) { + return tokenBody.exp; + } + } + + // Option 3 - if none of the above worked set this to 5 minutes after now + return now + 300; +} + +/** + * Groups the observations by code. Returns a map that will look like: + * ```js + * const map = client.byCodes(observations, "code"); + * // map = { + * // "55284-4": [ observation1, observation2 ], + * // "6082-2": [ observation3 ] + * // } + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + */ +export function byCode( + observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[], + property: string +): fhirclient.ObservationMap +{ + const ret: fhirclient.ObservationMap = {}; + + function handleCodeableConcept(concept: fhirclient.FHIR.CodeableConcept, observation: fhirclient.FHIR.Observation) { + if (concept && Array.isArray(concept.coding)) { + concept.coding.forEach(({ code }) => { + if (code) { + ret[code] = ret[code] || [] as fhirclient.FHIR.Observation[]; + ret[code].push(observation); + } + }); + } + } + + makeArray(observations).forEach(o => { + if (o.resourceType === "Observation" && o[property]) { + if (Array.isArray(o[property])) { + o[property].forEach((concept: fhirclient.FHIR.CodeableConcept) => handleCodeableConcept(concept, o)); + } else { + handleCodeableConcept(o[property], o); + } + } + }); + + return ret; +} + +/** + * First groups the observations by code using `byCode`. Then returns a function + * that accepts codes as arguments and will return a flat array of observations + * having that codes. Example: + * ```js + * const filter = client.byCodes(observations, "category"); + * filter("laboratory") // => [ observation1, observation2 ] + * filter("vital-signs") // => [ observation3 ] + * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] + * ``` + * @param observations Array of observations + * @param property The name of a CodeableConcept property to group by + */ +export function byCodes( + observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[], + property: string +): (...codes: string[]) => any[] +{ + const bank = byCode(observations, property); + return (...codes) => codes + .filter(code => (code + "") in bank) + .reduce( + (prev, code) => prev.concat(bank[code + ""]), + [] as fhirclient.FHIR.Observation[] + ); +} + +/** + * Given a conformance statement and a resource type, returns the name of the + * URL parameter that can be used to scope the resource type by patient ID. + */ +export function getPatientParam(conformance: fhirclient.FHIR.CapabilityStatement, resourceType: string): string +{ + // Find what resources are supported by this server + const resources = getPath(conformance, "rest.0.resource") || []; + + // Check if this resource is supported + const meta = resources.find((r: any) => r.type === resourceType); + if (!meta) { + throw new Error(`Resource "${resourceType}" is not supported by this FHIR server`); + } + + // Check if any search parameters are available for this resource + if (!Array.isArray(meta.searchParam)) { + throw new Error(`No search parameters supported for "${resourceType}" on this FHIR server`); + } + + // This is a rare case but could happen in generic workflows + if (resourceType == "Patient" && meta.searchParam.find((x: any) => x.name == "_id")) { + return "_id"; + } + + // Now find the first possible parameter name + const out = patientParams.find(p => meta.searchParam.find((x: any) => x.name == p)); + + // If there is no match + if (!out) { + throw new Error("I don't know what param to use for " + resourceType); + } + + return out; +} + +/** + * Resolves a reference to target window. It may also open new window or tab if + * the `target = "popup"` or `target = "_blank"`. + * @param target + * @param width Only used when `target = "popup"` + * @param height Only used when `target = "popup"` + */ +export async function getTargetWindow(target: fhirclient.WindowTarget, width: number = 800, height: number = 720): Promise +{ + // The target can be a function that returns the target. This can be + // used to open a layer pop-up with an iframe and then return a reference + // to that iframe (or its name) + if (typeof target == "function") { + target = await target(); + } + + // The target can be a window reference + if (target && typeof target == "object") { + return target; + } + + // At this point target must be a string + if (typeof target != "string") { + _debug("Invalid target type '%s'. Failing back to '_self'.", typeof target); + return self; + } + + // Current window + if (target == "_self") { + return self; + } + + // The parent frame + if (target == "_parent") { + return parent; + } + + // The top window + if (target == "_top") { + return top || self; + } + + // New tab or window + if (target == "_blank") { + let error, targetWindow: Window | null = null; + try { + targetWindow = window.open("", "SMARTAuthPopup"); + if (!targetWindow) { + throw new Error("Perhaps window.open was blocked"); + } + } catch (e) { + error = e; + } + + if (!targetWindow) { + _debug("Cannot open window. Failing back to '_self'. %s", error); + return self; + } else { + return targetWindow; + } + } + + // Popup window + if (target == "popup") { + let error, targetWindow: Window | null = null; + // if (!targetWindow || targetWindow.closed) { + try { + targetWindow = window.open("", "SMARTAuthPopup", [ + "height=" + height, + "width=" + width, + "menubar=0", + "resizable=1", + "status=0", + "top=" + (screen.height - height) / 2, + "left=" + (screen.width - width) / 2 + ].join(",")); + if (!targetWindow) { + throw new Error("Perhaps the popup window was blocked"); + } + } catch (e) { + error = e; + } + + if (!targetWindow) { + _debug("Cannot open window. Failing back to '_self'. %s", error); + return self; + } else { + return targetWindow; + } + } + + // Frame or window by name + const winOrFrame: Window = frames[target as any]; + if (winOrFrame) { + return winOrFrame; + } + + _debug("Unknown target '%s'. Failing back to '_self'.", target); + return self; +} + +export function assert(condition: any, message: string): asserts condition { + if (!(condition)) { + throw new Error(message) + } +} + +export function assertJsonPatch(patch: fhirclient.JsonPatch): asserts patch { + assert(Array.isArray(patch), "The JSON patch must be an array") + assert(patch.length > 0, "The JSON patch array should not be empty") + patch.forEach((operation: fhirclient.JsonPatchOperation) => { + assert( + ["add", "replace", "test", "move", "copy", "remove"].indexOf(operation.op) > -1, + 'Each patch operation must have an "op" property which must be one of: "add", "replace", "test", "move", "copy", "remove"' + ) + assert(operation.path && typeof operation.path, `Invalid "${operation.op}" operation. Missing "path" property`) + + if (operation.op == "add" || operation.op == "replace" || operation.op == "test") { + assert("value" in operation, `Invalid "${operation.op}" operation. Missing "value" property`) + assert(Object.keys(operation).length == 3, `Invalid "${operation.op}" operation. Contains unknown properties`) + } + + else if (operation.op == "move" || operation.op == "copy") { + assert(typeof operation.from == "string", `Invalid "${operation.op}" operation. Requires a string "from" property`) + assert(Object.keys(operation).length == 3, `Invalid "${operation.op}" operation. Contains unknown properties`) + } + + else { + assert(Object.keys(operation).length == 2, `Invalid "${operation.op}" operation. Contains unknown properties`) + } + }) +} diff --git a/src/security/browser.ts b/src/security/browser.ts new file mode 100644 index 00000000..a8504efb --- /dev/null +++ b/src/security/browser.ts @@ -0,0 +1,110 @@ +import { encodeURL, fromUint8Array } from "js-base64" +import { fhirclient } from "../types" + + +const crypto: Crypto = typeof globalThis === "object" && globalThis.crypto ? + globalThis.crypto : + require("isomorphic-webcrypto").default; + +const subtle = () => { + if (!crypto.subtle) { + if (!globalThis.isSecureContext) { + throw new Error( + "Some of the required subtle crypto functionality is not " + + "available unless you run this app in secure context (using " + + "HTTPS or running locally). See " + + "https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts" + ) + } + throw new Error( + "Some of the required subtle crypto functionality is not " + + "available in the current environment (no crypto.subtle)" + ) + } + return crypto.subtle +} + + +interface PkcePair { + codeChallenge: string + codeVerifier: string +} + +const ALGS = { + ES384: { + name: "ECDSA", + namedCurve: "P-384" + } as EcKeyGenParams, + RS384: { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: { + name: 'SHA-384' + } + } as RsaHashedKeyGenParams +}; + +export function randomBytes(count: number): Uint8Array { + return crypto.getRandomValues(new Uint8Array(count)); +} + +export async function digestSha256(payload: string): Promise { + const prepared = new TextEncoder().encode(payload); + const hash = await subtle().digest('SHA-256', prepared); + return new Uint8Array(hash); +} + +export const generatePKCEChallenge = async (entropy = 96): Promise => { + const inputBytes = randomBytes(entropy) + const codeVerifier = fromUint8Array(inputBytes, true) + const codeChallenge = fromUint8Array(await digestSha256(codeVerifier), true) + return { codeChallenge, codeVerifier } +} + +export async function importJWK(jwk: fhirclient.JWK): Promise { + // alg is optional in JWK but we need it here! + if (!jwk.alg) { + throw new Error('The "alg" property of the JWK must be set to "ES384" or "RS384"') + } + + // Use of the "key_ops" member is OPTIONAL, unless the application requires its presence. + // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3 + // + // In our case the app will only import private keys so we can assume "sign" + if (!Array.isArray(jwk.key_ops)) { + jwk.key_ops = ["sign"] + } + + // In this case the JWK has a "key_ops" array and "sign" is not listed + if (!jwk.key_ops.includes("sign")) { + throw new Error('The "key_ops" property of the JWK does not contain "sign"') + } + + try { + return await subtle().importKey( + "jwk", + jwk, + ALGS[jwk.alg], + jwk.ext === true, + jwk.key_ops// || ['sign'] + ) + } catch (e) { + throw new Error(`The ${jwk.alg} is not supported by this browser: ${e}`) + } +} + +export async function signCompactJws(alg: keyof typeof ALGS, privateKey: CryptoKey, header: any, payload: any): Promise { + + const jwtHeader = JSON.stringify({ ...header, alg }); + const jwtPayload = JSON.stringify(payload); + const jwtAuthenticatedContent = `${encodeURL(jwtHeader)}.${encodeURL(jwtPayload)}`; + + const signature = await subtle().sign( + { ...privateKey.algorithm, hash: 'SHA-384' }, + privateKey, + new TextEncoder().encode(jwtAuthenticatedContent) + ); + + return `${jwtAuthenticatedContent}.${fromUint8Array(new Uint8Array(signature), true)}` +} diff --git a/src/security/server.ts b/src/security/server.ts new file mode 100644 index 00000000..7a3e106b --- /dev/null +++ b/src/security/server.ts @@ -0,0 +1,85 @@ +import { + base64url, + KeyLike, + SignJWT, + importJWK as joseImportJWK +} from "jose" +import { + randomBytes, + createHash +} from "crypto" +import { fhirclient } from "../types"; + + +interface PkcePair { + codeChallenge: string; + codeVerifier: string; +} + +// declare const ALGS: { +// ES384: EcKeyGenParams; +// RS384: RsaHashedKeyGenParams; +// }; + +type SupportedAlg = 'ES384' | 'RS384' + + +export { randomBytes } + +export async function digestSha256(payload: string) { + const hash = createHash('sha256') + hash.update(payload) + return hash.digest() +} + +export async function generatePKCEChallenge(entropy = 96): Promise { + const inputBytes = randomBytes(entropy) + const codeVerifier = base64url.encode(inputBytes) + const codeChallenge = base64url.encode(await digestSha256(codeVerifier)) + return { codeChallenge, codeVerifier } +} + +export async function importJWK(jwk: fhirclient.JWK): Promise { + // alg is optional in JWK but we need it here! + if (!jwk.alg) { + throw new Error('The "alg" property of the JWK must be set to "ES384" or "RS384"') + } + + // Use of the "key_ops" member is OPTIONAL, unless the application requires its presence. + // https://www.rfc-editor.org/rfc/rfc7517.html#section-4.3 + // + // In our case the app will only import private keys so we can assume "sign" + if (!Array.isArray(jwk.key_ops)) { + jwk.key_ops = ["sign"] + } + + // In this case the JWK has a "key_ops" array and "sign" is not listed + if (!jwk.key_ops.includes("sign")) { + throw new Error('The "key_ops" property of the JWK does not contain "sign"') + } + + return joseImportJWK(jwk) as Promise +} + +export async function signCompactJws(alg: SupportedAlg, privateKey: KeyLike, header: any, payload: any): Promise { + return new SignJWT(payload).setProtectedHeader({...header, alg}).sign(privateKey) +} + +// async function test(){ + +// const { generateKeyPair } = require("jose") + +// const esk = await generateKeyPair("ES384", { extractable: true }); +// console.log("ES384 privateKey:", esk.privateKey); +// const eskSigned = await new SignJWT({ iss: "issuer" }).setProtectedHeader({ alg: 'ES384', jwku: "test" }).sign(esk.privateKey); +// console.log("Signed ES384", eskSigned); +// console.log(JSON.stringify(await exportJWK(esk.publicKey))) + +// const rsk = await generateKeyPair('RS384', { extractable: true }); +// console.log("RS384 privateKey:", rsk.privateKey); +// const rskSigned = await new SignJWT({ iss: "issuer" }).setProtectedHeader({ alg: 'RS384', jwku: "test" }).sign(rsk.privateKey); +// console.log("Signed RS384", rskSigned); +// console.log(JSON.stringify(await exportJWK(rsk.publicKey))) +// } + +// test() \ No newline at end of file diff --git a/src/settings.ts b/src/settings.ts new file mode 100644 index 00000000..057c9e7b --- /dev/null +++ b/src/settings.ts @@ -0,0 +1,120 @@ +/** + * Combined list of FHIR resource types accepting patient parameter in FHIR R2-R4 + */ +export const patientCompartment = [ + "Account", + "AdverseEvent", + "AllergyIntolerance", + "Appointment", + "AppointmentResponse", + "AuditEvent", + "Basic", + "BodySite", + "BodyStructure", + "CarePlan", + "CareTeam", + "ChargeItem", + "Claim", + "ClaimResponse", + "ClinicalImpression", + "Communication", + "CommunicationRequest", + "Composition", + "Condition", + "Consent", + "Coverage", + "CoverageEligibilityRequest", + "CoverageEligibilityResponse", + "DetectedIssue", + "DeviceRequest", + "DeviceUseRequest", + "DeviceUseStatement", + "DiagnosticOrder", + "DiagnosticReport", + "DocumentManifest", + "DocumentReference", + "EligibilityRequest", + "Encounter", + "EnrollmentRequest", + "EpisodeOfCare", + "ExplanationOfBenefit", + "FamilyMemberHistory", + "Flag", + "Goal", + "Group", + "ImagingManifest", + "ImagingObjectSelection", + "ImagingStudy", + "Immunization", + "ImmunizationEvaluation", + "ImmunizationRecommendation", + "Invoice", + "List", + "MeasureReport", + "Media", + "MedicationAdministration", + "MedicationDispense", + "MedicationOrder", + "MedicationRequest", + "MedicationStatement", + "MolecularSequence", + "NutritionOrder", + "Observation", + "Order", + "Patient", + "Person", + "Procedure", + "ProcedureRequest", + "Provenance", + "QuestionnaireResponse", + "ReferralRequest", + "RelatedPerson", + "RequestGroup", + "ResearchSubject", + "RiskAssessment", + "Schedule", + "ServiceRequest", + "Specimen", + "SupplyDelivery", + "SupplyRequest", + "VisionPrescription" +]; + +/** + * Map of FHIR releases and their abstract version as number + */ +export const fhirVersions = { + "0.4.0": 2, + "0.5.0": 2, + "1.0.0": 2, + "1.0.1": 2, + "1.0.2": 2, + "1.1.0": 3, + "1.4.0": 3, + "1.6.0": 3, + "1.8.0": 3, + "3.0.0": 3, + "3.0.1": 3, + "3.3.0": 4, + "3.5.0": 4, + "4.0.0": 4, + "4.0.1": 4 +}; + +/** + * Combined (FHIR R2-R4) list of search parameters that can be used to scope + * a request by patient ID. + */ +export const patientParams = [ + "patient", + "subject", + "requester", + "member", + "actor", + "beneficiary" +]; + +/** + * The name of the sessionStorage entry that contains the current key + */ +export const SMART_KEY = "SMART_KEY"; diff --git a/src/smart.ts b/src/smart.ts new file mode 100644 index 00000000..2e179d89 --- /dev/null +++ b/src/smart.ts @@ -0,0 +1,786 @@ +/* global window */ +import { + debug as _debug, + request, + getPath, + getTimeInFuture, + randomString, + getAndCache, + fetchConformanceStatement, + getAccessTokenExpiration, + getTargetWindow, + assert +} from "./lib"; +import Client from "./Client"; +import { SMART_KEY } from "./settings"; +import { fhirclient } from "./types"; + +const debug = _debug.extend("oauth2"); + +export { SMART_KEY as KEY }; + +function isBrowser() { + return typeof window === "object"; +} + +/** + * Fetches the well-known json file from the given base URL. + * Note that the result is cached in memory (until the page is reloaded in the + * browser) because it might have to be re-used by the client + * @param baseUrl The base URL of the FHIR server + */ +export function fetchWellKnownJson(baseUrl = "/", requestOptions?: RequestInit): Promise +{ + const url = String(baseUrl).replace(/\/*$/, "/") + ".well-known/smart-configuration"; + return getAndCache(url, requestOptions).catch((ex: Error) => { + throw new Error(`Failed to fetch the well-known json "${url}". ${ex.message}`); + }); +} + +/** + * Fetch a "WellKnownJson" and extract the SMART endpoints from it + */ +function getSecurityExtensionsFromWellKnownJson(baseUrl = "/", requestOptions?: RequestInit): Promise +{ + return fetchWellKnownJson(baseUrl, requestOptions).then(meta => { + if (!meta.authorization_endpoint || !meta.token_endpoint) { + throw new Error("Invalid wellKnownJson"); + } + return { + registrationUri : meta.registration_endpoint || "", + authorizeUri : meta.authorization_endpoint, + tokenUri : meta.token_endpoint, + codeChallengeMethods: meta.code_challenge_methods_supported || [] + }; + }); +} + +/** + * Fetch a `CapabilityStatement` and extract the SMART endpoints from it + */ +function getSecurityExtensionsFromConformanceStatement(baseUrl = "/", requestOptions?: RequestInit): Promise +{ + return fetchConformanceStatement(baseUrl, requestOptions).then(meta => { + const nsUri = "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"; + const extensions = ((getPath(meta || {}, "rest.0.security.extension") || []) as Array>) + .filter(e => e.url === nsUri) + .map(o => o.extension)[0]; + + const out:fhirclient.OAuthSecurityExtensions = { + registrationUri : "", + authorizeUri : "", + tokenUri : "", + codeChallengeMethods: [], + }; + + if (extensions) { + extensions.forEach(ext => { + if (ext.url === "register") { + out.registrationUri = ext.valueUri; + } + if (ext.url === "authorize") { + out.authorizeUri = ext.valueUri; + } + if (ext.url === "token") { + out.tokenUri = ext.valueUri; + } + }); + } + + return out; + }); +} + + +/** + * Given a FHIR server, returns an object with it's Oauth security endpoints + * that we are interested in. This will try to find the info in both the + * `CapabilityStatement` and the `.well-known/smart-configuration`. Whatever + * Arrives first will be used and the other request will be aborted. + * @param [baseUrl = "/"] Fhir server base URL + */ +export function getSecurityExtensions(baseUrl = "/"): Promise +{ + return getSecurityExtensionsFromWellKnownJson(baseUrl) + .catch(() => getSecurityExtensionsFromConformanceStatement(baseUrl)); +} + +/** + * Starts the SMART Launch Sequence. + * > **IMPORTANT**: + * `authorize()` will end up redirecting you to the authorization server. + * This means that you should not add anything to the returned promise chain. + * Any code written directly after the authorize() call might not be executed + * due to that redirect! + * @param env + * @param [params] + */ +export async function authorize( + env: fhirclient.Adapter, + params: fhirclient.AuthorizeParams | fhirclient.AuthorizeParams[] = {} +): Promise +{ + const url = env.getUrl(); + + // Multiple config for EHR launches --------------------------------------- + if (Array.isArray(params)) { + const urlISS = url.searchParams.get("iss") || url.searchParams.get("fhirServiceUrl"); + if (!urlISS) { + throw new Error( + 'Passing in an "iss" url parameter is required if authorize ' + + 'uses multiple configurations' + ); + } + // pick the right config + const cfg = params.find(x => { + if (x.issMatch) { + if (typeof x.issMatch === "function") { + return !!x.issMatch(urlISS); + } + if (typeof x.issMatch === "string") { + return x.issMatch === urlISS; + } + if (x.issMatch instanceof RegExp) { + return x.issMatch.test(urlISS); + } + } + return false; + }); + assert(cfg, `No configuration found matching the current "iss" parameter "${urlISS}"`); + return await authorize(env, cfg); + } + // ------------------------------------------------------------------------ + + // Obtain input + const { + clientSecret, + fakeTokenResponse, + encounterId, + target, + width, + height, + pkceMode, + clientPublicKeySetUrl, + // Two deprecated values to use as fall-back values later + redirect_uri, + client_id, + } = params; + + let { + iss, + launch, + patientId, + fhirServiceUrl, + redirectUri, + noRedirect, + scope = "", + clientId, + completeInTarget, + clientPrivateJwk + } = params; + + const storage = env.getStorage(); + + // For these, a url param takes precedence over inline option + iss = url.searchParams.get("iss") || iss; + fhirServiceUrl = url.searchParams.get("fhirServiceUrl") || fhirServiceUrl; + launch = url.searchParams.get("launch") || launch; + patientId = url.searchParams.get("patientId") || patientId; + clientId = url.searchParams.get("clientId") || clientId; + + // If there's still no clientId or redirectUri, check deprecated params + if (!clientId) { + clientId = client_id; + } + if (!redirectUri) { + redirectUri = redirect_uri; + } + + if (!redirectUri) { + redirectUri = env.relative("."); + } else if (!redirectUri.match(/^https?\:\/\//)) { + redirectUri = env.relative(redirectUri); + } + + const serverUrl = String(iss || fhirServiceUrl || ""); + + // Validate input + if (!serverUrl) { + throw new Error( + "No server url found. It must be specified as `iss` or as " + + "`fhirServiceUrl` parameter" + ); + } + + if (iss) { + debug("Making %s launch...", launch ? "EHR" : "standalone"); + } + + // append launch scope if needed + if (launch && !scope.match(/launch/)) { + scope += " launch"; + } + + if (isBrowser()) { + const inFrame = isInFrame(); + const inPopUp = isInPopUp(); + + if ((inFrame || inPopUp) && completeInTarget !== true && completeInTarget !== false) { + + // completeInTarget will default to true if authorize is called from + // within an iframe. This is to avoid issues when the entire app + // happens to be rendered in an iframe (including in some EHRs), + // even though that was not how the app developer's intention. + completeInTarget = inFrame; + + // In this case we can't always make the best decision so ask devs + // to be explicit in their configuration. + console.warn( + 'Your app is being authorized from within an iframe or popup ' + + 'window. Please be explicit and provide a "completeInTarget" ' + + 'option. Use "true" to complete the authorization in the ' + + 'same window, or "false" to try to complete it in the parent ' + + 'or the opener window. See http://docs.smarthealthit.org/client-js/api.html' + ); + } + } + + // If `authorize` is called, make sure we clear any previous state (in case + // this is a re-authorize) + const oldKey = await storage.get(SMART_KEY); + await storage.unset(oldKey); + + // create initial state + const stateKey = randomString(16); + const state: fhirclient.ClientState = { + clientId, + scope, + redirectUri, + serverUrl, + clientSecret, + clientPrivateJwk, + tokenResponse: {}, + key: stateKey, + completeInTarget, + clientPublicKeySetUrl + }; + + const fullSessionStorageSupport = isBrowser() ? + getPath(env, "options.fullSessionStorageSupport") : + true; + + if (fullSessionStorageSupport) { + await storage.set(SMART_KEY, stateKey); + } + + // fakeTokenResponse to override stuff (useful in development) + if (fakeTokenResponse) { + Object.assign(state.tokenResponse!, fakeTokenResponse); + } + + // Fixed patientId (useful in development) + if (patientId) { + Object.assign(state.tokenResponse!, { patient: patientId }); + } + + // Fixed encounterId (useful in development) + if (encounterId) { + Object.assign(state.tokenResponse!, { encounter: encounterId }); + } + + let redirectUrl = redirectUri + "?state=" + encodeURIComponent(stateKey); + + // bypass oauth if fhirServiceUrl is used (but iss takes precedence) + if (fhirServiceUrl && !iss) { + debug("Making fake launch..."); + await storage.set(stateKey, state); + if (noRedirect) { + return redirectUrl; + } + return await env.redirect(redirectUrl); + } + + // Get oauth endpoints and add them to the state + const extensions = await getSecurityExtensions(serverUrl); + Object.assign(state, extensions); + await storage.set(stateKey, state); + + // If this happens to be an open server and there is no authorizeUri + if (!state.authorizeUri) { + if (noRedirect) { + return redirectUrl; + } + return await env.redirect(redirectUrl); + } + + // build the redirect uri + const redirectParams = [ + "response_type=code", + "client_id=" + encodeURIComponent(clientId || ""), + "scope=" + encodeURIComponent(scope), + "redirect_uri=" + encodeURIComponent(redirectUri), + "aud=" + encodeURIComponent(serverUrl), + "state=" + encodeURIComponent(stateKey) + ]; + + // also pass this in case of EHR launch + if (launch) { + redirectParams.push("launch=" + encodeURIComponent(launch)); + } + + if (shouldIncludeChallenge(extensions.codeChallengeMethods.includes('S256'), pkceMode)) { + let codes = await env.security.generatePKCEChallenge() + Object.assign(state, codes); + await storage.set(stateKey, state); + redirectParams.push("code_challenge=" + state.codeChallenge);// note that the challenge is ALREADY encoded properly + redirectParams.push("code_challenge_method=S256"); + } + + redirectUrl = state.authorizeUri + "?" + redirectParams.join("&"); + + if (noRedirect) { + return redirectUrl; + } + + if (target && isBrowser()) { + let win: Window; + + win = await getTargetWindow(target, width, height); + + if (win !== self) { + try { + // Also remove any old state from the target window and then + // transfer the current state there + win.sessionStorage.removeItem(oldKey); + win.sessionStorage.setItem(stateKey, JSON.stringify(state)); + } catch (ex) { + _debug(`Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to "_self". %s`, ex); + win = self; + } + } + + if (win !== self) { + try { + win.location.href = redirectUrl; + self.addEventListener("message", onMessage); + } catch (ex) { + _debug(`Failed to modify window.location. Perhaps it is from different origin?. Failing back to "_self". %s`, ex); + self.location.href = redirectUrl; + } + } else { + self.location.href = redirectUrl; + } + + return; + } + else { + return await env.redirect(redirectUrl); + } +} + +function shouldIncludeChallenge(S256supported: boolean, pkceMode?: string) { + if (pkceMode === "disabled") { + return false; + } + if (pkceMode === "unsafeV1") { + return true; + } + if (pkceMode === "required") { + if (!S256supported) { + throw new Error("Required PKCE code challenge method (`S256`) was not found in the server's codeChallengeMethods declaration."); + } + return true; + } + return S256supported; +} + +/** + * Checks if called within a frame. Only works in browsers! + * If the current window has a `parent` or `top` properties that refer to + * another window, returns true. If trying to access `top` or `parent` throws an + * error, returns true. Otherwise returns `false`. + */ +export function isInFrame() { + try { + return self !== top && parent !== self; + } catch (e) { + return true; + } +} + +/** + * Checks if called within another window (popup or tab). Only works in browsers! + * To consider itself called in a new window, this function verifies that: + * 1. `self === top` (not in frame) + * 2. `!!opener && opener !== self` The window has an opener + * 3. `!!window.name` The window has a `name` set + */ +export function isInPopUp() { + try { + return self === top && + !!opener && + opener !== self && + !!window.name; + } catch (e) { + return false; + } +} + +/** + * Another window can send a "completeAuth" message to this one, making it to + * navigate to e.data.url + * @param e The message event + */ +export function onMessage(e: MessageEvent) { + if (e.data.type == "completeAuth" && e.origin === new URL(self.location.href).origin) { + window.removeEventListener("message", onMessage); + window.location.href = e.data.url; + } +} + +/** + * The ready function should only be called on the page that represents + * the redirectUri. We typically land there after a redirect from the + * authorization server, but this code will also be executed upon subsequent + * navigation or page refresh. + */ +export async function ready(env: fhirclient.Adapter, options: fhirclient.ReadyOptions = {}): Promise +{ + const url = env.getUrl(); + const Storage = env.getStorage(); + const params = url.searchParams; + + let key = params.get("state"); + const code = params.get("code"); + const authError = params.get("error"); + const authErrorDescription = params.get("error_description"); + + if (!key) { + key = await Storage.get(SMART_KEY); + } + + // Start by checking the url for `error` and `error_description` parameters. + // This happens when the auth server rejects our authorization attempt. In + // this case it has no other way to tell us what the error was, other than + // appending these parameters to the redirect url. + // From client's point of view, this is not very reliable (because we can't + // know how we have landed on this page - was it a redirect or was it loaded + // manually). However, if `ready()` is being called, we can assume + // that the url comes from the auth server (otherwise the app won't work + // anyway). + if (authError || authErrorDescription) { + throw new Error([ + authError, + authErrorDescription + ].filter(Boolean).join(": ")); + } + + debug("key: %s, code: %s", key, code); + + // key might be coming from the page url so it might be empty or missing + assert(key, "No 'state' parameter found. Please (re)launch the app."); + + // Check if we have a previous state + let state = (await Storage.get(key)) as fhirclient.ClientState; + + const fullSessionStorageSupport = isBrowser() ? + getPath(env, "options.fullSessionStorageSupport") : + true; + + // If we are in a popup window or an iframe and the authorization is + // complete, send the location back to our opener and exit. + if (isBrowser() && state && !state.completeInTarget) { + + const inFrame = isInFrame(); + const inPopUp = isInPopUp(); + + // we are about to return to the opener/parent where completeAuth will + // be called again. In rare cases the opener or parent might also be + // a frame or popup. Then inFrame or inPopUp will be true but we still + // have to stop going up the chain. To guard against that weird form of + // recursion we pass one additional parameter to the url which we later + // remove. + if ((inFrame || inPopUp) && !url.searchParams.get("complete")) { + url.searchParams.set("complete", "1"); + const { href, origin } = url; + if (inFrame) { + parent.postMessage({ type: "completeAuth", url: href }, origin); + } + if (inPopUp) { + opener.postMessage({ type: "completeAuth", url: href }, origin); + window.close(); + } + + return new Promise(() => { /* leave it pending!!! */ }); + } + } + + url.searchParams.delete("complete"); + + // Do we have to remove the `code` and `state` params from the URL? + const hasState = params.has("state"); + + if (isBrowser() && getPath(env, "options.replaceBrowserHistory") && (code || hasState)) { + // `code` is the flag that tell us to request an access token. + // We have to remove it, otherwise the page will authorize on + // every load! + if (code) { + params.delete("code"); + debug("Removed code parameter from the url."); + } + + // If we have `fullSessionStorageSupport` it means we no longer + // need the `state` key. It will be stored to a well know + // location - sessionStorage[SMART_KEY]. However, no + // fullSessionStorageSupport means that this "well know location" + // might be shared between windows and tabs. In this case we + // MUST keep the `state` url parameter. + if (hasState && fullSessionStorageSupport) { + params.delete("state"); + debug("Removed state parameter from the url."); + } + + // If the browser does not support the replaceState method for the + // History Web API, the "code" parameter cannot be removed. As a + // consequence, the page will (re)authorize on every load. The + // workaround is to reload the page to new location without those + // parameters. If that is not acceptable replaceBrowserHistory + // should be set to false. + if (window.history.replaceState) { + window.history.replaceState({}, "", url.href); + } + } + + // If the state does not exist, it means the page has been loaded directly. + assert(state, "No state found! Please (re)launch the app."); + + // Assume the client has already completed a token exchange when + // there is no code (but we have a state) or access token is found in state + const authorized = !code || state.tokenResponse?.access_token; + + // If we are authorized already, then this is just a reload. + // Otherwise, we have to complete the code flow + if (!authorized && state.tokenUri) { + + assert(code, "'code' url parameter is required"); + + debug("Preparing to exchange the code for access token..."); + const requestOptions = await buildTokenRequest(env, { + code, + state, + clientPublicKeySetUrl: options.clientPublicKeySetUrl, + privateKey: options.privateKey || state.clientPrivateJwk + }); + debug("Token request options: %O", requestOptions); + + // The EHR authorization server SHALL return a JSON structure that + // includes an access token or a message indicating that the + // authorization request has been denied. + const tokenResponse = await request(state.tokenUri, requestOptions); + debug("Token response: %O", tokenResponse); + assert(tokenResponse.access_token, "Failed to obtain access token."); + + // Now we need to determine when is this authorization going to expire + state.expiresAt = getAccessTokenExpiration(tokenResponse, env); + + // save the tokenResponse so that we don't have to re-authorize on + // every page reload + state = { ...state, tokenResponse }; + await Storage.set(key, state); + debug("Authorization successful!"); + } + else { + debug(state.tokenResponse?.access_token ? + "Already authorized" : + "No authorization needed" + ); + } + + if (fullSessionStorageSupport) { + await Storage.set(SMART_KEY, key); + } + + const client = new Client(env, state); + debug("Created client instance: %O", client); + return client; +} + +/** + * Builds the token request options. Does not make the request, just + * creates it's configuration and returns it in a Promise. + */ +export async function buildTokenRequest( + env: fhirclient.Adapter, + { + code, + state, + clientPublicKeySetUrl, + privateKey + }: { + /** + * The `code` URL parameter received from the auth redirect + */ + code: string, + + /** + * The app state + */ + state: fhirclient.ClientState + + /** + * If provided overrides the `clientPublicKeySetUrl` from the authorize + * options (if any). Used for `jku` token header in case of asymmetric auth. + */ + clientPublicKeySetUrl?: string + + /** + * Can be a private JWK, or an object with alg, kid and key properties, + * where `key` is an un-extractable private CryptoKey object. + */ + privateKey?: fhirclient.JWK | { + key: CryptoKey + alg: "RS384" | "ES384" + kid: string + } + } +): Promise +{ + const { redirectUri, clientSecret, tokenUri, clientId, codeVerifier } = state; + + assert(redirectUri, "Missing state.redirectUri"); + assert(tokenUri, "Missing state.tokenUri"); + assert(clientId, "Missing state.clientId"); + + const requestOptions: Record = { + method: "POST", + headers: { "content-type": "application/x-www-form-urlencoded" }, + body: `code=${code}&grant_type=authorization_code&redirect_uri=${ + encodeURIComponent(redirectUri)}` + }; + + // For public apps, authentication is not possible (and thus not required), + // since a client with no secret cannot prove its identity when it issues a + // call. (The end-to-end system can still be secure because the client comes + // from a known, https protected endpoint specified and enforced by the + // redirect uri.) For confidential apps, an Authorization header using HTTP + // Basic authentication is required, where the username is the app’s + // client_id and the password is the app’s client_secret (see example). + if (clientSecret) { + requestOptions.headers.authorization = "Basic " + env.btoa( + clientId + ":" + clientSecret + ); + debug( + "Using state.clientSecret to construct the authorization header: %s", + requestOptions.headers.authorization + ); + } + + // Asymmetric auth + else if (privateKey) { + + const pk = "key" in privateKey ? + privateKey.key as CryptoKey: + await env.security.importJWK(privateKey as fhirclient.JWK) + + const jwtHeaders = { + typ: "JWT", + kid: privateKey.kid, + jku: clientPublicKeySetUrl || state.clientPublicKeySetUrl + }; + + const jwtClaims = { + iss: clientId, + sub: clientId, + aud: tokenUri, + jti: env.base64urlencode(env.security.randomBytes(32)), + exp: getTimeInFuture(120) // two minutes in the future + }; + + const clientAssertion = await env.security.signCompactJws(privateKey.alg, pk, jwtHeaders, jwtClaims); + requestOptions.body += `&client_assertion_type=${encodeURIComponent("urn:ietf:params:oauth:client-assertion-type:jwt-bearer")}`; + requestOptions.body += `&client_assertion=${encodeURIComponent(clientAssertion)}`; + debug("Using state.clientPrivateJwk to add a client_assertion to the POST body") + } + + // Public client + else { + debug("Public client detected; adding state.clientId to the POST body"); + requestOptions.body += `&client_id=${encodeURIComponent(clientId)}`; + } + + if (codeVerifier) { + debug("Found state.codeVerifier, adding to the POST body") + // Note that the codeVerifier is ALREADY encoded properly + requestOptions.body += "&code_verifier=" + codeVerifier; + } + + return requestOptions as RequestInit; +} + +/** + * This function can be used when you want to handle everything in one page + * (no launch endpoint needed). You can think of it as if it does: + * ```js + * authorize(options).then(ready) + * ``` + * + * **Be careful with init()!** There are some details you need to be aware of: + * + * 1. It will only work if your launch_uri is the same as your redirect_uri. + * While this should be valid, we can’t promise that every EHR will allow you + * to register client with such settings. + * 2. Internally, `init()` will be called twice. First it will redirect to the + * EHR, then the EHR will redirect back to the page where init() will be + * called again to complete the authorization. This is generally fine, + * because the returned promise will only be resolved once, after the second + * execution, but please also consider the following: + * - You should wrap all your app’s code in a function that is only executed + * after `init()` resolves! + * - Since the page will be loaded twice, you must be careful if your code + * has global side effects that can persist between page reloads + * (for example writing to localStorage). + * 3. For standalone launch, only use init in combination with offline_access + * scope. Once the access_token expires, if you don’t have a refresh_token + * there is no way to re-authorize properly. We detect that and delete the + * expired access token, but it still means that the user will have to + * refresh the page twice to re-authorize. + * @param env The adapter + * @param authorizeOptions The authorize options + */ +export async function init( + env: fhirclient.Adapter, + authorizeOptions: fhirclient.AuthorizeParams, + readyOptions?: fhirclient.ReadyOptions +): Promise +{ + const url = env.getUrl(); + const code = url.searchParams.get("code"); + const state = url.searchParams.get("state"); + + // if `code` and `state` params are present we need to complete the auth flow + if (code && state) { + return ready(env, readyOptions); + } + + // Check for existing client state. If state is found, it means a client + // instance have already been created in this session and we should try to + // "revive" it. + const storage = env.getStorage(); + const key = state || await storage.get(SMART_KEY); + const cached = await storage.get(key); + if (cached) { + return new Client(env, cached); + } + + // Otherwise try to launch + return authorize(env, authorizeOptions).then(() => { + // `init` promises a Client but that cannot happen in this case. The + // browser will be redirected (unload the page and be redirected back + // to it later and the same init function will be called again). On + // success, authorize will resolve with the redirect url but we don't + // want to return that from this promise chain because it is not a + // Client instance. At the same time, if authorize fails, we do want to + // pass the error to those waiting for a client instance. + return new Promise(() => { /* leave it pending!!! */ }); + }); +} diff --git a/src/storage/BrowserStorage.ts b/src/storage/BrowserStorage.ts new file mode 100644 index 00000000..b489cffd --- /dev/null +++ b/src/storage/BrowserStorage.ts @@ -0,0 +1,40 @@ +export default class Storage +{ + /** + * Gets the value at `key`. Returns a promise that will be resolved + * with that value (or undefined for missing keys). + */ + async get(key: string): Promise + { + const value = sessionStorage[key]; + if (value) { + return JSON.parse(value); + } + return null; + } + + /** + * Sets the `value` on `key` and returns a promise that will be resolved + * with the value that was set. + */ + async set(key: string, value: any): Promise + { + sessionStorage[key] = JSON.stringify(value); + return value; + } + + /** + * Deletes the value at `key`. Returns a promise that will be resolved + * with true if the key was deleted or with false if it was not (eg. if + * did not exist). + */ + async unset(key: string): Promise + { + if (key in sessionStorage) { + delete sessionStorage[key]; + return true; + } + return false; + } + +} diff --git a/src/storage/ServerStorage.ts b/src/storage/ServerStorage.ts new file mode 100644 index 00000000..d57345d7 --- /dev/null +++ b/src/storage/ServerStorage.ts @@ -0,0 +1,49 @@ +import { fhirclient } from "../types"; + + +export default class ServerStorage +{ + request: fhirclient.RequestWithSession; + + /** + * @param request The HTTP request that is expected to have a + * "session" object property. + */ + constructor(request: fhirclient.RequestWithSession) + { + this.request = request; + } + + /** + * Gets the value at `key`. Returns a promise that will be resolved + * with that value (or undefined for missing keys). + */ + async get(key: string): Promise + { + return this.request.session[key]; + } + + /** + * Sets the `value` on `key` and returns a promise that will be resolved + * with the value that was set. + */ + async set(key: string, value: any): Promise + { + this.request.session[key] = value; + return value; + } + + /** + * Deletes the value at `key`. Returns a promise that will be resolved + * with true if the key was deleted or with false if it was not (eg. if + * did not exist). + */ + async unset(key: string): Promise + { + if (Object.prototype.hasOwnProperty.call(this.request.session, key)) { + delete this.request.session[key]; + return true; + } + return false; + } +} diff --git a/src/strings.ts b/src/strings.ts new file mode 100644 index 00000000..2c2df674 --- /dev/null +++ b/src/strings.ts @@ -0,0 +1,7 @@ +// This map contains reusable debug messages (only those used in multiple places) +export default { + expired : "Session expired! Please re-launch the app", + noScopeForId : "Trying to get the ID of the selected %s. Please add 'launch' or 'launch/%s' to the requested scopes and try again.", + noIfNoAuth : "You are trying to get %s but the app is not authorized yet.", + noFreeContext: "Please don't use open fhir servers if you need to access launch context items like the %S." +}; diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 00000000..209dc3dd --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,1245 @@ +/// + +import Client from "./Client"; +import { getPath, byCodes, byCode } from "./lib"; +import { IncomingMessage } from "http"; + +declare namespace fhirclient { + + interface RequestWithSession extends IncomingMessage { + session: fhirclient.JsonObject; + } + + interface SMART { + options: BrowserFHIRSettings; + + /** + * This should be called on your `redirect_uri`. Returns a Promise that + * will eventually be resolved with a Client instance that you can use + * to query the fhir server. + */ + ready(options?: fhirclient.ReadyOptions): Promise; + + /** + * Starts the [SMART Launch Sequence](http://hl7.org/fhir/smart-app-launch/#smart-launch-sequence). + * + * > **IMPORTANT:** `authorize()` will end up redirecting you to the + * authorization server. This means that you should **not** add + * anything to the returned promise chain. Any code written directly + * after the `authorize()` call might not be executed due to that + * redirect! + * + * The options that you would typically pass for an EHR launch are just + * `clientId` and `scope`. For standalone launch you should also provide + * the `iss` option. + * @param options + */ + authorize(options: AuthorizeParams): Promise; + + /** + * This function can be used when you want to handle everything in one + * page (no launch endpoint needed). + * + * 1. It will only work if your `launch_uri` is the same as your `redirect_uri`. + * While this should be valid, we can't promise that every EHR will allow you + * to register client with such settings. + * 2. Internally, init() will be called twice. First it will redirect to the EHR, + * then the EHR will redirect back to the page where `init()` will be called + * again to complete the authorization. This is generally fine, because the + * returned promise will only be resolved once, after the second execution, + * but please also consider the following: + * - You should wrap all your app's code in a function that is only executed + * after init() resolves! + * - Since the page will be loaded twice, you must be careful if your code has + * global side effects that can persist between page reloads (for example + * writing to localStorage). + * @param options + */ + init(options: AuthorizeParams): Promise; + + /** + * Creates and returns a Client instance that can be used to query the + * FHIR server. + */ + client(state: string | fhirclient.ClientState): Client; + + [key: string]: any + } + + interface BrowserFHIRSettings extends Record { + + /** + * Replaces the browser's current URL using + * `window.history.replaceState` API. + * + * ONLY RELEVANT IN BROWSERS! + */ + replaceBrowserHistory?: boolean; + + /** + * When set to true, this variable will fully utilize HTML5 + * sessionStorage API. This variable can be overridden to false by + * setting `FHIR.oauth2.settings.fullSessionStorageSupport = false`. + * When set to false, the sessionStorage will be keyed by a state + * variable. This is to allow the embedded IE browser instances + * instantiated on a single thread to continue to function without + * having sessionStorage data shared across the embedded IE instances. + */ + fullSessionStorageSupport?: boolean; + + /** + * Do we want to send cookies while making a request to the token + * endpoint in order to obtain new access token using existing + * refresh token. In rare cases the auth server might require the + * client to send cookies along with those requests. In this case + * developers will have to change this before initializing the app + * like so: + * `FHIR.oauth2.settings.refreshTokenWithCredentials = "include";` + * or + * `FHIR.oauth2.settings.refreshTokenWithCredentials = "same-origin";` + * Can be one of: + * "include" - always send cookies + * "same-origin" - only send cookies if we are on the same domain (default) + * "omit" - do not send cookies + */ + refreshTokenWithCredentials?: "omit" | "include" | "same-origin"; + + // storage?: Storage | ((options?: JsonObject) => Storage); + } + + interface CodeValue { + code: string; + value: number; + } + + interface ObservationMap { + [code: string]: FHIR.Observation[]; + } + + interface Adapter { + + /** + * Environment-specific options + */ + options: BrowserFHIRSettings; + + /** + * Given the current environment, this method returns the current url + * as URL instance + */ + getUrl(): URL; + + /** + * Given the current environment, this method must redirect to the given + * path + * @param path The relative path to redirect to + */ + redirect(to: string): void | Promise; + + /** + * This must return a Storage object + * @returns {fhirclient.Storage} + */ + getStorage(): Storage; + + /** + * Given a relative path, compute and return the full url, assuming that + * it is relative to the current location + * @param {String} path The path to convert to absolute + */ + relative(path: string): string; + + /** + * Base64 to ASCII string + */ + btoa(str: string): string; + + /** + * ASCII string to Base64 + */ + atob(str: string): string; + + /** + * ASCII string or Uint8Array to Base64URL + */ + base64urlencode: (input: string | Uint8Array) => string + + /** + * Base64Url to ASCII string + */ + base64urldecode: (input: string) => string + + /** + * Returns a reference to the AbortController class + */ + getAbortController(): typeof AbortController; + + /** + * Creates and returns adapter-aware SMART api. Not that while the shape of + * the returned object is well known, the arguments to this function are not. + * Those who override this method are free to require any environment-specific + * arguments. For example in node we will need a request, a response and + * optionally a storage or storage factory function. + */ + getSmartApi(): SMART; + + security: { + randomBytes: (count: number) => Uint8Array + digestSha256: (payload: string) => Promise + generatePKCEChallenge: (entropy?: number) => Promise<{ codeChallenge: string; codeVerifier: string }> + importJWK: (jwk: JWK) => Promise + signCompactJws: (alg: "ES384" | "RS384", privateKey: CryptoKey, header: any, payload: any) => Promise + } + } + + /** + * Simple key/value storage interface + */ + interface Storage { + + /** + * Sets the `value` on `key` and returns a promise that will be resolved + * with the value that was set. + */ + set: (key: string, value: any) => Promise; + + /** + * Gets the value at `key`. Returns a promise that will be resolved + * with that value (or undefined for missing keys). + */ + get: (key: string) => Promise; + + /** + * Deletes the value at `key`. Returns a promise that will be resolved + * with true if the key was deleted or with false if it was not (eg. if + * did not exist). + */ + unset: (key: string) => Promise; + } + + // ========================================================================= + type WindowTargetVariable = "_self"|"_top"|"_parent"|"_blank"|"popup"|string|number|Window; + function WindowTargetFunction(): WindowTargetVariable; + function WindowTargetFunction(): Promise; + type WindowTarget = WindowTargetVariable | typeof WindowTargetFunction; + + type PkceMode = 'ifSupported' | 'required' | 'disabled' | 'unsafeV1'; + + type storageFactory = (options?: Record) => Storage; + + interface IncludeResponseHint { + includeResponse?: boolean + [k: string]: any + } + + /** + * A function or method that makes requests to the backend server. If the + * `includeResponse` option is `true` resolves with `CombinedFetchResult` + * where the `response` property is the `Response` object and the `body` + * property is the result of type `R` (if any). Otherwise resolves with the + * result as `R`. + * @param R The expected return type + * @param O May contain the `includeResponse` flag to signal that we also + * want to receive the raw response object. Any other option will be passed + * to the underlying `fetch` call. + */ + type RequestFunction = (requestOptions?: O) => + Promise : R>; + + /** + * Options passed to the lib.request function + */ + interface FetchOptions extends RequestInit { + /** + * If `true` the request function will be instructed to resolve with a + * [[CombinedFetchResult]] object that contains the `Response` object + * abd the parsed body (if any) + */ + includeResponse?: boolean; + } + + /** + * If an `includeResponse` is set to true when calling the lib.request + * function the returned object will include the Response object and the + * parsed body if available + */ + interface CombinedFetchResult { + body?: T + response: Response + } + + /** + * The return type of the lib.request function + */ + type FetchResult = Response | fhirclient.JsonObject | string | CombinedFetchResult + + interface ES384JWK extends JsonWebKey { + alg: "ES384" + kty: "EC" + crv: "P-384" + kid: string + key_ops?: KeyUsage[] + [propName: string]: unknown + } + + interface RS384JWK extends JsonWebKey { + alg: "RS384" + kty: "RSA" + kid: string + key_ops?: KeyUsage[] + [propName: string]: unknown + } + + type JWK = ES384JWK | RS384JWK; + + /** + * Options that must contain an `url` property (String|URL). + * A `includeResponse` boolean option might also be passed. Any other + * properties will be passed to the underlying `fetch()` call. + */ + interface RequestOptions extends RequestInit { + /** + * The URL to request + */ + url: string | URL; + + /** + * If set to true the request function will resolve with an object + * like `{ body: any, response: Response }` so that users have + * access to the response object and it's properties like headers + * status etc. + */ + includeResponse?: boolean; + } + + /** + * The three security endpoints that SMART servers might declare in the + * conformance statement + */ + interface OAuthSecurityExtensions { + + /** + * You could register new SMART client at this endpoint (if the server + * supports dynamic client registration) + */ + registrationUri: string; + + /** + * You must call this endpoint to ask for authorization code + */ + authorizeUri: string; + + /** + * You must call this endpoint to exchange your authorization code + * for an access token. + */ + tokenUri: string; + + /** + * Supported PKCE Code challenge methods + */ + codeChallengeMethods: string[]; + } + + /** + * Describes the state that should be passed to the Client constructor. + * Everything except `serverUrl` is optional + */ + interface ClientState { + /** + * The base URL of the Fhir server. The library should have detected it + * at authorization time from request query params of from config options. + */ + serverUrl: string; + + /** + * The client_id that you should have obtained while registering your + * app with the auth server or EHR (as set in the configuration options) + */ + clientId?: string; + + /** + * The URI to redirect to after successful authorization, as set in the + * configuration options. + */ + redirectUri?: string; + + /** + * The access scopes that you requested in your options (or an empty string). + * @see http://docs.smarthealthit.org/authorization/scopes-and-launch-context/ + */ + scope?: string; + + /** + * Your client public JWKS url if you have one + * (for asymmetric confidential clients that have registered a JWKS URL) + */ + clientPublicKeySetUrl?: AuthorizeParams['clientPublicKeySetUrl']; + + /** + * Your client private JWK if you have one (for asymmetric confidential clients) + */ + clientPrivateJwk?: JWK; + + /** + * Your client secret if you have one (for symmetric confidential clients) + */ + clientSecret?: string; + + /** + * The (encrypted) access token, in case you have completed the auth flow + * already. + */ + // access_token?: string; + + /** + * The response object received from the token endpoint while trying to + * exchange the auth code for an access token (if you have reached that point). + */ + tokenResponse?: TokenResponse; + + /** + * The username for basic auth. If present, `password` must also be provided. + */ + username?: string; + + /** + * The password for basic auth. If present, `username` must also be provided. + */ + password?: string; + + /** + * You could register new SMART client at this endpoint (if the server + * supports dynamic client registration) + */ + registrationUri?: string; + + /** + * You must call this endpoint to ask for authorization code + */ + authorizeUri?: string; + + /** + * You must call this endpoint to exchange your authorization code + * for an access token. + */ + tokenUri?: string; + + /** + * The key under which this state is persisted in the storage + */ + key?: string; + + /** + * If `true`, the app requested to be initialized in the specified [[AuthorizeParams.target]]. + * Otherwise, the app requested to be initialized in the window in which + * [[authorize]] was called. + */ + completeInTarget?: boolean; + + /** + * An Unix timestamp (JSON numeric value representing the number of + * seconds since 1970). This updated every time an access token is + * received from the server. + */ + expiresAt?: number; + + /** + * PKCE code challenge base value. + */ + codeChallenge?: string; + + /** + * PKCE code verification, formatted with base64url-encode (RFC 4648 § 5) + * without padding, which is NOT the same as regular base64 encoding. + */ + codeVerifier?: string; + } + + /** + * Authorization parameters that can be passed to `authorize` or `init` + */ + interface AuthorizeParams { + + /** + * This is the URL of the service you are connecting to. + * For [EHR Launch](http://hl7.org/fhir/smart-app-launch/#ehr-launch-sequence) + * you **MUST NOT** provide this option. It will be passed by the EHR as + * url parameter instead. Using `iss` as an option will "lock" your app to + * that service provider. In other words, passing an `iss` option is how + * you can do [Standalone Launch](http://hl7.org/fhir/smart-app-launch/#standalone-launch-sequence). + */ + iss?: string; + + /** + * Can be used to verify that the app is being launched against certain + * servers. This is especially useful when working with multiple EHR + * configurations. Can be a string (in which case it will be expected to + * match the provided ISS exactly), a regular expression to test against + * the current ISS, or a function that will be called with the current + * ISS and should return true or false to signify if that ISS is acceptable. + */ + issMatch?: string | RegExp | ((iss: string) => boolean); + + /** + * Do not pass use this option, unless you want to test it. It should come + * as url parameter from the SMART authorization server as part of the EHR + * launch sequence + */ + launch?: string; + + /** + * The base URL of the FHIR server to use. This is just like the `iss` + * option, except that it is designed to bypass the authentication. If + * `fhirServiceUrl` is passed, the `authorize` function will NOT actually + * attempt to authorize. It will skip that and redirect you to your + * `redirect_uri`. + */ + fhirServiceUrl?: string; + + /** + * Defaults to the current directory (it's index file) + * @alias redirect_uri + */ + redirectUri?: string; + + /** + * Same as redirectUri + * @alias redirectUri + * @deprecated + */ + redirect_uri?: string; + + /** + * + */ + noRedirect?: boolean; + + /** + * The client_id that you have obtained while registering your app in the + * EHR. This is not required if you only intend to communicate with open + * FHIR servers. Note: For backwards compatibility reasons we also accept + * `client_id` instead of `clientId`! + * @alias client_id + */ + clientId?: string; + + /** + * The client_id that you have obtained while registering your app in the + * EHR. This is not required if you only intend to communicate with open + * FHIR servers. Note: For backwards compatibility reasons we accept + * `client_id` as an alias of `clientId`! + * @alias clientId + * @deprecated + */ + client_id?: string; + + /** + * One or more space-separated scopes that you would like to request from + * the EHR. [Learn more](http://hl7.org/fhir/smart-app-launch/scopes-and-launch-context/index.html) + */ + scope?: string; + + /** + * The ID of the selected patient. If you are launching against an open FHIR + * server, there is no way to obtain the launch context that would include + * the selected patient ID. This way you can "inject" that ID and make the + * client behave as if that is the currently active patient. + */ + patientId?: string; + + /** + * The ID of the selected encounter. If you are launching against an open + * FHIR server, there is no way to obtain the launch context that would + * (in some EHRs) include the selected encounter ID. This way you can + * "inject" that ID and make the client behave as if this is the currently + * active encounter. + */ + encounterId?: string; + + /** + * If you have registered a confidential client, you should pass your + * `clientSecret` here. **Note: ONLY use this on the server**, as the + * browsers are considered incapable of keeping a secret. + */ + clientSecret?: string; + + /** + * If you have registered a confidential client and you host your public + * key online, you can pass your JWKS URL here **Note: ONLY use this on the server**, as the + * browsers are considered incapable of keeping a secret. + */ + clientPublicKeySetUrl?: string; + + /** + * If you have registered a confidential client, you should pass your + * `clientPrivateJwk` here. **Note: ONLY use this on the server**, as + * the browsers are considered incapable of keeping a secret. + */ + clientPrivateJwk?: JWK; + + + /** + * Useful for testing. This object can contain any properties that are + * typically contained in an [access token response](http://hl7.org/fhir/smart-app-launch/#step-3-app-exchanges-authorization-code-for-access-token). + * These properties will be stored into the client state, as if it has been + * authorized. + */ + fakeTokenResponse?: object; + + /** + * Where to start the auth flow. This option is only applicable in + * browsers and is ignored on the server. Can be one of: + * - `_self` Authorize in the same window (**default**) + * - `_top` Authorize in the topmost window + * - `_parent` Authorize in the parent window + * - `_blank` Authorize in new tab or window + * - `"popup"` Open a popup, authorize in it and close it when done + * - `String` Frame name (string index in window.frames) + * - `Number` Numeric index in `window.frames` + * - `Object` Window reference (must have the same `origin`) + * - `Function` A function that returns one of the above values or a + * promise that will resolve to such value. + */ + target?: WindowTarget; + + /** + * The width of the authorization popup window. Only used in browsers + * and if the [[AuthorizeParams.target]] option is set to "popup". + */ + width?: number; + + /** + * The height of the authorization popup window. Only used in browsers + * and if the [[AuthorizeParams.target]] option is set to "popup". + */ + height?: number; + + /** + * If `true`, the app will be initialized in the specified [[AuthorizeParams.target]]. + * Otherwise, the app will be initialized in the window in which + * [[authorize]] was called. + */ + completeInTarget?: boolean; + + /** + * Client expectations for PKCE (Proof Key for Code Exchange). Can be + * one of: + * - `ifSupported` Use if a matching code challenge method is available (**default**) + * - `required` Do not attempt authorization to servers without support + * - `disabled` Do not use PKCE + * - `unsafeV1` Use against Smart v1 servers. Smart v1 does not define + * conformance, so validate your server supports PKCE before using + * this setting + */ + pkceMode?: PkceMode; + } + + interface ReadyOptions { + privateKey?: JWK | { + key: CryptoKey + alg: "RS384" | "ES384" + kid: string + }; + clientPublicKeySetUrl?: string; // for jku + // [key: string]: any; // Other options TBD + } + + /** + * Additional options that can be passed to `client.request` to control its + * behavior + */ + interface FhirOptions { + + /** + * When you request a Bundle, the result will typically come back in pages + * and you will only get the first page. You can use `pageLimit` greater + * than `1` to request multiple pages. For example `pageLimit: 3` will fetch + * the first 3 pages as array. To fetch all the available pages you can set + * this to `0`. + * - Defaults to `1`. + * - Ignored if the response is not a `Bundle`. + */ + pageLimit?: number; + + /** + * When you fetch multiple pages the resulting array may be very large, + * requiring a lot of time and memory. It is often better if you specify a + * page callback instead. The `onPage` callback will be called once for each + * page with the page Bundle as it's argument. If you use `resolveReferences` + * and `graph: false`, the references will be passed to `onPage` as second + * argument. + * - If `onPage` returns a promise it will be awaited for, meaning that no + * more pages will be fetched until the `onPage` promise is resolved. + * - If `onPage` returns a rejected promise or throws an error, the client + * will not continue fetching more pages. + * - If you use `onPage` callback, the promise returned by `request()` will + * be resolved with `null`. This is to avoid building that huge array in + * memory. By using the `onPage` option you are stating that you will + * handle the result one page at a time, instead of expecting to receive + * the big combined result. + * @param data Depending in the other options can be `Bundle`, `Bundle[]`, + * `Resource[]` + * @param references Map of resolved references. Only available if the `graph` + * option is set to `false` + */ + onPage?: (data: JsonObject | JsonObject[], references?: JsonObject) => any; + + /** + * When fetching a `Bundle`, you are typically only interested in the + * included resources which are located at `{response}.entry[N].resource`. + * If this option is set to `true`, the returned result will be an array of + * resources instead of the whole bundle. This is especially useful when + * multiple pages are fetched, because an array of page bundles is not that + * useful and will often have to be converted to array of resources that is + * easier to iterate. + * - This option is ignored if the response is not a bundle. + * - If you use `onPage` callback with `flat: true`, it will receive that + * array of resources instead of the page bundle. + * - Resources from multiple pages are flattened into single array (unless + * you use `onPage`, which will be called with one array for each page). + * - Defaults to `false`. + * - Finally, `Bundle.entry` is optional in FHIR and that leads to bugs in + * apps that assume that it is always present. With `flat: true`, you will + * always get an array, even if it is empty, and even if no `entry` is + * found in the response bundle. + */ + flat?: boolean; + + /** + * Only applicable if you use `resolveReferences`. If `false`, the resolved + * references will not be "mounted" in the result tree, but will be returned + * as separate map object instead. **Defaults to `true`**. + */ + graph?: boolean; + + /** + * One or more references to resolve. Single item can be specified as a + * string or as an array of one string. Multiple items must be specified as + * array. + * - Each item is a dot-separated path to the desired reference within the + * result object, excluding the "reference" property. For example + * `context.serviceProvider` will look for `{Response}.context.serviceProvider.reference`. + * - If the target is an array of references (E.g. + * [Patient.generalPractitioner](http://hl7.org/fhir/R4/patient-definitions.html#Patient.generalPractitioner)), you can request one or more of them by index (E.g. `generalPractitioner.0`). + * If the index is not specified, all the references in the array will be + * resolved. + * - The order in which the reference paths are specified does not matter. + * For example, if you use `["subject", "encounter.serviceProvider", "encounter"]`, + * the library should figure out that `encounter.serviceProvider` must be + * fetched after `encounter`. In fact, in this case it will first fetch + * subject and encounter in parallel, and then proceed to encounter.serviceProvider. + * - This option does not work with contained references (they are "already + * resolved" anyway). + */ + resolveReferences?: string|string[]; + + /** + * If the client is authorized, it will possess an access token and pass it + * with the requests it makes. When that token expires, you should get back + * a `401 Unauthorized` response. When that happens, if the client also has + * a refresh token and if `useRefreshToken` is `true` (default), the client + * will attempt to automatically re-authorize itself and then it will re-run + * the failed request and eventually resolve it's promise with the final + * result. This means that your requests should never fail with `401`, + * unless the refresh token is also expired. If you don't want this, you can + * set `useRefreshToken` to `false`. There is a `refresh` method on the + * client that can be called manually to renew the access token. + * - **Defaults to `true`**. + */ + useRefreshToken?: boolean; + } + + /** + * The response object received from the token endpoint while trying to + * exchange the auth code for an access token. This object has a well-known + * base structure but the auth servers are free to augment it with + * additional properties. + * @see http://docs.smarthealthit.org/authorization/ + */ + interface TokenResponse { + + /** + * If present, this tells the app that it is being rendered within an + * EHR frame and the UI outside that frame already displays the selected + * patient's name, age, gender etc. The app can decide to hide those + * details to prevent the UI from duplicated information. + */ + need_patient_banner?: boolean; + + /** + * This could be a public location of some style settings that the EHR + * would like to suggest. The app might look it up and optionally decide + * to apply some or all of it. + * @see https://launch.smarthealthit.org/smart-style.json + */ + smart_style_url?: string; + + /** + * If you have requested that require it (like `launch` or `launch/patient`) + * the selected patient ID will be available here. + */ + patient?: string; + + /** + * If you have requested that require it (like `launch` or `launch/encounter`) + * the selected encounter ID will be available here. + * **NOTE:** This is not widely supported as of 2018. + */ + encounter?: string; + + /** + * If you have requested `openid` and `profile` scopes the profile of + * the active user will be available as `client_id`. + * **NOTE:** Regardless of it's name, this property does not store an ID + * but a token that also suggests the user type like `Patient/123`, + * `Practitioner/xyz` etc. + */ + client_id?: string; + + /** + * Fixed value: bearer + */ + token_type?: "bearer" | "Bearer"; + + /** + * Scope of access authorized. Note that this can be different from the + * scopes requested by the app. + */ + scope?: string; + + /** + * Lifetime in seconds of the access token, after which the token SHALL NOT + * be accepted by the resource server + */ + expires_in ?: number; + + /** + * The access token issued by the authorization server + */ + access_token?: string; + + /** + * Authenticated patient identity and profile, if requested + */ + id_token ?: string; + + /** + * Token that can be used to obtain a new access token, using the same or a + * subset of the original authorization grants + */ + refresh_token ?: string; + + /** + * Other properties might be passed by the server + */ + [key: string]: any; + } + + interface IDToken { + profile: string; + aud: string; + sub: string; + iss: string; + iat: number; + exp: number; + [key: string]: any; + } + + // JSON objects + interface JsonObject { [key: string]: JsonValue; } + type JsonPrimitive = string | number | boolean | null + type JsonValue = JsonPrimitive|JsonArray|JsonObject + type JsonArray = JsonValue[] + + // JSON Patch - https://datatracker.ietf.org/doc/html/rfc6902 + interface JsonPatchAdd { op: "add" ; path: string; value: JsonValue; } + interface JsonPatchReplace { op: "replace"; path: string; value: JsonValue; } + interface JsonPatchTest { op: "test" ; path: string; value: JsonValue; } + interface JsonPatchMove { op: "move" ; path: string; from: string; } + interface JsonPatchCopy { op: "copy" ; path: string; from: string; } + interface JsonPatchRemove { op: "remove" ; path: string; } + type JsonPatchOperation = JsonPatchAdd|JsonPatchRemove|JsonPatchReplace|JsonPatchMove|JsonPatchCopy|JsonPatchTest; + type JsonPatch = JsonPatchOperation[] + + // Capabilities ------------------------------------------------------------ + + type codeChallengeMethod = "S256"; + + type SMARTAuthenticationMethod = "client_secret_post" | "client_secret_basic" | "private_key_jwt"; + + type launchMode = "launch-ehr" | "launch-standalone"; + + type clientType = "client-public" | "client-confidential-symmetric"; + + type singleSignOn = "sso-openid-connect"; + + type launchContext = "context-banner" | "context-style"; + + type launchContextEHR = "context-ehr-patient" | "context-ehr-encounter"; + + type launchContextStandalone = "context-standalone-patient" | "context-standalone-encounter"; + + type permissions = "permission-offline" | "permission-patient" | "permission-user"; + + interface WellKnownSmartConfiguration { + /** + * URL to the OAuth2 authorization endpoint. + */ + authorization_endpoint: string; + + /** + * URL to the OAuth2 token endpoint. + */ + token_endpoint: string; + + /** + * If available, URL to the OAuth2 dynamic registration endpoint for the + * FHIR server. + */ + registration_endpoint?: string; + + /** + * RECOMMENDED! URL where an end-user can view which applications currently + * have access to data and can make adjustments to these access rights. + */ + management_endpoint?: string; + + /** + * RECOMMENDED! URL to a server’s introspection endpoint that can be used + * to validate a token. + */ + introspection_endpoint?: string; + + /** + * RECOMMENDED! URL to a server’s revoke endpoint that can be used to + * revoke a token. + */ + revocation_endpoint?: string; + + /** + * RECOMMENDED! PKCE challenge methods the server supports. + */ + code_challenge_methods_supported?: codeChallengeMethod[]; + + /** + * Array of client authentication methods supported by the token endpoint. + * The options are “client_secret_post” and “client_secret_basic”. + */ + token_endpoint_auth_methods?: SMARTAuthenticationMethod[]; + + /** + * Array of scopes a client may request. + */ + scopes_supported?: string[]; + + /** + * Array of OAuth2 response_type values that are supported + */ + response_types_supported?: string[]; + + /** + * Array of strings representing SMART capabilities (e.g., single-sign-on + * or launch-standalone) that the server supports. + */ + capabilities: Array< + SMARTAuthenticationMethod | + launchMode | + clientType | + singleSignOn | + launchContext | + launchContextEHR | + launchContextStandalone | + permissions + >; + } + + namespace FHIR { + + /** + * Any combination of upper or lower case ASCII letters ('A'..'Z', and + * 'a'..'z', numerals ('0'..'9'), '-' and '.', with a length limit of 64 + * characters. (This might be an integer, an un-prefixed OID, UUID or any + * other identifier pattern that meets these constraints.) + * Regex: `[A-Za-z0-9\-\.]{1,64}` + */ + type id = string; + + /** + * A Uniform Resource Identifier Reference (RFC 3986 ). Note: URIs are case + * sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7) use + * all lowercase. URIs can be absolute or relative, and may have an optional + * fragment identifier. + */ + type uri = string; + + /** + * Indicates that the value is taken from a set of controlled strings + * defined elsewhere. Technically, a code is restricted to a string which + * has at least one character and no leading or trailing whitespace, and + * where there is no whitespace other than single spaces in the contents + * Regex: [^\s]+([\s]?[^\s]+)* + */ + type code = string; + + /** + * An instant in time - known at least to the second and always includes a + * time zone. Note: This is intended for precisely observed times (typically + * system logs etc.), and not human-reported times - for them, use date and + * dateTime. instant is a more constrained dateTime. + * + * Patterns: + * - `YYYY-MM-DDTHH:mm:ss.SSSSZ` + * - `YYYY-MM-DDTHH:mm:ss.SSSZ` + * - `YYYY-MM-DDTHH:mm:ssZ` + */ + type instant = string; // "2018-04-30T13:31:44.140-04:00" + + /** + * A date, date-time or partial date (e.g. just year or year + month) as + * used in human communication. If hours and minutes are specified, a time + * zone SHALL be populated. Seconds must be provided due to schema type + * constraints but may be zero-filled and may be ignored. Dates SHALL be + * valid dates. The time "24:00" is not allowed. + * + * Patterns: + * - `YYYY-MM-DDTHH:mm:ss.SSSSZ` + * - `YYYY-MM-DDTHH:mm:ss.SSSZ` + * - `YYYY-MM-DDTHH:mm:ssZ` + * - `YYYY-MM-DD` + * - `YYYY-MM` + * - `YYYY` + * + * Regex: + * -?[0-9]{4}(-(0[1-9]|1[0-2])(-(0[0-9]|[1-2][0-9]|3[0-1])(T([01] + * [0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]): + * [0-5][0-9]|14:00)))?)?)? + */ + type dateTime = string; + + /** + * Any non-negative integer (e.g. >= 0) + * Regex: [0]|([1-9][0-9]*) + */ + type unsignedInt = number; + + type valueX = "valueInteger" | "valueUnsignedInt" | "valuePositiveInt" | + "valueDecimal"|"valueDateTime"|"valueDate"|"valueTime"|"valueInstant"| + "valueString"|"valueUri"|"valueOid"|"valueUuid"|"valueId"| + "valueBoolean"|"valueCode"|"valueMarkdown"|"valueBase64Binary"| + "valueCoding"|"valueCodeableConcept"|"valueAttachment"| + "valueIdentifier"|"valueQuantity"|"valueSampledData"|"valueRange"| + "valuePeriod"|"valueRatio"|"valueHumanName"|"valueAddress"| + "valueContactPoint"|"valueTiming"|"valueReference"|"valueAnnotation"| + "valueSignature"|"valueMeta"; + + interface Element { + id?: id; + extension?: Array>; + } + + interface Extension extends Element { + /** + * identifies the meaning of the extension + */ + url: uri; + + [T: string]: any; + } + + interface CapabilityStatement { + resourceType: string; + fhirVersion: string; + rest: Array<{ + security?: { + cors?: boolean; + extension?: Array<{ + url: string; + extension: Array> + }> + }; + resource: Array<{ + type: string + }> + }>; + } + + interface Resource extends Record { + /** + * Logical id of this artifact + */ + id ?: id; + + resourceType?: string; + + /** + * Metadata about the resource + */ + meta ?: Meta; + + /** + * A set of rules under which this content was created + */ + implicitRules ?: uri; + + /** + * Language of the resource content + */ + language ?: code; + } + + interface Meta extends Element { + + /** + * When the resource version last changed + */ + lastUpdated: instant; + } + + interface Observation extends Resource { + resourceType: "Observation"; + } + + interface Patient extends Resource { + resourceType: "Patient"; + } + + interface Practitioner extends Resource { + resourceType: "Practitioner"; + } + + interface RelatedPerson extends Resource { + resourceType: "RelatedPerson"; + } + + interface Encounter extends Resource { + resourceType: "Encounter"; + } + + interface Period extends Element { + /** + * Starting time with inclusive boundary + */ + start ?: dateTime; + + /** + * End time with inclusive boundary, if not ongoing + */ + end ?: dateTime; + } + + interface BackboneElement extends Element { + modifierExtension ?: Extension[]; + } + + interface CodeableConcept extends Element { + /** + * Code defined by a terminology system + */ + coding?: Coding[]; + + /** + * Plain text representation of the concept + */ + text?: string; + } + + interface Coding extends Element { + /** + * Identity of the terminology system + */ + system ?: uri; + + /** + * Version of the system - if relevant + */ + version ?: string; + + /** + * Symbol in syntax defined by the system + */ + code ?: code; + + /** + * Representation defined by the system + */ + display ?: string; + + /** + * If this coding was chosen directly by the user + */ + userSelected ?: boolean; + } + + interface Identifier extends Element { + use ?: "usual" | "official" | "temp" | "secondary"; + /** + * Description of identifier + */ + type ?: CodeableConcept; + + /** + * The namespace for the identifier value + */ + system ?: uri; + + /** + * The value that is unique + */ + value ?: string; + + /** + * Time period when id is/was valid for use + */ + period ?: Period; + + /** + * Organization that issued id (may be just text) + */ + assigner ?: Reference; + } + + interface Reference extends Element { + + /** + * Literal reference, Relative, internal or absolute URL + */ + reference ?: string; + + /** + * Logical reference, when literal reference is not known + */ + identifier ?: Identifier; + + /** + * Text alternative for the resource + */ + display ?: string; + } + + interface BundleLink extends BackboneElement { + relation: string; + url: uri; + } + + interface BundleEntry extends BackboneElement { + fullUrl: string; // This is optional on POSTs + resource: Resource; + } + + interface Bundle extends Resource { + /** + * Persistent identifier for the bundle + */ + identifier ?: Identifier; + + type: "document" | "message" | "transaction" | "transaction-response" + | "batch" | "batch-response" | "history" | "searchset" | "collection"; + + total ?: unsignedInt; + + link: BundleLink[]; + entry?: BundleEntry[]; + } + } +} diff --git a/tasks/generate_js_client.py b/tasks/generate_js_client.py deleted file mode 100644 index 2d564a18..00000000 --- a/tasks/generate_js_client.py +++ /dev/null @@ -1,67 +0,0 @@ -from xml.etree import ElementTree -from xml.dom.minidom import parseString -import glob, json, re -from huTools.structured import dict2xml, dict2et - -FHIR_DIR = "/home/jmandel/smart/fhir" - -jsonParsers = { - 'decimal': 'float', - 'integer': 'integer', - 'dateTime': 'date', - 'instant': 'date', - 'string': 'string', - 'id': 'string', - 'uri': 'string', - 'idref': 'string', - 'oid': 'string', - 'base64Binary': 'string', - 'xhtml': 'string', - 'boolean': 'boolean', - 'code': 'string' -} - -def capitalizeFirstLetter(s): - if len(s) < 2: return s.upper() - return s[0].upper() + s[1:] - -def tree(FILES): - paths = {} - def process(file): - f = json.load(open(file)) - for v in f['Profile']['structure'][0]['element']: - - #split a given property into multiple strands when it's like: - # value[X] (dateTime|String) - propertyName = v['path']['value'] - - if 'type' in v['definition']: types = v['definition']['type'] - else: types = [None] - - for possibleValue in types: - - valueType = possibleValue['code']['value'] if possibleValue else "" - valueType = valueType.replace("*", "").replace("@", "") - if (valueType.startswith("Resource(")): valueType = "ResourceReference" - p = propertyName.replace("[x]", capitalizeFirstLetter(valueType)) - parent = ".".join(p.split(".")[:-1]) - paths[p] = { - 'edges': {} - } - - if parent in paths: - step = p.replace(parent+".", "") - paths[parent]['edges'][step] = edge = {} - if valueType in jsonParsers: edge['parser'] = jsonParsers[valueType] - elif valueType != "": edge['next'] = valueType - else: edge['next'] = p - - for f in FILES: process(f) - oldpaths = paths - paths = {} - for k,v in oldpaths.iteritems(): - if len(v['edges'].keys()) > 0: paths[k]=v - return paths - -t = tree(glob.glob(FHIR_DIR + "/build/publish/*.profile.json")) -print json.dumps(t, sort_keys=True,indent=2) diff --git a/test/Client.test.ts b/test/Client.test.ts new file mode 100644 index 00000000..cc897996 --- /dev/null +++ b/test/Client.test.ts @@ -0,0 +1,4254 @@ +// Mocks +import { expect } from "@hapi/code"; +import * as Lab from "@hapi/lab"; +import * as FS from "fs"; +import * as jwt from "jsonwebtoken" +import { Response } from "cross-fetch"; +import mockDebug from "./mocks/mockDebug"; +import mockServer from "./mocks/mockServer"; +import ServerEnv from "./mocks/ServerEnvironment"; +import BrowserEnv from "./mocks/BrowserEnvironment"; +import BrowserEnvFhir from "./mocks/BrowserEnvironmentWithFhirJs"; +import Window from "./mocks/Window"; +import str from "../src/strings"; +import Client from "../src/Client"; +import { KEY } from "../src/smart"; +import Adapter from "../src/adapters/BrowserAdapter"; +import { fhirclient } from "../src/types"; + +export const lab = Lab.script(); +const { it, describe, before, after, afterEach } = lab; + +const clientDebug = mockDebug.instances.find(instance => instance.namespace === "FHIR:client"); + +let mockDataServer: any, mockUrl: string; + +before(() => { + return new Promise((resolve, reject) => { + + // @ts-ignore + mockDataServer = mockServer.listen(null, "0.0.0.0", (error: Error) => { + if (error) { + return reject(error); + } + const addr = mockDataServer.address(); + mockUrl = `http://127.0.0.1:${addr.port}`; + // console.log(`Mock Data Server listening at ${mockUrl}`); + resolve(void 0); + }); + }); +}); + +after(() => { + if (mockDataServer && mockDataServer.listening) { + return new Promise((resolve, reject) => { + mockUrl = ""; + delete (global as any).fetch; + mockDataServer.close((error: Error) => { + if (error) { + reject(new Error("Error shutting down the mock-data server: " + error)); + } + // console.log("Mock Data Server CLOSED!"); + resolve(void 0); + }); + }); + } +}); + +afterEach(() => { + mockServer.clear(); + clientDebug._calls.length = 0; + delete (global as any).sessionStorage; +}); + + + + +function crossPlatformTest(callback: (env: Adapter) => void) { + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv({ session: {} }) + }; + + for (const name in tests) { + it (name, () => callback(tests[name])); + } +} + +describe("FHIR.client", () => { + + describe("constructor", () => { + it ("throws if initialized without arguments", () => { + // @ts-ignore + expect(() => new Client()).to.throw(); + }); + + it ("throws if initialized without serverUrl", () => { + // @ts-ignore + expect(() => new Client({}, {})).to.throw(); + }); + + it ("throws if initialized with invalid serverUrl", () => { + // @ts-ignore + expect(() => new Client({}, "invalid-url")).to.throw(); + }); + + it ("accepts string as second argument", () => { + // @ts-ignore + expect(new Client({}, "http://test").state).to.equal({ serverUrl: "http://test" }); + }); + }); + + describe("patient.read", () => { + + describe("rejects with no patient", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + await expect(client.patient.read()).to.reject( + Error, "Patient is not available" + ); + }); + }); + + describe("can be aborted", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + }, + _delay: 10 + }); + + const AbortController = env.getAbortController(); + const abortController = new AbortController(); + const task = client.patient.read({ signal: abortController.signal }); + abortController.abort(); + await expect(task).to.reject( + Error, "The user aborted a request." + ); + }); + }); + + it ("works as expected", () => { + crossPlatformTest(async (env) => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }; + + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + mockServer.mock(mock); + const result = await client.patient.read(); + expect(result).to.include({ resourceType: "Patient", id: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" }); + }); + }); + + it ("works with includeResponse: true", () => { + crossPlatformTest(async (env) => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }; + + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + mockServer.mock(mock); + // const patient1 = await client.patient.read({}); + // const patient2 = await client.patient.read({ includeResponse: false }); + const result = await client.patient.read({ includeResponse: true }); + expect(result.body).to.include({ resourceType: "Patient", id: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" }); + expect(result.response.status).to.equal(200); + }); + }); + + }); + + describe("patient.request", () => { + describe("rejects with no patient", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + await expect(client.patient.request("Observation")).to.reject( + Error, "Patient is not available" + ); + }); + }); + + describe("throws on incorrect path", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + await expect(client.patient.request("/")).to.reject( + Error, `Invalid url "${mockUrl + "/"}"` + ); + }); + }); + + describe("rejects for not supported resource types", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: {} + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + } + }); + + await expect(client.patient.request("Observation")).to.reject( + Error, + "Resource \"Observation\" is not supported by this FHIR server" + ); + }); + }); + + describe("rejects if a search param cannot be determined", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Observation" + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + } + }); + + await expect(client.patient.request("Observation")).to.reject( + Error, + "No search parameters supported for \"Observation\" on this FHIR server" + ); + }); + }); + + describe("rejects if a resource is not in the patient compartment", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Test" + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Test", + id: "whatever" + } + }); + + await expect(client.patient.request("Test")).to.reject( + Error, + "Cannot filter \"Test\" resources by patient" + ); + }); + }); + + describe("works as expected with a string URL", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Observation", + searchParam: [ + { name: "patient" } + ] + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + } + }); + + await client.patient.request("Observation"); + }); + }); + + describe("works as expected with URL instance", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Observation", + searchParam: [ + { name: "patient" } + ] + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + } + }); + + await client.patient.request(new URL("Observation", mockUrl)); + }); + }); + + describe("works as expected with request options", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Observation", + searchParam: [ + { name: "patient" } + ] + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + } + }); + + await client.patient.request({ url: "Observation" }); + }); + }); + + describe("can be aborted", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Observation", + searchParam: [ + { name: "patient" } + ] + }] + }] + }, + _delay: 10 + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + }, + _delay: 10 + }); + + const AbortController = env.getAbortController(); + const abortController = new AbortController(); + const task = client.patient.request({ url: "Observation", signal: abortController.signal }); + abortController.abort(); + await expect(task).to.reject( + Error, "The user aborted a request." + ); + }); + }); + + describe("works if the resource is Patient and _id param is supported", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Patient", + searchParam: [ + { name: "_id" } + ] + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "whatever" + } + }); + + await client.patient.request("Patient"); + }); + }); + + describe("rejects if the resource is Patient and _id param is not supported", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Patient", + searchParam: [] + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "whatever" + } + }); + + await expect(client.patient.request("Patient")).to.reject(); + }); + }); + + describe("works as expected with includeResponse: true", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4" + } + }); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [{ + resource: [{ + type: "Observation", + searchParam: [ + { name: "patient" } + ] + }] + }] + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Observation", + id: "whatever" + } + }); + + // const result = await client.patient.request>({ + // url: "Observation", + // includeResponse: true + // }); + const result = await client.patient.request>({ + url: "Observation", + includeResponse: true + }); + expect(result.body).to.include({ resourceType: "Observation", id: "whatever" }); + expect(result.response.status).to.equal(200); + }); + }); + }); + + describe("encounter.read", () => { + describe("rejects with no encounter", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + await expect(client.encounter.read()).to.reject( + Error, "Encounter is not available" + ); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Encounter", id: "encounter-id" } + }); + (client.state.tokenResponse as any).encounter = "whatever"; + const encounter = await client.encounter.read(); + expect(encounter).to.equal({ resourceType: "Encounter", id: "encounter-id" }); + }); + }); + + describe("can be aborted", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + encounter: "x" + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { id: "encounter-id" }, + _delay: 10 + }); + + const AbortController = env.getAbortController(); + const abortController = new AbortController(); + const task = client.encounter.read({ signal: abortController.signal }); + abortController.abort(); + await expect(task).to.reject( + Error, "The user aborted a request." + ); + }); + }); + + describe("works with includeResponse: true", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + encounter: "x" + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Encounter", id: "encounter-id" } + }); + + const result = await client.encounter.read({ includeResponse: true }); + expect(result.body).to.equal({ resourceType: "Encounter", id: "encounter-id" }); + expect(result.response.status).to.equal(200); + }); + }); + }); + + describe("user.read", () => { + describe("rejects with no user", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + await expect(client.user.read()).to.reject( + Error, "User is not available" + ); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient", id: "user-id" } + }); + (client.state.tokenResponse as any).id_token = + "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9." + + "eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb2" + + "5lci03MjA4MDQxNiIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3Nt" + + "YXJ0LVByYWN0aXRpb25lci03MjA4MDQxNiIsInN1YiI6IjM2YTEwYm" + + "M0ZDJhNzM1OGI0YWZkYWFhZjlhZjMyYmFjY2FjYmFhYmQxMDkxYmQ0" + + "YTgwMjg0MmFkNWNhZGQxNzgiLCJpc3MiOiJodHRwOi8vbGF1bmNoLn" + + "NtYXJ0aGVhbHRoaXQub3JnIiwiaWF0IjoxNTU5MzkyMjk1LCJleHAi" + + "OjE1NTkzOTU4OTV9.niEs55G4AFJZtU_b9Y1Y6DQmXurUZZkh3WCud" + + "ZgwvYasxVU8x3gJiX3jqONttqPhkh7418EFssCKnnaBlUDwsbhp7xd" + + "WN4o1L1NvH4bp_R_zJ25F1s6jLmNm2Qp9LqU133PEdcRIqQPgBMyZB" + + "WUTyxQ9ihKY1RAjlztAULQ3wKea-rfe0BXJZeUJBsQPzYCnbKY1dON" + + "_NRd8N9pTImqf41MpIbEe7YEOHuirIb6HBpurhAHjTLDv1IuHpEAOx" + + "pmtxVVHiVf-FYXzTFmn4cGe2PsNJfBl8R_zow2n6qaSANdvSxJDE4D" + + "UgIJ6H18wiSJJHp6Plf_bapccAwxbx-zZCw"; + const user = await client.user.read(); + expect(user).to.equal({ resourceType: "Patient", id: "user-id" }); + }); + }); + + describe("can be aborted", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + id_token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9." + + "eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb2" + + "5lci03MjA4MDQxNiIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3Nt" + + "YXJ0LVByYWN0aXRpb25lci03MjA4MDQxNiIsInN1YiI6IjM2YTEwYm" + + "M0ZDJhNzM1OGI0YWZkYWFhZjlhZjMyYmFjY2FjYmFhYmQxMDkxYmQ0" + + "YTgwMjg0MmFkNWNhZGQxNzgiLCJpc3MiOiJodHRwOi8vbGF1bmNoLn" + + "NtYXJ0aGVhbHRoaXQub3JnIiwiaWF0IjoxNTU5MzkyMjk1LCJleHAi" + + "OjE1NTkzOTU4OTV9.niEs55G4AFJZtU_b9Y1Y6DQmXurUZZkh3WCud" + + "ZgwvYasxVU8x3gJiX3jqONttqPhkh7418EFssCKnnaBlUDwsbhp7xd" + + "WN4o1L1NvH4bp_R_zJ25F1s6jLmNm2Qp9LqU133PEdcRIqQPgBMyZB" + + "WUTyxQ9ihKY1RAjlztAULQ3wKea-rfe0BXJZeUJBsQPzYCnbKY1dON" + + "_NRd8N9pTImqf41MpIbEe7YEOHuirIb6HBpurhAHjTLDv1IuHpEAOx" + + "pmtxVVHiVf-FYXzTFmn4cGe2PsNJfBl8R_zow2n6qaSANdvSxJDE4D" + + "UgIJ6H18wiSJJHp6Plf_bapccAwxbx-zZCw" + } + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { id: "user-id" }, + _delay: 10 + }); + + const AbortController = env.getAbortController(); + const abortController = new AbortController(); + const task = client.user.read({ signal: abortController.signal }); + abortController.abort(); + await expect(task).to.reject( + Error, "The user aborted a request." + ); + }); + }); + + it ("works with includeResponse: true", () => { + crossPlatformTest(async (env) => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient", id: "user-id" }, + _delay: 10 + }; + + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + patient: "whatever" + } + }); + + mockServer.mock(mock); + const result = await client.user.read({ includeResponse: true }); + expect(result.body).to.equal({ resourceType: "Patient", id: "user-id" }); + expect(result.response.status).to.equal(200); + }); + }); + }); + + describe("fhir.js api", { timeout: 5000 }, () => { + it ("does not work without fhir.js", async () => { + const env = new BrowserEnv(); + // @ts-ignore + const client = new Client(env, { + serverUrl: "https://r2.smarthealthit.org", + tokenResponse: { + patient: "bd7cb541-732b-4e39-ab49-ae507aa49326" + } + }); + expect(client.api).to.be.undefined(); + expect(client.patient.api).to.be.undefined(); + }); + + it ("works in the browser", async () => { + const env = new BrowserEnvFhir(); + // @ts-ignore + const client = new Client(env, { + serverUrl: "https://r2.smarthealthit.org", + tokenResponse: { + patient: "bd7cb541-732b-4e39-ab49-ae507aa49326" + } + }); + await (client.api as any).read({ type: "Patient", id: "bd7cb541-732b-4e39-ab49-ae507aa49326" }); + await (client.api as any).search({ type: "Patient" }); + await (client.patient.api as any).read({ type: "Patient", id: "bd7cb541-732b-4e39-ab49-ae507aa49326" }); + }); + }); + + describe("client.connect", () => { + it ("works as expected", () => { + const env = new BrowserEnv(); + // @ts-ignore + const client = new Client(env, { + serverUrl: "https://r2.smarthealthit.org", + tokenResponse: { + access_token: "my access token" + } + }); + + let _passedOptions: any = {}; + + const fhirJs = (options: any) => { + _passedOptions = options; + return options; + }; + + client.connect(fhirJs); + + expect(_passedOptions.baseUrl).to.equal("https://r2.smarthealthit.org"); + expect(_passedOptions.auth).to.equal({ token: "my access token" }); + + (client.state.tokenResponse as any).access_token = null; + client.connect(fhirJs); + expect(_passedOptions.auth).to.be.undefined(); + expect(client.patient.api).to.be.undefined(); + + client.state.username = "my username"; + client.connect(fhirJs); + expect(_passedOptions.auth).to.be.undefined(); + + client.state.password = "my password"; + client.connect(fhirJs); + expect(_passedOptions.auth).to.equal({ + user: "my username", + pass: "my password" + }); + + client.state.password = "my password"; + client.connect(fhirJs); + expect(_passedOptions.auth).to.equal({ + user: "my username", + pass: "my password" + }); + + (client.state.tokenResponse as any).patient = "bd7cb541-732b-4e39-ab49-ae507aa49326"; + client.connect(fhirJs); + expect(client.patient.api).to.not.be.undefined(); + }); + }); + + describe("client.request", () => { + + // Argument validation ------------------------------------------------- + it("rejects if no url is provided", async () => { + // @ts-ignore + const client = new Client({}, "http://localhost"); + // @ts-ignore + await expect(client.request()).to.reject(); + }); + + // Token expiration and refresh ---------------------------------------- + + describe ("throws if 401 and no accessToken", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + mockServer.mock({ status: 401 }); + await expect(client.request("/")).to.reject(); + }); + }); + + describe ("throws if 401 and no fhirOptions.useRefreshToken", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + access_token: "whatever" + } + }); + mockServer.mock({ status: 401 }); + await expect(client.request("/", { + useRefreshToken: false + })).to.reject(); + }); + }); + + describe ("throws if 401 and no refresh_token", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + access_token: "whatever" + } + }); + mockServer.mock({ status: 401 }); + await expect(client.request("/")).to.reject(); + }); + }); + + describe ("throws if 401 after refresh", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { + access_token: "whatever", + refresh_token: "whatever" + } + }); + mockServer.mock({ status: 401 }); + await expect(client.request("/")).to.reject(); + }); + }); + + describe ("throws if 403 after refresh", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + mockServer.mock({ status: 403 }); + await expect(client.request("/")).to.reject(); + }); + }); + + describe("auto-refresh if access token is expired", () => { + crossPlatformTest(async (env) => { + const exp = Math.round(Date.now() / 1000) - 20; + const access_token = `x.${env.btoa(`{"exp":${exp}}`)}.x`; + const client = new Client(env, { + serverUrl: mockUrl, + tokenUri: mockUrl, + expiresAt: exp, + tokenResponse: { + access_token, + refresh_token: "whatever", + scope: "offline_access" + } + }); + mockServer.mock({ + status: 200, + headers: { + "content-type": "application/json" + }, + body: { + access_token: "x" + } + }); + mockServer.mock({ + handler(req, res) { + res.json(req.headers.authorization) + } + }); + const result = await client.request("/"); + expect(client.state.tokenResponse?.access_token).to.equal("x"); + expect(result).to.equal("Bearer x"); + }); + }); + + describe("auto-refresh if access token is about to expire", () => { + crossPlatformTest(async (env) => { + const exp = Math.round(Date.now() / 1000) - 5; + const access_token = `x.${env.btoa(`{"exp":${exp}}`)}.x`; + const client = new Client(env, { + serverUrl: mockUrl, + tokenUri: mockUrl, + expiresAt: exp, + tokenResponse: { + access_token, + refresh_token: "whatever", + scope: "offline_access" + } + }); + mockServer.mock({ + status: 200, + headers: { + "content-type": "application/json" + }, + body: { + access_token: "x" + } + }); + mockServer.mock({ status: 200, body: "OK" }); + const result = await client.request("/"); + expect(result).to.equal("OK"); + expect(client.state.tokenResponse?.access_token).to.equal("x"); + }); + }); + + describe("no auto-refresh if the access token is not expired", () => { + crossPlatformTest(async (env) => { + const exp = Math.round(Date.now() / 1000) + 50; + const access_token = `x.${env.btoa(`{"exp":${exp}}`)}.x`; + const client = new Client(env, { + serverUrl: mockUrl, + tokenUri: mockUrl, + expiresAt: exp, + tokenResponse: { + access_token, + refresh_token: "whatever", + scope: "offline_access" + } + }); + mockServer.mock({ status: 200, body: "OK" }); + const result = await client.request("/"); + expect(result).to.equal("OK"); + }); + }); + + // --------------------------------------------------------------------- + + describe ("can fetch single resource", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { id: "patient-id" } + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const result = await client.request("/Patient/patient-id"); + expect(result).to.include({ id: "patient-id" }); + }); + } + }); + + describe ("works with URL", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { id: "patient-id" } + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const result = await client.request(new URL("/Patient/patient-id", mockUrl)); + expect(result).to.include({ id: "patient-id" }); + }); + } + }); + + describe ("resolve with falsy value if one is received", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: "" + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const result = await client.request("Patient"); + expect(result).to.equal(""); + }); + } + }); + + describe ("ignores pageLimit if the result is not a bundle", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient" } + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const result = await client.request("/Patient", { pageLimit: 1 }); + expect(result).to.include({ resourceType: "Patient" }); + }); + } + }); + + describe("can fetch a bundle", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Bundle", entry: [] } + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const result = await client.request("/Patient"); + expect(result).to.include({ resourceType: "Bundle" }); + expect(result).to.include("entry"); + }); + } + }); + + describe ("does not return an array if pageLimit is 1", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [] + } + }); + const result = await client.request("/Patient", { pageLimit: 1 }); + expect(result).to.include({ resourceType: "Bundle" }); + expect(result).to.include("entry"); + }); + }); + + describe ("can fetch multiple pages", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [] + } + }); + const result = await client.request("/Patient", { pageLimit: 2 }); + expect(result).to.be.an.array(); + expect(result.length).to.equal(2); + expect(result[0]).to.include({ resourceType: "Bundle" }); + expect(result[0]).to.include("entry"); + expect(result[1]).to.include({ resourceType: "Bundle" }); + expect(result[1]).to.include("entry"); + }); + }); + + describe ("returns an array if pageLimit is different than 1, even if there is only one page", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [] + } + }); + const result = await client.request("/Practitioner", { pageLimit: 0 }); + expect(result).to.be.an.array(); + expect(result.length).to.equal(1); + expect(result[0]).to.include({ resourceType: "Bundle" }); + expect(result[0]).to.include("entry"); + }); + }); + + describe ("can fetch all pages", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [] + } + }); + + const result = await client.request("/Patient", { pageLimit: 0 }); + expect(result).to.be.an.array(); + expect(result.length).to.equal(2); + }); + }); + + describe ("onPage callback", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + const pages: any[] = []; + const onPage = (page: any) => pages.push(page); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [] + } + }); + + const result = await client.request("/Patient", { + pageLimit: 0, + onPage + }); + expect(result, "Resolves with an object").to.equal(null); + expect(pages.length, "onPage should be called twice").to.equal(2); + expect(pages[0]).to.include({ pageId: 1 }); + expect(pages[1]).to.include({ pageId: 2 }); + }); + }); + + describe ("stops fetching pages if onPage throws", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + const pages: any[] = []; + const onPage = (page: any) => { + pages.push(page); + throw new Error("test error"); + }; + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + await client.request("/Patient", { + pageLimit: 0, + onPage + }).catch(error => { + expect(error).to.be.error(Error, "test error"); + }); + expect(pages.length, "onPage should be called once").to.equal(1); + expect(pages[0]).to.include({ pageId: 1 }); + }); + }); + + describe ("stops fetching pages if onPage rejects", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + const pages: any[] = []; + const onPage = (page: any) => { + pages.push(page); + return Promise.reject(new Error("test error")); + }; + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + await client.request("/Patient", { + pageLimit: 0, + onPage + }).catch(error => { + expect(error).to.be.error(Error, "test error"); + }); + expect(pages.length, "onPage should be called once").to.equal(1); + expect(pages[0]).to.include({ pageId: 1 }); + }); + }); + + describe ("awaits for the onPage callback", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + const pages: any[] = []; + const onPage = (page: any) => { + return new Promise(resolve => { + setTimeout(() => { + pages.push(page); + resolve(void 0); + }, 100); + }); + }; + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [] + } + }); + + const result = await client.request("/Patient", { + pageLimit: 0, + onPage + }); + expect(result, "Resolves with an object").to.equal(null); + expect(pages.length, "onPage should be called twice").to.equal(2); + expect(pages[0]).to.include({ pageId: 1 }); + expect(pages[1]).to.include({ pageId: 2 }); + }); + }); + + describe ("can resolve refs on single resource", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "id", + ref1: { + reference: "whatever" + } + } + }); + + // Referenced page + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-id" + } + }); + + const result = await client.request( + "/Patient/id", + { resolveReferences: "ref1" } + ); + expect(result).to.equal({ + resourceType: "Patient", + id: "id", + ref1: { + resourceType: "Ref", + id: "Ref-id" + } + }); + }); + }); + + describe ("does not fetch the same ref twice", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + patient: { reference: "ref/1" }, + subject: { reference: "ref/1" } + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient" } + }); + + const result = await client.request("Observation/id", { + resolveReferences: [ "patient", "subject" ] + }); + + expect(result).to.equal({ + patient: { resourceType: "Patient" }, + subject: { resourceType: "Patient" } + }); + }); + }); + + describe ("mixed example #88", () => { + const json = { + contained: [ + { + subject: { + reference: "Patient/1" + } + }, + { + beneficiary: { + reference: "Patient/1" + } + } + ], + patient: { + reference: "Patient/1" + } + }; + + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: json + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient", id: 1 } + }); + + const result = await client.request( + "ExplanationOfBenefit/17", + { + resolveReferences: [ + "patient", + "contained.0.subject", + "contained.1.beneficiary" + ], + graph: true + } + ); + + expect(result.patient).to.equal({ resourceType: "Patient", id: 1 }); + expect(result.contained[0].subject).to.equal({ resourceType: "Patient", id: 1 }); + expect(result.contained[1].beneficiary).to.equal({ resourceType: "Patient", id: 1 }); + }); + }); + + describe ("mixed example #73", () => { + const json = { + identifier: [ + { + assigner: { + reference: "Organization/2" + } + }, + { + assigner: { + reference: "Organization/3" + } + } + ] + }; + + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: json + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Organization", id: 2 } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Organization", id: 3 } + }); + + const result = await client.request( + "ExplanationOfBenefit/17", + { + resolveReferences: "identifier..assigner", + graph: true + } + ); + + expect(result.identifier).to.equal([ + { + assigner: { + resourceType: "Organization", + id: 2 + } + }, + { + assigner: { + resourceType: "Organization", + id: 3 + } + } + ]); + }); + }); + + describe ("ignores missing ref", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + patient: { reference: "ref/1" } + } + }); + + mockServer.mock({ + status: 404, + body: "Not Found" + }); + + const result = await client.request("Observation/id", { + resolveReferences: "patient" + }); + + expect(result).to.equal({ + patient: { reference: "ref/1" } + }); + }); + }); + + describe ("ignores missing ref from source", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + patient: { reference: null } + } + }); + + const result = await client.request("Observation/id", { + resolveReferences: "patient" + }); + + expect(result).to.equal({ + patient: { reference: null } + }); + }); + }); + + describe ("warns about duplicate ref paths", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + patient: { reference: "ref/1" } + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient" } + }); + + const result = await client.request("Observation/id", { + resolveReferences: ["patient", "patient"] + }); + + expect(result).to.equal({ + patient: { resourceType: "Patient" } + }); + + expect(clientDebug._calls.find((o: any) => o[0] === "Duplicated reference path \"%s\"")).to.exist(); + }); + }); + + describe ("can resolve nested refs", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // This is how the user had defined the list, If it works properly, + // the request function should resolve them in different order: + // 1. subject and encounter (in parallel) + // 2. encounter.serviceProvider + const refsToResolve = [ + "subject", + "encounter.serviceProvider", + "encounter" + ]; + + function createHandler(json) { + return function handler(req, res, next) { + try { + expect(req.headers['x-custom-header'], "Custom headers not sent on ref requests").to.equal('someCustomKey'); + res.json(json) + } catch (ex) { + next(ex) + } + } + } + + // 1. Observation + // this request should be sent first! + mockServer.mock({ + handler: createHandler({ + resourceType: "Observation", + encounter: { reference: "encounter/1" }, + subject: { reference: "subject/1" } + }) + }); + + // 2. Patient (Observation.subject) + // this request should be sent second (even though it might + // reply after #3) + mockServer.mock({ + handler: createHandler({ resourceType: "Patient" }) + }); + + // 3. Encounter + // this request should be sent third (even though it might + // reply before #2) + mockServer.mock({ + handler: createHandler({ + resourceType: "Encounter", + serviceProvider: { reference: "Organization/1" } + }) + }); + + // 4. Organization (Encounter.serviceProvider) + // this request should be sent AFTER we have handled the response + // from #3! + mockServer.mock({ + handler: createHandler({ resourceType: "Organization" }) + }); + + const result = await client.request({ + url: "Observation/id", + headers: { + 'X-Custom-Header': 'someCustomKey', + } + }, { + resolveReferences: refsToResolve + }); + + expect(result).to.equal({ + resourceType: "Observation", + encounter: { + resourceType: "Encounter", + serviceProvider: { + resourceType: "Organization" + } + }, + subject: { + resourceType: "Patient" + } + }); + }); + }); + + describe ("can resolve refs on single resource with `graph: false`", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "id", + ref1: { + reference: "whatever" + } + } + }); + + // Referenced page + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-id" + } + }); + + const result = await client.request( + "/Patient/id", + { + resolveReferences: "ref1", + graph: false + } + ); + expect(result).to.equal({ + data: { + resourceType: "Patient", + id: "id", + ref1: { + reference: "whatever" + } + }, + references: { + whatever: { + resourceType: "Ref", + id: "Ref-id" + } + } + }); + }); + }); + + describe ("can resolve refs on pages", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "whatever-1" + } + } + }] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + }); + + // Main page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "whatever-2" + } + } + }] + } + }); + + // Referenced page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + }); + + const result = await client.request( + "/Patient", + { + resolveReferences: "ref1", + pageLimit: 0 + } + ); + expect(result).to.equal([ + { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + } + }] + }, + { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + } + }] + } + ]); + }); + }); + + describe ("can resolve refs on pages with `graph: false`", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "Ref-whatever-1" + } + } + }] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + }); + + // Main page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "Ref-whatever-2" + } + } + }] + } + }); + + // Referenced page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + }); + + const result = await client.request( + "/Patient", + { + resolveReferences: "ref1", + pageLimit: 0, + graph: false + } + ); + expect(result).to.equal({ + data: [ + { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "Ref-whatever-1" + } + } + }] + }, + { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "Ref-whatever-2" + } + } + }] + } + ], + references: { + "Ref-whatever-1": { + resourceType: "Ref", + id: "Ref-whatever-1" + }, + "Ref-whatever-2": { + resourceType: "Ref", + id: "Ref-whatever-2" + } + } + }); + }); + }); + + describe ("can resolve refs on pages with `onPage`", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "whatever-1" + } + } + }] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + }); + + // Main page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "whatever-2" + } + } + }] + } + }); + + // Referenced page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + }); + + const pages: any[] = []; + const result = await client.request( + "/Patient", + { + resolveReferences: "ref1", + pageLimit: 0, + onPage(data) { + pages.push(data); + } + } + ); + expect(result).to.equal(null); + expect(pages).to.equal([ + { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + } + }] + }, + { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + } + }] + } + ]); + }); + }); + + describe ("can resolve refs on pages with `onPage` and `graph: false`", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "whatever-1" + } + } + }] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + }); + + // Main page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "whatever-2" + } + } + }] + } + }); + + // Referenced page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + }); + + const pages: any[] = []; + const refs: any[] = []; + const result = await client.request( + "/Patient", + { + resolveReferences: "ref1", + pageLimit: 0, + graph: false, + onPage(data, references) { + pages.push(data); + refs.push(references); + } + } + ); + expect(result).to.equal(null); + expect(pages).to.equal([ + { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "whatever-1" + } + } + }] + }, + { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "whatever-2" + } + } + }] + } + ]); + expect(refs).to.equal([ + { + "whatever-1": { + resourceType: "Ref", + id: "Ref-whatever-1" + } + }, + { + "whatever-1": { + resourceType: "Ref", + id: "Ref-whatever-1" + }, + "whatever-2": { + resourceType: "Ref", + id: "Ref-whatever-2" + } + } + ]); + }); + }); + + describe ("resolve all refs if it points to an array", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Main page + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "id", + ref1: [ + { reference: "whatever-1" }, + { reference: "whatever-2" } + ] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Ref", id: "Ref-id-1" } + }); + + // Referenced page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Ref", id: "Ref-id-2" } + }); + + const result = await client.request( + "/Patient/id", + { resolveReferences: "ref1" } + ); + expect(result).to.equal({ + resourceType: "Patient", + id: "id", + ref1: [ + { resourceType: "Ref", id: "Ref-id-1" }, + { resourceType: "Ref", id: "Ref-id-2" } + ] + }); + }); + }); + + + // flat ---------------------------------------------------------------- + + describe("flat", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Main page + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [ + { resource: "resource-1" }, + { resource: "resource-2" } + ] + } + }); + + const result = await client.request("/Patient/id", { flat: true }); + + expect(result).to.equal([ + "resource-1", + "resource-2" + ]); + }); + }); + + describe("flat on multiple pages", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-1" }, + { resource: "resource-2" } + ] + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [ + { resource: "resource-3" } + ] + } + }); + + const result = await client.request("/Patient/id", { + flat: true, + pageLimit: 0 + }); + + expect(result).to.equal([ + "resource-1", + "resource-2", + "resource-3" + ]); + }); + }); + + describe("flat on multiple pages with references and onPage", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + const results: any[] = []; + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-1" }, + { + resource: { + subject: { + reference: "Patient/1" + } + } + } + ] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "Patient-1" + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-3" } + ] + } + }); + + // Page 3 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [ + { resource: "resource-4" }, + { resource: "resource-5" } + ] + } + }); + + const result = await client.request("/Patient/id", { + flat: true, + pageLimit: 0, + resolveReferences: "subject", + onPage: data => results.push(data) + }); + + expect(result).to.equal(null); + expect(results).to.equal([ + [ + "resource-1", + { + subject: { + resourceType: "Patient", + id: "Patient-1" + } + } + ], + ["resource-3"], + ["resource-4", "resource-5"] + ]); + }); + + }); + + describe("flat on multiple pages with references and onPage and graph=false", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + const results: any[] = []; + const references = {}; + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-1" }, + { + resource: { + subject: { + reference: "Patient/1" + } + } + } + ] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "Patient-1" + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-3" } + ] + } + }); + + // Page 3 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [ + { resource: "resource-4" }, + { resource: "resource-5" } + ] + } + }); + + const result = await client.request("/Patient/id", { + flat: true, + pageLimit: 0, + resolveReferences: "subject", + graph: false, + onPage: (data, refs) => { + results.push(data); + Object.assign(references, refs); + } + }); + + expect(result).to.equal(null); + expect(results).to.equal([ + [ "resource-1", { + subject: { + reference: "Patient/1" + } + } ], + [ "resource-3" ], + [ "resource-4", "resource-5" ] + ]); + expect(references).to.equal({ + "Patient/1": { + resourceType: "Patient", + id: "Patient-1" + } + }); + }); + + }); + + describe("flat on multiple pages with references", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-1" }, + { + resource: { + subject: { + reference: "Patient/1" + } + } + } + ] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "Patient-1" + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-3" } + ] + } + }); + + // Page 3 (this should be ignored because pageLimit is 2) + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [ + { resource: "resource-4" }, + { resource: "resource-5" } + ] + } + }); + + const result = await client.request("/Patient/id", { + flat: true, + pageLimit: 2, + resolveReferences: "subject" + }); + + expect(result).to.equal([ + "resource-1", + { + subject: { + resourceType: "Patient", + id: "Patient-1" + } + }, + "resource-3" + ]); + }); + }); + + describe("flat on multiple pages with references and graph=false", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-1" }, + { + resource: { + subject: { + reference: "Patient/1" + } + } + } + ] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Patient", + id: "Patient-1" + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + link: [{ relation: "next", url: "whatever" }], + entry: [ + { resource: "resource-3" } + ] + } + }); + + // Page 3 (this should be ignored because pageLimit is 2) + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [ + { resource: "resource-4" }, + { resource: "resource-5" } + ] + } + }); + + const result = await client.request("/Patient/id", { + flat: true, + pageLimit: 2, + graph: false, + resolveReferences: "subject" + }); + + expect(result).to.equal({ + data: [ + "resource-1", + { + subject: { + reference: "Patient/1" + } + }, + "resource-3" + ], + references: { + "Patient/1": { + resourceType: "Patient", + id: "Patient-1" + } + } + }); + }); + }); + + describe("can fetch text", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + mockServer.mock({ + headers: { "content-type": "text/plain" }, + status: 200, + body: "This is a text" + }); + + const result = await client.request("/"); + + expect(result).to.equal("This is a text"); + }); + }); + + describe("can fetch binary", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + const file = FS.readFileSync(__dirname + "/mocks/json.png"); + const goal64 = file.toString("base64"); + + mockServer.mock({ + headers: { "content-type": "image/png" }, + status: 200, + file: "json.png" + }); + + const result = await client.request("/"); + // const text = await result.text(); + const buffer = await result.arrayBuffer(); + // const base64 = Buffer.from(buffer).toString("base64"); + expect(Buffer.from(buffer).toString("base64")).to.equal(goal64); + + // const client = new Client(env, "https://r2.smarthealthit.org"); + // const result = await client.request("Binary/smart-Binary-1-document"); + + // // Using blob() ------------------------------------------------ + + // // Using arrayBuffer() ----------------------------------------- + + // const buffer = await result.arrayBuffer(); + // // console.log(URL.createObjectURL(blob)); + // // const text = await result.text(); + // var base64Image = Buffer.from(buffer).toString('base64'); + // console.log(base64Image); + // expect(result).to.equal("This is a text"); + }); + }); + + // Aborting ------------------------------------------------------------ + describe ("can be aborted", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { id: "patient-id" }, + _delay: 10 + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const AbortController = tests[name].getAbortController(); + const abortController = new AbortController(); + const task = client.request({ url: "/Patient/patient-id", signal: abortController.signal }); + abortController.abort(); + await expect(task).to.reject( + Error, "The user aborted a request." + ); + }); + } + }); + + describe ("aborts nested page requests", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + const pages: any[] = []; + const AbortController = env.getAbortController(); + const abortController = new AbortController(); + const onPage = (page: any) => { + if (pages.push(page) == 2) { + + // On the second call to onPage the main request is complete + // (the one that got page 1) and the first child request + // (the one that got page 2) is complete. At this point, + // even though the main request itself is complete, aborting + // it should propagate to any nested requests and cancel them. + // We should not get to page 3! + abortController.abort(); + } + }; + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + entry: [], + link: [{ relation: "next", url: "whatever" }] + }, + _delay: 10 + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [], + link: [{ relation: "next", url: "whatever" }] + }, + _delay: 10 + }); + + // Page 3 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 3, + entry: [] + }, + _delay: 10 + }); + + const task = client.request({ + url: "/Patient", + signal: abortController.signal + }, { + pageLimit: 0, + onPage + }); + + await expect(task).to.reject(Error, "The user aborted a request."); + expect(pages.length, "onPage should be called twice").to.equal(2); + expect(pages[0]).to.include({ pageId: 1 }); + expect(pages[1]).to.include({ pageId: 2 }); + }); + }); + + describe ("aborts nested reference requests", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + const AbortController = env.getAbortController(); + const abortController = new AbortController(); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + patient: { reference: "ref/1" }, + subject: { reference: "ref/2" } + }, + _delay: 10 + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient" }, + _delay: 10 + }); + + // Page 3 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { resourceType: "Patient" }, + _delay: 1000 + }); + + const task = client.request({ + url: "/Patient", + signal: abortController.signal + }, { + resolveReferences: [ + "patient", + "subject" + ] + }); + + // After 30ms the main resource should be fetched and the patient + // reference should be resolved. The subject reference should + // still be pending because it takes 1000ms to reply. If we abort + // at that point, we should get our client.request promise + // rejected with abort error. + setTimeout(() => abortController.abort(), 30); + + await expect(task).to.reject(Error, "The user aborted a request."); + }); + }); + + // includeResponse ----------------------------------------------------- + describe ("can fetch single resource with includeResponse: true", () => { + const mock = { + headers: { "content-type": "application/json" }, + status: 200, + body: { id: "patient-id" } + }; + const tests: Record = { + "works in the browser": new BrowserEnv(), + "works on the server" : new ServerEnv() + }; + + for (const name in tests) { + it (name, async () => { + const client = new Client(tests[name], { serverUrl: mockUrl }); + mockServer.mock(mock); + const result = await client.request({ + url: "/Patient/patient-id", + includeResponse: true + }); + // @ts-ignore + expect(result.body).to.include({ id: "patient-id" }); + expect(result.response.status).to.equal(200); + }); + } + }); + + describe ("can fetch all pages with includeResponse: true", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [], + link: [{ relation: "next", url: "whatever" }] + } + }); + + // Page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + entry: [] + } + }); + + const result = await client.request({ + url: "/Patient", + includeResponse: true + }, { pageLimit: 0 }); + expect(result.body).to.be.an.array(); + expect(result.body?.length).to.equal(2); + expect(result.response.status).to.equal(200); + }); + }); + + describe ("can resolve refs on pages with includeResponse: true", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { serverUrl: mockUrl }); + + // Main page 1 + mockServer.mock({ + headers: { + "content-type": "application/json", + "x-custom": "test" + }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + reference: "whatever-1" + } + } + }] + } + }); + + // Referenced page 1 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + }); + + // Main page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + reference: "whatever-2" + } + } + }] + } + }); + + // Referenced page 2 + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + }); + + const result = await client.request( + { + url: "/Patient", + includeResponse: true + }, + { + resolveReferences: "ref1", + pageLimit: 0 + } + ); + + expect(result.response.status).to.equal(200); + expect(result.response.headers.get("x-custom")).to.equal("test"); + expect(result.body as any).to.equal([ + { + resourceType: "Bundle", + pageId: 1, + link: [{ relation: "next", url: "whatever" }], + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-1", + ref1: { + resourceType: "Ref", + id: "Ref-whatever-1" + } + } + }] + }, + { + resourceType: "Bundle", + pageId: 2, + entry: [{ + resource: { + resourceType: "Patient", + id: "pt-2", + ref1: { + resourceType: "Ref", + id: "Ref-whatever-2" + } + } + }] + } + ]); + }); + }); + + }); + + describe ("client.user", () => { + const idToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MjA4MDQxNiIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MjA4MDQxNiIsInN1YiI6IjM2YTEwYmM0ZDJhNzM1OGI0YWZkYWFhZjlhZjMyYmFjY2FjYmFhYmQxMDkxYmQ0YTgwMjg0MmFkNWNhZGQxNzgiLCJpc3MiOiJodHRwOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnIiwiaWF0IjoxNTU5MzkyMjk1LCJleHAiOjE1NTkzOTU4OTV9.niEs55G4AFJZtU_b9Y1Y6DQmXurUZZkh3WCudZgwvYasxVU8x3gJiX3jqONttqPhkh7418EFssCKnnaBlUDwsbhp7xdWN4o1L1NvH4bp_R_zJ25F1s6jLmNm2Qp9LqU133PEdcRIqQPgBMyZBWUTyxQ9ihKY1RAjlztAULQ3wKea-rfe0BXJZeUJBsQPzYCnbKY1dON_NRd8N9pTImqf41MpIbEe7YEOHuirIb6HBpurhAHjTLDv1IuHpEAOxpmtxVVHiVf-FYXzTFmn4cGe2PsNJfBl8R_zow2n6qaSANdvSxJDE4DUgIJ6H18wiSJJHp6Plf_bapccAwxbx-zZCw"; + crossPlatformTest(async (env) => { + const client1 = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + expect(client1.user.id).to.equal(null); + expect(client1.getUserId()).to.equal(null); + expect(client1.getFhirUser()).to.equal(null); + expect(client1.getUserType()).to.equal(null); + + const client2 = new Client(env, { + serverUrl: mockUrl, + tokenResponse: { id_token: idToken } + }); + expect(client2.user.id).to.equal("smart-Practitioner-72080416"); + expect(client2.getUserId()).to.equal("smart-Practitioner-72080416"); + expect(client2.getFhirUser()).to.equal("Practitioner/smart-Practitioner-72080416"); + expect(client2.getUserType()).to.equal("Practitioner"); + }); + }); + + describe ("client.getAuthorizationHeader", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + + expect(client.getAuthorizationHeader()).to.equal(null); + + client.state.username = "my-username"; + expect(client.getAuthorizationHeader()).to.equal(null); + + client.state.password = "my-password"; + expect(client.getAuthorizationHeader()).to.equal( + "Basic " + Buffer.from("my-username:my-password", "ascii").toString("base64") + ); + + (client.state.tokenResponse as any).access_token = "my-token"; + expect(client.getAuthorizationHeader()).to.equal("Bearer my-token"); + }); + }); + + describe ("client.refresh", () => { + + it ("Validates state and throws if needed", async () => { + + expect( + // @ts-ignore + () => (new Client({}, { + serverUrl: "http://whatever", + tokenUri : "whatever", + tokenResponse: { + access_token: "whatever", + scope : "test" + } + }).refresh()), + "throws with no refreshToken" + ).to.throw(Error, /\brefresh_token\b/); + + expect( + // @ts-ignore + () => new Client({}, { + serverUrl: "http://whatever", + tokenResponse: { + access_token : "whatever", + refresh_token: "whatever", + scope : "test" + } + }).refresh(), + "throws with no tokenUri" + ).to.throw(Error, /\btokenUri\b/); + + expect( + // @ts-ignore + () => new Client({}, { + serverUrl: "http://whatever", + tokenUri : "whatever", + tokenResponse: { + access_token : "whatever", + refresh_token: "whatever", + scope : "test" + } + }).refresh(), + "throws with no offline_access or online_access scope" + ).to.throw(Error, /\boffline_access\b/); + + expect( + // @ts-ignore + () => new Client({}, { + serverUrl: "http://whatever", + tokenUri : "whatever", + tokenResponse: { + access_token : "whatever", + refresh_token: "whatever" + } + }).refresh(), + "throws with no scope" + ).to.throw(Error, /\boffline_access\b/); + + await expect( + (() => { + const env = new BrowserEnv(); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { result: false } + }); + // @ts-ignore + const client = new Client(env, { + serverUrl: "http://whatever", + tokenUri : mockUrl, + tokenResponse: { + access_token : "whatever", + refresh_token: "whatever", + scope : "offline_access" + } + }); + return client.refresh(); + })(), + "throws if the token endpoint does not return access_token" + ).to.reject(Error, "No access token received"); + + await expect( + (() => { + const env = new BrowserEnv(); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { result: false } + }); + // @ts-ignore + const client = new Client(env, { + serverUrl: "http://whatever", + tokenUri : mockUrl, + tokenResponse: { + access_token : "whatever", + refresh_token: "whatever", + scope : "online_access" + } + }); + return client.refresh(); + })(), + "throws if the token endpoint does not return access_token for online_access" + ).to.reject(Error, "No access token received"); + }); + + it ("Includes auth header for confidential clients", async () => { + const self = new Window(); + (global as any).sessionStorage = self.sessionStorage; + const env = new BrowserEnv(); + const storage = env.getStorage(); + const key = "my-key"; + const state = { + serverUrl: mockUrl, + tokenUri: mockUrl, + clientSecret: "MyClientSecret", + clientId: "my_web_app", + tokenResponse: { + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiZWIzMjcxZTEtYWUxYi00NjQ0LTkzMzItNDFlMzJjODI5NDg2IiwiZW5jb3VudGVyIjoiMzFiMThhYTAtMGRhNy00NDYwLTk2MzMtMDRhZjQxNDY2ZDc2In0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1ODcxMDk2NCwiZXhwIjoxNTkwMjQ2OTY1fQ.f5yNY-yKKDe0a59_eFgp6s0rHSgPLXgmAWDPz_hEUgs", + "expires_in" : 1, + "access_token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImViMzI3MWUxLWFlMWItNDY0NC05MzMyLTQxZTMyYzgyOTQ4NiIsImVuY291bnRlciI6IjMxYjE4YWEwLTBkYTctNDQ2MC05NjMzLTA0YWY0MTQ2NmQ3NiIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVpXSXpNamN4WlRFdFlXVXhZaTAwTmpRMExUa3pNekl0TkRGbE16SmpPREk1TkRnMklpd2laVzVqYjNWdWRHVnlJam9pTXpGaU1UaGhZVEF0TUdSaE55MDBORFl3TFRrMk16TXRNRFJoWmpReE5EWTJaRGMySW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT0RjeE1EazJOQ3dpWlhod0lqb3hOVGt3TWpRMk9UWTFmUS5mNXlOWS15S0tEZTBhNTlfZUZncDZzMHJIU2dQTFhnbUFXRFB6X2hFVWdzIiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9EY3hNRGsyTlN3aVpYaHdJam94TlRVNE56RTBOVFkxZlEuVzFPSmdWUl9wOTdERlRaSmZhLWI2aWRmNktZMTUtbE81WU9nNHROZkJ5X3dmUHVpbHBUeXZBcDFHRnc2TFpGMnFhNkFWYV9oc1BoXy1GSTJKNkN6MGlqZkFZbVMzdFZwYVZYSGhpMjZsUG5QdUIxVjFUbWJ6YVhDWmJYaC1pdjl4WTNZQXFFRTgyMjFjTXRzQ3FXUFM3aUlMYmJJZmozQnlNMm04aXNRVS1pOGhxLUdTV2ZKNTlwczRGMFZNdlI0QmlPUUdIOXQ5TFQ0TDVxNnNsLU9ONUpJVnJFdnEweFJQVjBrTnpqbUVheklLbV9MMllZM09yMVYwbE02Q0otM2U4RkdkUElIRlRpMjJXcVc1dXhBU2NDVm1hZ1h4S2l5T2xNRWc3dGtjUHA3MjJtS3B0MTMwT3lzaUZyOGpZaElYZkdhX3VGN0tDVFhTZ0RrZEV1WlNRIiwiaWF0IjoxNTU4NzEwOTY1LCJleHAiOjE1NTg3MTQ1NjV9.FDRzViWLg4rMfDzr7Bx01pt5t7CapzcJwQcaFTVcu3E", + "scope": "offline_access" + }, + key + }; + + storage.set(KEY, key); + storage.set(key, state); + + const client = new Client(env, state); + + mockServer.mock({ + handler(req, res) { + res.json({ + headers: req.headers, + expires_in: 3600, + access_token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImViMzI3MWUxLWFlMWItNDY0NC05MzMyLTQxZTMyYzgyOTQ4NiIsImVuY291bnRlciI6IjMxYjE4YWEwLTBkYTctNDQ2MC05NjMzLTA0YWY0MTQ2NmQ3NiIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVpXSXpNamN4WlRFdFlXVXhZaTAwTmpRMExUa3pNekl0TkRGbE16SmpPREk1TkRnMklpd2laVzVqYjNWdWRHVnlJam9pTXpGaU1UaGhZVEF0TUdSaE55MDBORFl3TFRrMk16TXRNRFJoWmpReE5EWTJaRGMySW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT0RjeE1EazJOQ3dpWlhod0lqb3hOVGt3TWpRMk9UWTFmUS5mNXlOWS15S0tEZTBhNTlfZUZncDZzMHJIU2dQTFhnbUFXRFB6X2hFVWdzIiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9EY3hNRGsyTlN3aVpYaHdJam94TlRVNE56RTBOVFkxZlEuVzFPSmdWUl9wOTdERlRaSmZhLWI2aWRmNktZMTUtbE81WU9nNHROZkJ5X3dmUHVpbHBUeXZBcDFHRnc2TFpGMnFhNkFWYV9oc1BoXy1GSTJKNkN6MGlqZkFZbVMzdFZwYVZYSGhpMjZsUG5QdUIxVjFUbWJ6YVhDWmJYaC1pdjl4WTNZQXFFRTgyMjFjTXRzQ3FXUFM3aUlMYmJJZmozQnlNMm04aXNRVS1pOGhxLUdTV2ZKNTlwczRGMFZNdlI0QmlPUUdIOXQ5TFQ0TDVxNnNsLU9ONUpJVnJFdnEweFJQVjBrTnpqbUVheklLbV9MMllZM09yMVYwbE02Q0otM2U4RkdkUElIRlRpMjJXcVc1dXhBU2NDVm1hZ1h4S2l5T2xNRWc3dGtjUHA3MjJtS3B0MTMwT3lzaUZyOGpZaElYZkdhX3VGN0tDVFhTZ0RrZEV1WlNRIiwiaWF0IjoxNTU4NzEwOTY1LCJleHAiOjE1NTg3MTQ1NjV9.FDRzViWLg4rMfDzr7Bx01pt5t7CapzcJwQcaFTVcu3E" + }); + } + }); + + await client.refresh(); + expect((client.state.tokenResponse as any).headers.authorization).to.exist(); + }); + + it ("Ignores parallel invocations", async () => { + const self = new Window(); + (global as any).sessionStorage = self.sessionStorage; + const env = new BrowserEnv(); + const storage = env.getStorage(); + const key = "my-key"; + const state = { + serverUrl: mockUrl, + tokenUri: mockUrl, + tokenResponse: { + refresh_token: "test_refresh_token", + expires_in : 1, + access_token : "test_access_token", + scope : "offline_access" + }, + key + }; + + storage.set(KEY, key); + storage.set(key, state); + + const client = new Client(env, state); + + mockServer.mock({ + handler(req, res) { + res.json({ + headers: req.headers, + expires_in: 3600, + access_token: "x" + }); + } + }); + + const job1 = client.refresh(); + const job2 = client.refresh(); + await job1; + await job2; + expect(job1).to.equal(job2); + }); + + it ("Allows passing headers", async () => { + const self = new Window(); + (global as any).sessionStorage = self.sessionStorage; + const env = new BrowserEnv(); + const storage = env.getStorage(); + const key = "my-key"; + const state = { + serverUrl: mockUrl, + tokenUri: mockUrl, + tokenResponse: { + refresh_token: "test_refresh_token", + expires_in : 1, + access_token : "test_access_token", + scope : "offline_access" + }, + key + }; + + storage.set(KEY, key); + storage.set(key, state); + + const client = new Client(env, state); + + mockServer.mock({ + handler(req, res) { + res.json({ + headers: req.headers, + expires_in: 3600, + access_token: "x" + }); + } + }); + + await client.refresh({ headers: { "x-test": "test-value" }}); + expect((client.state.tokenResponse as any).headers).to.contain({ "x-test": "test-value" }); + }); + + it ("Allows passing custom authorization header", async () => { + const self = new Window(); + (global as any).sessionStorage = self.sessionStorage; + const env = new BrowserEnv(); + const storage = env.getStorage(); + const key = "my-key"; + const state = { + serverUrl: mockUrl, + tokenUri: mockUrl, + tokenResponse: { + refresh_token: "test_refresh_token", + expires_in : 1, + access_token : "test_access_token", + scope : "offline_access" + }, + key + }; + + storage.set(KEY, key); + storage.set(key, state); + + const client = new Client(env, state); + + mockServer.mock({ + handler(req, res) { + res.json({ + headers: req.headers, + expires_in: 3600, + access_token: "x" + }); + } + }); + + await client.refresh({ headers: { "authorization": "test-value" }}); + expect((client.state.tokenResponse as any).headers).to.contain({ "authorization": "test-value" }); + }); + + it ("Works as expected", async () => { + const self = new Window(); + (global as any).sessionStorage = self.sessionStorage; + const env = new BrowserEnv(); + const storage = env.getStorage(); + const key = "my-key"; + const state = { + serverUrl: mockUrl, + tokenUri: mockUrl, + tokenResponse: { + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiZWIzMjcxZTEtYWUxYi00NjQ0LTkzMzItNDFlMzJjODI5NDg2IiwiZW5jb3VudGVyIjoiMzFiMThhYTAtMGRhNy00NDYwLTk2MzMtMDRhZjQxNDY2ZDc2In0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1ODcxMDk2NCwiZXhwIjoxNTkwMjQ2OTY1fQ.f5yNY-yKKDe0a59_eFgp6s0rHSgPLXgmAWDPz_hEUgs", + "expires_in" : 1, + "access_token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImViMzI3MWUxLWFlMWItNDY0NC05MzMyLTQxZTMyYzgyOTQ4NiIsImVuY291bnRlciI6IjMxYjE4YWEwLTBkYTctNDQ2MC05NjMzLTA0YWY0MTQ2NmQ3NiIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVpXSXpNamN4WlRFdFlXVXhZaTAwTmpRMExUa3pNekl0TkRGbE16SmpPREk1TkRnMklpd2laVzVqYjNWdWRHVnlJam9pTXpGaU1UaGhZVEF0TUdSaE55MDBORFl3TFRrMk16TXRNRFJoWmpReE5EWTJaRGMySW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT0RjeE1EazJOQ3dpWlhod0lqb3hOVGt3TWpRMk9UWTFmUS5mNXlOWS15S0tEZTBhNTlfZUZncDZzMHJIU2dQTFhnbUFXRFB6X2hFVWdzIiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9EY3hNRGsyTlN3aVpYaHdJam94TlRVNE56RTBOVFkxZlEuVzFPSmdWUl9wOTdERlRaSmZhLWI2aWRmNktZMTUtbE81WU9nNHROZkJ5X3dmUHVpbHBUeXZBcDFHRnc2TFpGMnFhNkFWYV9oc1BoXy1GSTJKNkN6MGlqZkFZbVMzdFZwYVZYSGhpMjZsUG5QdUIxVjFUbWJ6YVhDWmJYaC1pdjl4WTNZQXFFRTgyMjFjTXRzQ3FXUFM3aUlMYmJJZmozQnlNMm04aXNRVS1pOGhxLUdTV2ZKNTlwczRGMFZNdlI0QmlPUUdIOXQ5TFQ0TDVxNnNsLU9ONUpJVnJFdnEweFJQVjBrTnpqbUVheklLbV9MMllZM09yMVYwbE02Q0otM2U4RkdkUElIRlRpMjJXcVc1dXhBU2NDVm1hZ1h4S2l5T2xNRWc3dGtjUHA3MjJtS3B0MTMwT3lzaUZyOGpZaElYZkdhX3VGN0tDVFhTZ0RrZEV1WlNRIiwiaWF0IjoxNTU4NzEwOTY1LCJleHAiOjE1NTg3MTQ1NjV9.FDRzViWLg4rMfDzr7Bx01pt5t7CapzcJwQcaFTVcu3E", + "scope": "offline_access" + }, + key + }; + + storage.set(KEY, key); + storage.set(key, state); + + const client = new Client(env, state); + // console.log("===> ", env, storage); + + const fakeTokenResponse = { + headers: { "content-type": "application/json" }, + status: 200, + body: { + "expires_in": 3600, + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImViMzI3MWUxLWFlMWItNDY0NC05MzMyLTQxZTMyYzgyOTQ4NiIsImVuY291bnRlciI6IjMxYjE4YWEwLTBkYTctNDQ2MC05NjMzLTA0YWY0MTQ2NmQ3NiIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVpXSXpNamN4WlRFdFlXVXhZaTAwTmpRMExUa3pNekl0TkRGbE16SmpPREk1TkRnMklpd2laVzVqYjNWdWRHVnlJam9pTXpGaU1UaGhZVEF0TUdSaE55MDBORFl3TFRrMk16TXRNRFJoWmpReE5EWTJaRGMySW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT0RjeE1EazJOQ3dpWlhod0lqb3hOVGt3TWpRMk9UWTFmUS5mNXlOWS15S0tEZTBhNTlfZUZncDZzMHJIU2dQTFhnbUFXRFB6X2hFVWdzIiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9EY3hNRGsyTlN3aVpYaHdJam94TlRVNE56RTBOVFkxZlEuVzFPSmdWUl9wOTdERlRaSmZhLWI2aWRmNktZMTUtbE81WU9nNHROZkJ5X3dmUHVpbHBUeXZBcDFHRnc2TFpGMnFhNkFWYV9oc1BoXy1GSTJKNkN6MGlqZkFZbVMzdFZwYVZYSGhpMjZsUG5QdUIxVjFUbWJ6YVhDWmJYaC1pdjl4WTNZQXFFRTgyMjFjTXRzQ3FXUFM3aUlMYmJJZmozQnlNMm04aXNRVS1pOGhxLUdTV2ZKNTlwczRGMFZNdlI0QmlPUUdIOXQ5TFQ0TDVxNnNsLU9ONUpJVnJFdnEweFJQVjBrTnpqbUVheklLbV9MMllZM09yMVYwbE02Q0otM2U4RkdkUElIRlRpMjJXcVc1dXhBU2NDVm1hZ1h4S2l5T2xNRWc3dGtjUHA3MjJtS3B0MTMwT3lzaUZyOGpZaElYZkdhX3VGN0tDVFhTZ0RrZEV1WlNRIiwiaWF0IjoxNTU4NzEwOTY1LCJleHAiOjE1NTg3MTQ1NjV9.FDRzViWLg4rMfDzr7Bx01pt5t7CapzcJwQcaFTVcu3E" + } + }; + + mockServer.mock(fakeTokenResponse); + + // 1. Manual refresh + await client.refresh(); + expect((client.state.tokenResponse as any).expires_in).to.equal(3600); + + // 2. Automatic refresh + client.state.expiresAt = 0; + mockServer.mock(fakeTokenResponse); + mockServer.mock({ + status: 200, + headers: { + "content-type": "application/json" + }, + body: { + msg: "successful after all" + } + }); + const result = await client.request("/Patient"); + expect(result).to.equal({ msg: "successful after all" }); + }); + }); + + describe("getPatientId() returns null without tokenResponse", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + expect(client.getPatientId()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noFreeContext, "selected patient"]]); + }); + }); + + describe("getPatientId() complains about authorizeUri", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + authorizeUri: "whatever" + }); + expect(client.getPatientId()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noIfNoAuth, "the ID of the selected patient"]]); + }); + }); + + describe("getPatientId() complains about scopes", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + expect(client.getPatientId()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noScopeForId, "patient", "patient"]]); + }); + }); + + describe("getPatientId() complains about server support", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "launch", + tokenResponse: {} + }); + expect(client.getPatientId()).to.equal(null); + expect(clientDebug._calls).to.equal([[ + "The ID of the selected patient is not available. " + + "Please check if your server supports that." + ]]); + }); + }); + + describe("getEncounterId() returns null without tokenResponse", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + expect(client.getEncounterId()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noFreeContext, "selected encounter"]]); + }); + }); + + describe("getEncounterId() complains about authorizeUri", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + authorizeUri: "whatever" + }); + expect(client.getEncounterId()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noIfNoAuth, "the ID of the selected encounter"]]); + }); + }); + + describe("getEncounterId() complains about scopes", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + tokenResponse: {} + }); + expect(client.getEncounterId()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noScopeForId, "encounter", "encounter"]]); + }); + }); + + describe("getEncounterId() complains about server support", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "launch", + tokenResponse: {} + }); + expect(client.getEncounterId()).to.equal(null); + expect(clientDebug._calls).to.equal([[ + "The ID of the selected encounter is not available. " + + "Please check if your server supports that, and that " + + "the selected patient has any recorded encounters." + ]]); + }); + }); + + describe("getIdToken() returns null without tokenResponse", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + expect(client.getIdToken()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noFreeContext, "id_token"]]); + }); + }); + + describe("getIdToken() complains about authorizeUri", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl : mockUrl, + authorizeUri: "whatever" + }); + expect(client.getIdToken()).to.equal(null); + expect(clientDebug._calls).to.equal([[str.noIfNoAuth, "the id_token"]]); + }); + }); + + describe("getIdToken() complains about scopes", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "fhirUser", + tokenResponse: {} + }); + expect(client.getIdToken()).to.equal(null); + expect(clientDebug._calls).to.equal([["You are trying to get the id_token but you are not using the right scopes. Please add 'openid' and 'fhirUser' or 'profile' to the scopes you are requesting."]]); + }); + }); + + describe("getIdToken() complains about server support", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "openid fhirUser", + tokenResponse: {} + }); + expect(client.getIdToken()).to.equal(null); + expect(clientDebug._calls).to.equal([[ + "The id_token is not available. Please check if your " + + "server supports that." + ]]); + }); + }); + + describe("getFhirUser()", () => { + describe("works with fhirUser", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "openid fhirUser", + tokenResponse: { + id_token: jwt.sign({ fhirUser: "Patient/123" }, "secret") + } + }); + expect(client.getFhirUser()).to.equal("Patient/123"); + }); + }) + + describe("handles full urls in fhirUser", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "openid fhirUser", + tokenResponse: { + id_token: jwt.sign({ fhirUser: "http://fhir.dev/r5/Patient/123" }, "secret") + } + }); + expect(client.getFhirUser()).to.equal("Patient/123"); + }); + }) + + describe("works with profile", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, { + serverUrl: mockUrl, + scope: "openid profile", + tokenResponse: { + id_token: jwt.sign({ profile: "Patient/123" }, "secret") + } + }); + expect(client.getFhirUser()).to.equal("Patient/123"); + }); + }) + }) + + describe("_clearState()", () => { + crossPlatformTest(async (env) => { + const self = new Window(); + (global as any).sessionStorage = self.sessionStorage; + const client = new Client(env, { + serverUrl: mockUrl, + scope: "openid fhirUser", + tokenResponse: { a: "b" } + }); + const storage = env.getStorage(); + const key = "my-key"; + await storage.set(KEY, key); + await storage.set(key, "whatever"); + // @ts-ignore + await client._clearState(); + expect(client.state.tokenResponse).to.equal({}); + expect(storage.get(KEY)).to.be.empty(); + expect(storage.get(key)).to.be.empty(); + }); + }); + + describe("byCode", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, "http://localhost"); + const observation1 = require("./mocks/Observation-1.json"); + const observation2 = require("./mocks/Observation-2.json"); + + const resources = [ + observation1, + observation2, + {}, + { + resourceType: "Observation", + category: [ + null, + { + codding: null + } + ] + }, + { + resourceType: "Observation", + category: [ + { + coding: [ + { + code: null + } + ] + } + ] + } + ]; + + expect(client.byCode(resources, "code")).to.equal({ + "55284-4": [ observation1 ], + "6082-2" : [ observation2 ] + }); + + expect(client.byCode(resources, "category")).to.equal({ + "vital-signs": [ observation1 ], + "laboratory" : [ observation2 ] + }); + + expect(client.byCode(resources, "missing")).to.equal({}); + }); + }); + + describe("byCodes", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, "http://localhost"); + const observation1 = require("./mocks/Observation-1.json"); + const observation2 = require("./mocks/Observation-2.json"); + + const resources = [ + observation1, + observation2, + observation1, + observation2 + ]; + + expect(client.byCodes(resources, "code")("55284-4")).to.equal([observation1, observation1]); + + expect(client.byCodes(resources, "code")("6082-2")).to.equal([observation2, observation2]); + + expect(client.byCodes(resources, "category")("laboratory")).to.equal([observation2, observation2]); + }); + }); + + describe("units", () => { + describe ("cm", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, "http://localhost"); + expect(client.units.cm({ code: "cm", value: 3 })).to.equal(3); + expect(client.units.cm({ code: "m", value: 3 })).to.equal(300); + expect(client.units.cm({ code: "in", value: 3 })).to.equal(3 * 2.54); + expect(client.units.cm({ code: "[in_us]", value: 3 })).to.equal(3 * 2.54); + expect(client.units.cm({ code: "[in_i]", value: 3 })).to.equal(3 * 2.54); + expect(client.units.cm({ code: "ft", value: 3 })).to.equal(3 * 30.48); + expect(client.units.cm({ code: "[ft_us]", value: 3 })).to.equal(3 * 30.48); + expect(() => client.units.cm({ code: "xx", value: 3 })).to.throw(); + // @ts-ignore + expect(() => client.units.cm({ code: "m", value: "x" })).to.throw(); + }); + }); + describe ("kg", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, "http://localhost"); + expect(client.units.kg({ code: "kg", value: 3 })).to.equal(3); + expect(client.units.kg({ code: "g", value: 3 })).to.equal(3 / 1000); + expect(client.units.kg({ code: "lb", value: 3 })).to.equal(3 / 2.20462); + expect(client.units.kg({ code: "oz", value: 3 })).to.equal(3 / 35.274); + expect(() => client.units.kg({ code: "xx", value: 3 })).to.throw(); + // @ts-ignore + expect(() => client.units.kg({ code: "lb", value: "x" })).to.throw(); + }); + }); + describe ("any", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, "http://localhost"); + // @ts-ignore + expect(client.units.any({ value: 3 })).to.equal(3); + // @ts-ignore + expect(() => client.units.kg({ value: "x" })).to.throw(); + }); + }); + }); + + describe("getPath", () => { + it ("returns the first arg if no path", () => { + // @ts-ignore + const client = new Client({}, "http://localhost"); + const data = {}; + expect(client.getPath(data)).to.equal(data); + }); + it ("returns the first arg for empty path", () => { + // @ts-ignore + const client = new Client({}, "http://localhost"); + const data = {}; + expect(client.getPath(data, "")).to.equal(data); + }); + it ("works as expected", () => { + // @ts-ignore + const client = new Client({}, "http://localhost"); + const data = { a: 1, b: [0, { a: 2 }] }; + expect(client.getPath(data, "b.1.a")).to.equal(2); + expect(client.getPath(data, "b.4.a")).to.equal(undefined); + }); + }); + + describe("getState", () => { + it ("returns the entire state", () => { + const state = { a: { b: [ { c: 2 } ] }, serverUrl: "http://x" }; + // @ts-ignore + const client = new Client({}, state); + expect(client.getState()).to.equal(state); + }); + + it ("can get single path", () => { + const state = { a: { b: [ { c: 2 } ] }, serverUrl: "http://x" }; + // @ts-ignore + const client = new Client({}, state); + expect(client.getState("serverUrl")).to.equal(state.serverUrl); + }); + + it ("can get nested path", () => { + const state = { a: { b: [ { c: 2 } ] }, serverUrl: "http://x" }; + // @ts-ignore + const client = new Client({}, state); + expect(client.getState("a.b.0.c")).to.equal(2); + }); + + it ("keeps state immutable", () => { + const state = { a: { b: [ { c: 2 } ] }, serverUrl: "http://x" }; + // @ts-ignore + const client = new Client({}, state); + const result = client.getState(); + result.a = 5; + expect(client.getState("a")).to.equal(state.a); + }); + }); + + describe("create", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + const resource = { resourceType: "Patient" }; + + let result: any; + + // Passing the includeResponse option + mockServer.mock({ + status: 200, + body: resource, + headers: { "content-type": "application/json" } + }); + result = await client.create(resource, { includeResponse: true }); + expect(result.body).to.equal(resource); + expect(result.response.status).to.equal(200); + + client.request = async (options: any) => options; + + // Standard usage + result = await client.create(resource); + expect(result).to.equal({ + url : "Patient", + method : "POST", + body : JSON.stringify(resource), + headers: { + "content-type": "application/json" + } + }); + + // Passing options + result = await client.create(resource, { + url : "a", + method: "b", + body : "c", + // @ts-ignore + signal: "whatever", + headers: { + "x-custom": "value", + "content-type": "application/fhir+json" + } + }); + expect(result).to.equal({ + url : "Patient", + method : "POST", + body : JSON.stringify(resource), + signal : "whatever", + headers: { + "x-custom": "value", + "content-type": "application/fhir+json" + } + }); + + // Passing options but no headers + result = await client.create(resource, { + url : "a", + method: "b", + body : "c", + // @ts-ignore + signal: "whatever" + }); + expect(result).to.equal({ + url : "Patient", + method : "POST", + body : JSON.stringify(resource), + signal : "whatever", + headers: { + "content-type": "application/json" + } + }); + }); + }); + + describe("update", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + const resource = { resourceType: "Patient", id: "2" }; + let result: any; + + // Passing the includeResponse option + mockServer.mock({ + status: 200, + body: resource, + headers: { "content-type": "application/json" } + }); + result = await client.update(resource, { includeResponse: true }); + expect(result.body).to.equal(resource); + expect(result.response.status).to.equal(200); + + client.request = async (options: any) => options; + + // Standard usage + result = await client.update(resource); + expect(result).to.equal({ + url : "Patient/2", + method : "PUT", + body : JSON.stringify(resource), + headers: { + "content-type": "application/json" + } + }); + + // Passing options + result = await client.update(resource, { + url : "a", + method: "b", + body : "c", + // @ts-ignore + signal: "whatever", + headers: { + "x-custom": "value", + "content-type": "application/fhir+json" + } + }); + expect(result).to.equal({ + url : "Patient/2", + method : "PUT", + body : JSON.stringify(resource), + signal: "whatever", + headers: { + "x-custom": "value", + "content-type": "application/fhir+json" + } + }); + + // Passing options but no headers + result = await client.update(resource, { + url : "a", + method: "b", + body : "c", + // @ts-ignore + signal: "whatever" + }); + expect(result).to.equal({ + url : "Patient/2", + method : "PUT", + body : JSON.stringify(resource), + signal: "whatever", + headers: { + "content-type": "application/json" + } + }); + }); + + it ("update with text body and includeResponse = true", async () => { + const env = new BrowserEnv() + const client = new Client(env, mockUrl); + + mockServer.mock({ + status: 200, + body: "text", + headers: { "content-type": "text/plain" } + }); + + let result: any = await client.update({}, { includeResponse: true }); + + expect(result.body).to.equal("text"); + expect(result.response).to.exist(); + expect(result.response.status).to.equal(200); + }) + + it ("update with text body and includeResponse = false", async () => { + const env = new BrowserEnv() + const client = new Client(env, mockUrl); + + mockServer.mock({ + status: 200, + body: "text", + headers: { "content-type": "text/plain" } + }); + + let result: any = await client.update({}); + expect(result).to.equal("text"); + }) + + it ("update with empty body and includeResponse = true", async () => { + const env = new BrowserEnv() + const client = new Client(env, mockUrl); + + mockServer.mock({ + status: 200, + body : "", + headers: { "content-type": "application/json" } + }); + + let result: any = await client.update({}, { includeResponse: true }); + + expect(result.body).to.equal(""); + expect(result.response).to.exist(); + expect(result.response.status).to.equal(200); + }) + + it ("update with falsy body and includeResponse = true", async () => { + const env = new BrowserEnv() + const client = new Client(env, mockUrl); + + mockServer.mock({ + status: 200, + body : "null", + headers: { "content-type": "application/json" } + }); + + let result: any = await client.update({}, { includeResponse: true }); + + expect(result.body).to.equal(null); + expect(result.response).to.exist(); + expect(result.response.status).to.equal(200); + }) + + it ("update with Response body and includeResponse = true", async () => { + const env = new BrowserEnv() + const client = new Client(env, mockUrl); + + mockServer.mock({ + status: 200, + body : new Response(), + headers: { "content-type": "application/json" } + }); + + let result: any = await client.update({}, { includeResponse: true }); + + expect(result.body).to.exist(); + expect(result.response).to.exist(); + expect(result.response.status).to.equal(200); + }) + }); + + describe("delete", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + let result: any; + + // Passing the includeResponse option + mockServer.mock({ + status: 200, + body: { result: "success" }, + headers: { "content-type": "application/json" } + }); + + result = await client.delete("Patient/2", { includeResponse: true }); + expect(result.body).to.equal({ result: "success" }); + expect(result.response.status).to.equal(200); + + client.request = async (options: any) => options; + + // Standard usage + result = await client.delete("Patient/2"); + expect(result).to.equal({ + url : "Patient/2", + method: "DELETE" + }); + + // Verify that method and url cannot be overridden + result = await client.delete("Patient/2", { + // @ts-ignore + url : "x", + method: "y", + other : 3 + }); + expect(result).to.equal({ + url : "Patient/2", + method: "DELETE", + other : 3 + }); + + // Verify that abort signal is passed through + result = await client.delete("Patient/2", { + // @ts-ignore + signal: "whatever" + }); + expect(result).to.equal({ + url : "Patient/2", + method: "DELETE", + signal: "whatever" + }); + }); + }); + + describe("patch", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + let result: any; + + // Standard usage + mockServer.mock({ + status: 200, + body: { result: "success" }, + headers: { "content-type": "application/json" } + }); + + result = await client.patch("Patient/2", [{ op: "remove", path: "/x" }], { includeResponse: true }); + expect(result.body).to.equal({ result: "success" }); + expect(result.response.status).to.equal(200); + + // Modify the request method to return the request options + client.request = async (options: any) => options; + + // Standard usage + result = await client.patch("Patient/2", [{ op: "remove", path: "/x" }]); + expect(result).to.equal({ + url : "Patient/2", + method: "PATCH", + body: '[{"op":"remove","path":"/x"}]', + headers: { + "prefer": "return=presentation", + "content-type": "application/json-patch+json; charset=UTF-8" + } + }); + + // Test what can be overridden + result = await client.patch("Patient/2", [{ op: "remove", path: "/x" }], { + // @ts-ignore + url : "x", + method: "y", + other : 3, + headers: { + prefer: "test", + z: "22" + } + }); + expect(result).to.equal({ + url : "Patient/2", + method: "PATCH", + body: '[{"op":"remove","path":"/x"}]', + other: 3, + headers: { + "prefer": "test", + "content-type": "application/json-patch+json; charset=UTF-8", + "z": "22" + } + }); + + // Verify that abort signal is passed through + result = await client.patch("Patient/2", [{ op: "remove", path: "/x" }], { + // @ts-ignore + signal: "whatever" + }); + expect(result).to.include({ signal: "whatever" }); + + // Validations ---------------------------------------------------- + + // @ts-ignore + expect(client.patch("x", null)).to.reject("The JSON patch must be an array"); + + expect(client.patch("x", [])).to.reject("The JSON patch array should not be empty"); + + // @ts-ignore + expect(client.patch("x", [{}])).to.reject(/Each patch operation must have an "op" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "x" } + ])).to.reject(/Each patch operation must have an "op" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "add" } + ])).to.reject(/Missing "path" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "add", path: "/x" } + ])).to.reject(/Missing "value" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "replace", path: "/x" } + ])).to.reject(/Missing "value" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "test", path: "/x", value: 4, custom: true } + ])).to.reject(/Contains unknown properties/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "move", path: "/x" } + ])).to.reject(/Requires a string "from" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "copy", path: "/x" } + ])).to.reject(/Requires a string "from" property/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "move", path: "/x", from: "/y", custom: true } + ])).to.reject(/Contains unknown properties/); + + expect(client.patch("x", [ + // @ts-ignore + { op: "remove", path: "/x", custom: true } + ])).to.reject(/Contains unknown properties/); + }); + }); + + describe("getFhirVersion", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { fhirVersion: "1.2.3" } + }); + + const version = await client.getFhirVersion(); + expect(version).to.equal("1.2.3"); + }); + }); + + describe("getFhirRelease", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { fhirVersion: "3.3.0" } + }); + + const version = await client.getFhirRelease(); + expect(version).to.equal(4); + }); + + describe("returns 0 for unknown versions", () => { + crossPlatformTest(async (env) => { + const client = new Client(env, mockUrl); + + // Mock the conformance statement + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { fhirVersion: "8.3.0" } + }); + + const version = await client.getFhirRelease(); + expect(version).to.equal(0); + }); + }); + }); +}); diff --git a/test/HttpError.test.ts b/test/HttpError.test.ts new file mode 100644 index 00000000..25214853 --- /dev/null +++ b/test/HttpError.test.ts @@ -0,0 +1,112 @@ +import { expect } from "@hapi/code"; +import * as Lab from "@hapi/lab"; +import HttpError from "../src/HttpError"; +import {Response} from "cross-fetch"; + +export const lab = Lab.script(); +const { it, describe } = lab; + +describe("HttpError", () => { + it ("create from text response", async () => { + const resp = new Response("Test error", { + status: 400, + statusText: "Bad Request (test)", + headers: { + "content-type": "text/plain" + } + }); + const error = new HttpError(resp); + expect(error.name).to.equal("HttpError"); + expect(error.message).to.equal("400 Bad Request (test)\nURL: "); + expect(error.statusCode).to.equal(400); + expect(error.status).to.equal(400); + expect(error.statusText).to.equal("Bad Request (test)"); + await error.parse(); + expect(error.message).to.equal("400 Bad Request (test)\nURL: \n\nTest error"); + expect(JSON.stringify(error)).to.equal(JSON.stringify({ + name : "HttpError", + statusCode: 400, + status : 400, + statusText: "Bad Request (test)", + message : "400 Bad Request (test)\nURL: \n\nTest error" + })); + }); + + it ("parse ignores unknown mime types", async () => { + const resp = new Response("Test error", { + status: 400, + statusText: "Bad Request (test)", + headers: { + "content-type": "application/pdf" + } + }); + const error = new HttpError(resp); + expect(error.message).to.equal("400 Bad Request (test)\nURL: "); + await error.parse(); + expect(error.message).to.equal("400 Bad Request (test)\nURL: "); + }); + + it ("create from json response", async () => { + const resp = new Response('{"x":"y"}', { + status: 400, + statusText: "Bad Request (test)", + headers: { + "content-type": "application/json" + } + }); + const error = new HttpError(resp); + expect(error.name).to.equal("HttpError"); + expect(error.message).to.equal("400 Bad Request (test)\nURL: "); + expect(error.statusCode).to.equal(400); + expect(error.status).to.equal(400); + expect(error.statusText).to.equal("Bad Request (test)"); + await error.parse(); + expect(error.message).to.equal('400 Bad Request (test)\nURL: \n\n{\n "x": "y"\n}'); + }); + + it ("create from json response having error property", async () => { + const resp = new Response('{"error":"x"}', { + status: 400, + statusText: "Bad Request (test)", + headers: { + "content-type": "application/json" + } + }); + const error = new HttpError(resp); + expect(error.name).to.equal("HttpError"); + expect(error.message).to.equal("400 Bad Request (test)\nURL: "); + expect(error.statusCode).to.equal(400); + expect(error.status).to.equal(400); + expect(error.statusText).to.equal("Bad Request (test)"); + await error.parse(); + expect(error.message).to.equal( + '400 Bad Request (test)\nURL: \nx' + ); + }); + + it ("create from json response having error and error_description properties", async () => { + const resp = new Response('{"error":"x","error_description":"y"}', { + status: 400, + statusText: "Bad Request (test)", + headers: { + "content-type": "application/json" + } + }); + const error = new HttpError(resp); + expect(error.name).to.equal("HttpError"); + expect(error.message).to.equal("400 Bad Request (test)\nURL: "); + expect(error.statusCode).to.equal(400); + expect(error.status).to.equal(400); + expect(error.statusText).to.equal("Bad Request (test)"); + await error.parse(); + expect(error.message).to.equal( + '400 Bad Request (test)\nURL: \nx: y' + ); + }); + + it ("parse can be called twice", async () => { + const error = new HttpError(new Response()); + await error.parse(); + await error.parse(); + }); +}); diff --git a/test/browser.test.ts b/test/browser.test.ts new file mode 100644 index 00000000..3cbad5a7 --- /dev/null +++ b/test/browser.test.ts @@ -0,0 +1,1901 @@ +// import "../src/types"; + +require("./mocks/mockDebug"); +import { URL } from "url"; +import { expect } from "@hapi/code"; +import * as Lab from "@hapi/lab"; +import * as smart from "../src/smart"; +import * as lib from "../src/lib"; + +// mocks +import BrowserEnv from "./mocks/BrowserEnvironment"; +import MockWindow from "./mocks/Window"; +import MockScreen from "./mocks/Screen"; +import mockServer from "./mocks/mockServer"; +import { fhirclient } from "../src/types"; + +export const lab = Lab.script(); +const { + it, + describe, + before, + after, + beforeEach, + afterEach +} = lab; + +declare var window: MockWindow; + + + + + +// ----------------------------------------------------------------------------- +describe("Browser tests", () => { + + let mockDataServer: any, mockUrl: string; + + const mockCodeChallengeMethods:string[] = ['S256']; + + before(() => { + return new Promise((resolve, reject) => { + // @ts-ignore + mockDataServer = mockServer.listen(null, "0.0.0.0", (error: Error) => { + if (error) { + return reject(error); + } + const addr: any = mockDataServer.address(); + mockUrl = `http://127.0.0.1:${addr.port}`; + // console.log(`Mock Data Server listening at ${mockUrl}`); + resolve(void 0); + }); + }); + }); + + after(() => { + if (mockDataServer && mockDataServer.listening) { + return new Promise(resolve => { + mockUrl = ""; + mockDataServer.close((error: Error) => { + if (error) { + console.log("Error shutting down the mock-data server: ", error); + } + // console.log("Mock Data Server CLOSED!"); + resolve(void 0); + }); + }); + } + }); + + beforeEach(() => { + (global as any).window = (global as any).self = new MockWindow(); + (global as any).top = window.top; + (global as any).parent = window.parent; + (global as any).frames = window.frames; + (global as any).screen = new MockScreen(); + (global as any).frames = {}; + (global as any).sessionStorage = self.sessionStorage; + }); + + afterEach(() => { + mockServer.clear(); + delete (global as any).self; + delete (global as any).top; + delete (global as any).parent; + delete (global as any).frames; + delete (global as any).window; + // delete (global as any).fetch; + delete (global as any).screen; + delete (global as any).frames; + delete (global as any).opener; + delete (global as any).sessionStorage; + }); + + + describe ("Complete authorization", () => { + it ("code flow", async () => { + + const env = new BrowserEnv(); + const Storage = env.getStorage(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id" + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + // Get the state parameter from the URL + const state = redirect.searchParams.get("state"); + + expect(await Storage.get(state), "must have set a state at " + state).to.exist(); + + // mock our access token response + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY", + state + } + }); + + env.redirect("http://localhost/?code=123&state=" + state); + const client = await smart.ready(env); + + // make sure tha browser history was replaced + expect(window.history._location).to.equal("http://localhost/"); + + expect(await Storage.get(smart.KEY), `must have set a state at ${smart.KEY}`).to.exist(); + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + }); + + it ("code flow with PKCE advertised", async () => { + + const env = new BrowserEnv(); + const Storage = env.getStorage(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: mockCodeChallengeMethods + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + // Get the state parameter from the URL + const state = redirect.searchParams.get("state"); + + expect(await Storage.get(state), "must have set a state at " + state).to.exist(); + + // mock our access token response + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY", + state + } + }); + + env.redirect("http://localhost/?code=123&state=" + state); + const client = await smart.ready(env); + + // make sure tha browser history was replaced + expect(window.history._location).to.equal("http://localhost/"); + + expect(await Storage.get(smart.KEY), `must have set a state at ${smart.KEY}`).to.exist(); + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + }); + + it ("code flow with fullSessionStorageSupport = false", async () => { + + const env = new BrowserEnv({ + fullSessionStorageSupport: false, + replaceBrowserHistory: false + }); + const Storage = env.getStorage(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id" + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + // Get the state parameter from the URL + const key = redirect.searchParams.get("state"); // console.log(redirect); + + // console.log(redirect, state, storage.get(state)); + expect(await Storage.get(key), "must have set a state at " + key).to.exist(); + + // mock our access token response + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + env.redirect("http://localhost/?code=123&state=" + key); + const client = await smart.ready(env); + + // make sure tha browser history was not replaced + expect(window.history._location).to.equal(""); + + expect( + await Storage.get(smart.KEY), + `without fullSessionStorageSupport a '${smart.KEY}' key should not be used` + ).to.not.exist(); + expect(await Storage.get(key), "must have set a state at " + key).to.exist(); + expect(await Storage.get(key)).to.include("tokenResponse"); + expect((await Storage.get(key)).tokenResponse).to.be.object(); + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + }); + + it ("refresh an authorized page", async () => { + + const env = new BrowserEnv(); + const Storage = env.getStorage(); + const key = "whatever-random-key"; + + await Storage.set(smart.KEY, key); + await Storage.set(key, { + clientId : "my_web_app", + scope : "whatever", + redirectUri : "whatever", + serverUrl : mockUrl, + key, + tokenResponse: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + env.redirect("http://localhost/"); + const client = await smart.ready(env); + + expect(client.patient.id).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.encounter.id).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.user.id).to.equal("smart-Practitioner-71482713"); + expect(client.user.resourceType).to.equal("Practitioner"); + }); + + it ("refresh an authorized page with fullSessionStorageSupport = false", async () => { + + window.FHIR.oauth2.settings.fullSessionStorageSupport = false; + + const env = new BrowserEnv(); + const Storage = env.getStorage(); + const key = "whatever-random-key"; + + await Storage.set(key, { + clientId : "my_web_app", + scope : "whatever", + redirectUri: "whatever", + serverUrl : mockUrl, + key, + tokenResponse: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + env.redirect("http://localhost/?state=" + key); + const client = await smart.ready(env); + + expect(client.patient.id).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.encounter.id).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.user.id).to.equal("smart-Practitioner-71482713"); + expect(client.user.resourceType).to.equal("Practitioner"); + }); + + it ("can bypass oauth by passing `fhirServiceUrl`", async () => { + const env = new BrowserEnv(); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + noRedirect: true + }); + + expect(url).to.match(/http:\/\/localhost\/\?state=./); + }); + + it ("appends 'launch' to the scopes if needed", async () => { + const env = new BrowserEnv(); + const Storage = env.getStorage(); + const redirect = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + scope: "x", + launch: "123", + noRedirect: true + }); + const state = (new URL(redirect as string)).searchParams.get("state"); + expect((await Storage.get(state)).scope).to.equal("x launch"); + }); + + it ("can do standalone launch", async () => { + + const env = new BrowserEnv(); + const Storage = env.getStorage(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + // launch: "123", + scope: "my_scope", + client_id: "my_client_id" + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + + // Get the state parameter from the URL + const redirect = env.getUrl(); // console.log(redirect, storage); + const state = redirect.searchParams.get("state"); + + expect(await Storage.get(state), "must have set a state at " + state).to.exist(); + + // mock our access token response + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY", + state + } + }); + + env.redirect("http://localhost/?code=123&state=" + state); + const client = await smart.ready(env); + + expect(await Storage.get(smart.KEY), `must have set a state at ${smart.KEY}`).to.exist(); + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + }); + }); + + describe("smart", () => { + describe('PKCE', () => { + it ("use when supported and required", async () => { + const env = new BrowserEnv(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: mockCodeChallengeMethods + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + pkceMode: 'required', + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + expect(redirect.searchParams.has('code_challenge')).to.equal(true); + expect(redirect.searchParams.has('code_challenge_method')).to.equal(true); + expect(redirect.searchParams.get('code_challenge_method')).to.equal(mockCodeChallengeMethods[0]); + }); + + it ("fail when not supported and required", async () => { + const env = new BrowserEnv(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: [] + } + }); + + await expect( + smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + pkceMode: 'required', + })) + .to.reject(Error, /PKCE/); + }); + + it ("use when supported and optional", async () => { + const env = new BrowserEnv(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: mockCodeChallengeMethods + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + pkceMode: 'ifSupported', + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + expect(redirect.searchParams.has('code_challenge')).to.equal(true); + expect(redirect.searchParams.has('code_challenge_method')).to.equal(true); + expect(redirect.searchParams.get('code_challenge_method')).to.equal(mockCodeChallengeMethods[0]); + }); + + it ("do not use when not supported and optional", async () => { + const env = new BrowserEnv(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: [] + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + pkceMode: 'ifSupported', + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + expect(redirect.searchParams.has('code_challenge')).to.equal(false); + expect(redirect.searchParams.has('code_challenge_method')).to.equal(false); + }); + + it ("do not use when supported and disabled", async () => { + const env = new BrowserEnv(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: mockCodeChallengeMethods + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + pkceMode: 'disabled', + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + expect(redirect.searchParams.has('code_challenge')).to.equal(false); + expect(redirect.searchParams.has('code_challenge_method')).to.equal(false); + }); + + it ("do not use when not supported and disabled", async () => { + const env = new BrowserEnv(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl, + code_challenge_methods_supported: [] + } + }); + + // Call our launch code. + await smart.authorize(env, { + iss: mockUrl, + launch: "123", + scope: "my_scope", + client_id: "my_client_id", + pkceMode: 'ifSupported', + }); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const redirect = env.getUrl(); + + expect(redirect.searchParams.has('code_challenge')).to.equal(false); + expect(redirect.searchParams.has('code_challenge_method')).to.equal(false); + }); + }); + + describe("fetchWellKnownJson", () => { + it("works", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "fetchWellKnownJson" + } + }); + const conformance = await smart.fetchWellKnownJson(mockUrl); + // @ts-ignore + expect(conformance).to.equal({resourceType: "fetchWellKnownJson"}); + }); + + it("rejects on error", async () => { + mockServer.mock({ + status: 404, + body: "Not Found" + }); + await expect(smart.fetchWellKnownJson(mockUrl)).to.reject(Error, /Not Found/); + }); + }); + + describe("getSecurityExtensions", () => { + it("works with .well-known/smart-configuration", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + registration_endpoint : "https://my-register-uri", + authorization_endpoint: "https://my-authorize-uri", + token_endpoint : "https://my-token-uri" + } + }); + + // mockServer.mock({ + // headers: { "content-type": "application/json" }, + // status: 200, + // body: { + // registration_endpoint : "https://my-register-uri", + // authorization_endpoint: "https://my-authorize-uri", + // token_endpoint : "https://my-token-uri" + // } + // }); + + const result = await smart.getSecurityExtensions(mockUrl); + expect(result).to.equal({ + registrationUri : "https://my-register-uri", + authorizeUri : "https://my-authorize-uri", + tokenUri : "https://my-token-uri", + codeChallengeMethods: [] + }); + }); + + it("works with .well-known/smart-configuration - PKCE advertised", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + registration_endpoint : "https://my-register-uri", + authorization_endpoint : "https://my-authorize-uri", + token_endpoint : "https://my-token-uri", + code_challenge_methods_supported: mockCodeChallengeMethods, + } + }); + + const result = await smart.getSecurityExtensions(mockUrl); + expect(result).to.equal({ + registrationUri : "https://my-register-uri", + authorizeUri : "https://my-authorize-uri", + tokenUri : "https://my-token-uri", + codeChallengeMethods: ['S256'], + }); + }); + + it("fails back to conformance if .well-known/smart-configuration is bad", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status : 200, + body : { + registration_endpoint: "whatever" + } + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + { + url: "authorize", + valueUri: "https://my-authorize-uri" + }, + { + url: "token", + valueUri: "https://my-token-uri" + }, + { + url: "register", + valueUri: "https://my-registration-uri" + } + ] + } + ] + } + } + ] + } + }); + + const result = await smart.getSecurityExtensions(mockUrl); + expect(result).to.equal({ + registrationUri : "https://my-registration-uri", + authorizeUri : "https://my-authorize-uri", + tokenUri : "https://my-token-uri", + codeChallengeMethods: [], + }); + }); + + it("works with conformance statement", async () => { + mockServer.mock({ + status: 200, + headers: { "content-type": "application/json" }, + body: { + authorization_endpoint: "whatever" + } + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + { + url: "authorize", + valueUri: "https://my-authorize-uri" + }, + { + url: "token", + valueUri: "https://my-token-uri" + } + ] + } + ] + } + } + ] + } + }); + + const result = await smart.getSecurityExtensions(mockUrl); + expect(result).to.equal({ + registrationUri : "", + authorizeUri : "https://my-authorize-uri", + tokenUri : "https://my-token-uri", + codeChallengeMethods: [], + }); + }); + + it("returns empty endpoints for open servers", async () => { + mockServer.mock({ + status: 404, + body: "Not Found" + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: {rest: [{}]} + }); + + const result = await smart.getSecurityExtensions(mockUrl); + expect(result).to.equal({ + registrationUri : "", + authorizeUri : "", + tokenUri : "", + codeChallengeMethods: [], + }); + }); + + it("returns empty endpoints for missing conformance", async () => { + mockServer.mock({ + status: 404, + body: "Not Found" + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + // body: {} + }); + + const result = await smart.getSecurityExtensions(mockUrl); + expect(result).to.equal({ + registrationUri : "", + authorizeUri : "", + tokenUri : "", + codeChallengeMethods: [], + }); + }); + + it("rejects on error", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 400, + body: { + authorization_endpoint: "whatever" + } + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 400, + body: {} + }); + await expect(smart.getSecurityExtensions(mockUrl)).to.reject(); + }); + }); + + describe("authorize", () => { + + it ("throws if no serverUrl", async () => { + await expect(smart.authorize(new BrowserEnv(), {})) + .to.reject(Error, /No server url found/); + }); + + it ("accepts encounterId parameter", async () => { + const env = new BrowserEnv(); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + encounterId: "whatever", + noRedirect: true + }); + const state = (new URL(url as string)).searchParams.get("state"); + expect(await env.getStorage().get(state)).to.include({ + tokenResponse: { encounter: "whatever" } + }); + }); + + it ("accepts patientId parameter", async () => { + const env = new BrowserEnv(); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + patientId: "whatever", + noRedirect: true + }); + const state = (new URL(url as string)).searchParams.get("state"); + expect(await env.getStorage().get(state)).to.include({ + tokenResponse: { patient: "whatever" } + }); + }); + + it ("accepts fakeTokenResponse parameter", async () => { + const env = new BrowserEnv(); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + noRedirect: true + }); + const state = (new URL(url as string)).searchParams.get("state"); + expect(await env.getStorage().get(state)).to.include({ + tokenResponse: { a: 1, b: 2 } + }); + }); + + it ("accepts iss parameter from url", async () => { + const env = new BrowserEnv({}); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + env.redirect("http://localhost/?iss=" + mockUrl); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + noRedirect: true + }); + const aud = (new URL(url as string)).searchParams.get("aud"); + expect(aud).to.equal(mockUrl); + }); + + it ("makes early redirect if the server has no authorizeUri", async () => { + const env = new BrowserEnv({}); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 404 + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + // { + // url: "authorize", + // valueUri: "https://my-authorize-uri" + // }, + { + url: "token", + valueUri: "https://my-token-uri" + }, + { + url: "register", + valueUri: "https://my-registration-uri" + } + ] + } + ] + } + } + ] + } + }); + env.redirect("http://localhost/?iss=" + mockUrl); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "x", + noRedirect: true + }); + + expect(url).to.startWith("http://localhost/x?state="); + }); + + it ("works with absolute redirectUri", async () => { + const env = new BrowserEnv(); + const url = await smart.authorize(env, { + fhirServiceUrl: "http://localhost", + redirectUri: "https://test.com", + noRedirect: true + }); + const state = (new URL(url as string)).searchParams.get("state"); + expect(await env.getStorage().get(state)).to.include({ + redirectUri: "https://test.com" + }); + }); + + // multi-config --------------------------------------------------- + it ("requires iss url param in multi mode", () => { + const env = new BrowserEnv({}); + expect(smart.authorize(env, [{noRedirect: true}])).to.reject(/"iss" url parameter is required/); + }); + + it ("throws if no matching config is found", () => { + const env = new BrowserEnv({}); + env.redirect("http://localhost/?iss=" + mockUrl); + expect(smart.authorize(env, [ + { + // no issMatch + }, + { + // invalid issMatch type + // @ts-ignore + issMatch: 5 + }, + { + issMatch: "b" + } + ])).to.reject(/No configuration found matching the current "iss" parameter/); + }); + + it ("can match using String", async () => { + const env = new BrowserEnv({}); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 404 + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + // { + // url: "authorize", + // valueUri: "https://my-authorize-uri" + // }, + { + url: "token", + valueUri: "https://my-token-uri" + }, + { + url: "register", + valueUri: "https://my-registration-uri" + } + ] + } + ] + } + } + ] + } + }); + env.redirect("http://localhost/?iss=" + mockUrl); + const url = await smart.authorize(env, [ + { + issMatch: "whatever", + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "y", + noRedirect: true + }, + { + issMatch: mockUrl, + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "x", + noRedirect: true + } + ]); + + expect(url).to.startWith("http://localhost/x?state="); + }); + + it ("can match using RegExp", async () => { + const env = new BrowserEnv({}); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 404 + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + // { + // url: "authorize", + // valueUri: "https://my-authorize-uri" + // }, + { + url: "token", + valueUri: "https://my-token-uri" + }, + { + url: "register", + valueUri: "https://my-registration-uri" + } + ] + } + ] + } + } + ] + } + }); + env.redirect("http://localhost/?iss=" + mockUrl); + const url = await smart.authorize(env, [ + { + issMatch: "whatever", + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "y", + noRedirect: true + }, + { + issMatch: /^http\:\/\/127\.0\.0\.1/, + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "x", + noRedirect: true + } + ]); + + expect(url).to.startWith("http://localhost/x?state="); + }); + + it ("can match using Function", async () => { + const env = new BrowserEnv({}); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 404 + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + // { + // url: "authorize", + // valueUri: "https://my-authorize-uri" + // }, + { + url: "token", + valueUri: "https://my-token-uri" + }, + { + url: "register", + valueUri: "https://my-registration-uri" + } + ] + } + ] + } + } + ] + } + }); + env.redirect("http://localhost/?iss=" + mockUrl); + const url = await smart.authorize(env, [ + { + issMatch: (iss) => false, + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "y", + noRedirect: true + }, + { + issMatch: (iss) => iss === mockUrl, + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "x", + noRedirect: true + } + ]); + + expect(url).to.startWith("http://localhost/x?state="); + }); + + it ("can match using fhirServiceUrl", async () => { + const env = new BrowserEnv({}); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 404 + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + rest: [ + { + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + // { + // url: "authorize", + // valueUri: "https://my-authorize-uri" + // }, + { + url: "token", + valueUri: "https://my-token-uri" + }, + { + url: "register", + valueUri: "https://my-registration-uri" + } + ] + } + ] + } + } + ] + } + }); + env.redirect("http://localhost/?fhirServiceUrl=" + mockUrl); + const url = await smart.authorize(env, [ + { + issMatch: (iss) => false, + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "y", + noRedirect: true + }, + { + issMatch: (iss) => iss === mockUrl, + fhirServiceUrl: "http://localhost", + fakeTokenResponse: { a: 1, b: 2 }, + redirectUri: "x", + noRedirect: true + } + ]); + + expect(url).to.startWith("http://localhost/x?state="); + }); + }); + + describe("ready", () => { + + it ("rejects with error and error_description from the url", async () => { + const env = new BrowserEnv(); + env.redirect("http://localhost/?error=test-error"); + await expect(smart.ready(env)) + .to.reject(Error, "test-error"); + env.redirect("http://localhost/?error_description=test-error-description"); + await expect(smart.ready(env)) + .to.reject(Error, "test-error-description"); + env.redirect("http://localhost/?error=test-error&error_description=test-error-description"); + await expect(smart.ready(env)) + .to.reject(Error, "test-error: test-error-description"); + }); + + it ("rejects with missing key", async () => { + const env = new BrowserEnv(); + env.redirect("http://localhost/"); + await expect(smart.ready(env)) + .to.reject(Error, /^No 'state' parameter found/); + }); + + it ("rejects with empty state", async () => { + const env = new BrowserEnv(); + env.redirect("http://localhost/?state=whatever"); + await expect(smart.ready(env)) + .to.reject(Error, /No state found/); + }); + + }); + + describe("buildTokenRequest", () => { + + it ("rejects with missing state.redirectUri", () => { + // @ts-ignore + expect(smart.buildTokenRequest(new BrowserEnv(), { code: "whatever", state: {} })) + .to.reject("Missing state.redirectUri"); + }); + it ("rejects with missing state.tokenUri", () => { + expect(smart.buildTokenRequest(new BrowserEnv(), { + code: "whatever", + // @ts-ignore + state: { + redirectUri: "whatever" + } + })).to.reject("Missing state.tokenUri"); + }); + it ("rejects with missing state.clientId", () => { + expect(smart.buildTokenRequest(new BrowserEnv(), { + code: "whatever", + // @ts-ignore + state: { + redirectUri: "whatever", + tokenUri: "whatever" + } + })).to.reject("Missing state.clientId"); + }); + + it("uses state.codeVerifier", async () => { + const requestOptions = await smart.buildTokenRequest( + new BrowserEnv(), + { + code: "whatever", + state: { + serverUrl: 'whatever', + redirectUri: 'whatever', + tokenUri: 'whatever', + clientId: 'whatever', + codeVerifier: 'whatever', + } + } + ); + expect(requestOptions.body).to.exist(); + expect(requestOptions.body).to.contain('&code_verifier='); + }); + + }); + + describe("init", () => { + it ("works in standalone mode", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + const env = new BrowserEnv(); + + let client = await new Promise((resolve, reject) => { + + env.once("redirect", async () => { + env.redirect("http://localhost/?code=123&state=" + env.getUrl().searchParams.get("state")); + smart.init(env, { + client_id : "my_web_app", + scope : "launch/patient", + iss : mockUrl + }).then(resolve).catch(reject); + }); + + // This first call will NEVER resolve, but it will + // trigger a "redirect" event + smart.init(env, { + client_id : "my_web_app", + scope : "launch/patient", + iss : mockUrl + }).catch(reject); + }); + + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + + // Now rey once again to test the page refresh flow + env.redirect("http://localhost/?state=" + env.getUrl().searchParams.get("state")); + client = await smart.init(env, { + client_id : "my_web_app", + scope : "launch/patient", + iss : mockUrl + }); + + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + }); + + it ("works in EHR mode", async () => { + const key = "my-key"; + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + const env = new BrowserEnv(); + + let client = await new Promise((resolve, reject) => { + env.redirect("http://localhost/?launch=123&state=" + key); + + env.once("redirect", async () => { + env.redirect("http://localhost/?code=123&state=" + env.getUrl().searchParams.get("state")); + smart.init(env, { + client_id : "my_web_app", + scope : "launch/patient", + iss : mockUrl + }).then(resolve).catch(reject); + }); + + // This first call will NEVER resolve, but it will + // trigger a "redirect" event + smart.init(env, { + client_id : "my_web_app", + scope : "launch/patient", + iss : mockUrl + }).catch(reject); + }); + + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + + // Now rey once again to test the page refresh flow + env.redirect("http://localhost/?code=123"); + client = await smart.init(env, { + client_id : "my_web_app", + scope : "launch/patient", + iss : mockUrl + }); + + expect(client.getPatientId()).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.getEncounterId()).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.getUserId()).to.equal("smart-Practitioner-71482713"); + expect(client.getUserType()).to.equal("Practitioner"); + }); + }); + }); + + describe("Targets", () => { + + async function testTarget(targetWindow, options, type?: string) { + + const env = new BrowserEnv(); + const storage = env.getStorage(); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + const locationChangeListener1 = new Promise(resolve => { + targetWindow.location.once("change", () => { + const top = (global as any).top; + (global as any).self = (global as any).window = targetWindow; + if (type == "frame") { + (global as any).parent = top; + } else if (type == "popup") { + (global as any).parent = targetWindow; + (global as any).opener = top; + (global as any).top = targetWindow; + (global as any).window.name = "SMARTAuthPopup"; + } + + smart.ready(new BrowserEnv()); + resolve(); + }); + }); + // const locationChangeListener2 = new Promise(resolve => { + // (self as any).location.once("change", resolve); + // }); + + // Call our launch code. + await smart.authorize(env, { + iss : mockUrl, + launch : "123", + scope : "my_scope", + client_id: "my_client_id", + ...options + }); + // .then(resolve) + // .catch(console.error); + + await locationChangeListener1; + // await locationChangeListener2; + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. All that + // should have happened in the targetWindow. + const redirect = new URL(targetWindow.location.href); + + // Get the state parameter from the URL + const state = redirect.searchParams.get("state"); + + // Verify that the state is set + expect(await storage.get(state), "must have set a state at " + state).to.exist(); + } + + it('target: () => "_top"', async () => { + const top = (global as any).top = (global as any).window.top = new MockWindow(); + await testTarget(top, { target: () => "_top" }); + }); + + it('target: "_top"', async () => { + const top = (global as any).top = (global as any).window.top = new MockWindow(); + await testTarget(top, { target: "_top" }); + }); + + it('target: "_top", completeInTarget: true', async () => { + const top = (global as any).top = (global as any).window.top = new MockWindow(); + await testTarget(top, { target: "_top", completeInTarget: true }); + }); + + it('target: "_parent"', async () => { + const parent = (global as any).parent = (global as any).window.parent = new MockWindow(); + await testTarget(parent, { target: "_parent" }); + }); + + it("target: window", async () => { + await testTarget(window, { target: window }); + }); + + it("target: invalidWindow corrected to _self", async () => { + await testTarget(window, { target: {} }); + }); + + it("target: invalidFunction corrected to _self", async () => { + await testTarget(window, { target: () => NaN }); + }); + + it("target: 'namedFrame'", async () => { + const frame = new MockWindow(); + frame.parent = self; + frame.top = self; + (global as any).frames = { namedFrame: frame }; + await testTarget(frame, { target: "namedFrame" }, "frame"); + }); + + // it("target: 'popup'", async () => { + // const frame = new MockWindow(); + // frame.parent = self; + // frame.top = self; + // (global as any).frames = { namedFrame: frame }; + // await testTarget(frame, { target: "namedFrame" }, "frame"); + // }); + + it("target: 'xyz' corrected to _self", async () => { + await testTarget(window, { target: "xyz" }); + }); + + it("forbidden frame defaults to _self", async () => { + const frame = new MockWindow(); + (global as any).frames = { namedFrame: frame }; + frame.location.readonly = true; + await testTarget(window, { target: "namedFrame" }); + }); + + it("forbidden popup defaults to _self", async () => { + (self as any).once("beforeOpen", e => e.prevent()); + await testTarget(window, { target: "popup" }); + }); + + describe("getTargetWindow", () => { + it ('"_top"', async () => { + expect(await lib.getTargetWindow("_top")).to.equal(top); + }); + it ('() => "_top"', async () => { + expect(await lib.getTargetWindow((() => "_top") as fhirclient.WindowTarget)).to.equal(top); + }); + it ('async () => "_top"', async () => { + expect(await lib.getTargetWindow((async () => "_top") as fhirclient.WindowTarget)).to.equal(top); + }); + + it ('"_self"', async () => { + expect(await lib.getTargetWindow("_self" )).to.equal(self); + }); + it ('() => "_self"', async () => { + expect(await lib.getTargetWindow((() => "_self") as fhirclient.WindowTarget)).to.equal(self); + }); + it ('async () => "_self"', async () => { + expect(await lib.getTargetWindow((async () => "_self") as fhirclient.WindowTarget)).to.equal(self); + }); + + it ('"_parent"', async () => { + expect(await lib.getTargetWindow("_parent" )).to.equal(parent); + }); + it ('() => "_parent"', async () => { + expect(await lib.getTargetWindow((() => "_parent") as fhirclient.WindowTarget)).to.equal(parent); + }); + it ('async () => "_parent"', async () => { + expect(await lib.getTargetWindow((async () => "_parent") as fhirclient.WindowTarget)).to.equal(parent); + }); + + + it ('"_blank"', async () => { + await lib.getTargetWindow("_blank" ); + }); + it ('() => "_blank"', async () => { + await lib.getTargetWindow((() => "_blank") as fhirclient.WindowTarget); + }); + it ('async () => "_blank"', async () => { + await lib.getTargetWindow((async () => "_blank") as fhirclient.WindowTarget); + }); + + it ('blocked "_blank" fails back to "_self"', async () => { + (self as any).once("beforeOpen", e => e.prevent()); + expect(await lib.getTargetWindow("_blank")).to.equal(self); + }); + it ('blocked () => "_blank" fails back to "_self"', async () => { + (self as any).once("beforeOpen", e => e.prevent()); + expect(await lib.getTargetWindow((() => "_blank") as fhirclient.WindowTarget)).to.equal(self); + }); + it ('blocked async () => "_blank" fails back to "_self"', async () => { + (self as any).once("beforeOpen", e => e.prevent()); + expect(await lib.getTargetWindow((async () => "_blank") as fhirclient.WindowTarget)).to.equal(self); + }); + + it ('"popup"', async () => { + await lib.getTargetWindow("popup" ); + }); + it ('() => "popup"', async () => { + await lib.getTargetWindow((() => "popup") as fhirclient.WindowTarget); + }); + it ('async () => "popup"', async () => { + await lib.getTargetWindow((async () => "popup") as fhirclient.WindowTarget); + }); + + it ('blocked "popup" fails back to "_self"', async () => { + (self as any).once("beforeOpen", e => e.prevent()); + expect(await lib.getTargetWindow("popup")).to.equal(self); + }); + it ('blocked () => "popup" fails back to "_self"', async () => { + (self as any).once("beforeOpen", e => e.prevent()); + expect(await lib.getTargetWindow((() => "popup") as fhirclient.WindowTarget)).to.equal(self); + }); + it ('blocked async () => "popup" fails back to "_self"', async () => { + (self as any).once("beforeOpen", e => e.prevent()); + expect(await lib.getTargetWindow((async () => "popup") as fhirclient.WindowTarget)).to.equal(self); + }); + + it ("accepts frame by name", async () => { + const dummy = {} as Window; + (global as any).frames.dummy = dummy; + expect(await lib.getTargetWindow("dummy")).to.equal(dummy); + }); + + it ('unknown frame name fails back to "_self"', async () => { + expect(await lib.getTargetWindow("whatever")).to.equal(self); + }); + + it ('unknown frame index fails back to "_self"', async () => { + expect(await lib.getTargetWindow(0)).to.equal(self); + }); + + it ("accepts window references", async () => { + const dummy = {} as Window; + expect(await lib.getTargetWindow(dummy)).to.equal(dummy); + }); + + // it ('"popup"', async () => { + // const popup = await lib.loadUrl("x", { target: "popup" }); + // expect(popup.location.href).to.equal("x"); + // }); + + // it ('forbidden "popup" defaults to _self', async () => { + // (self as any).once("beforeOpen", e => e.prevent()); + // const popup = await lib.loadUrl("x", { target: "popup" }); + // expect(self.location.href).to.equal("x"); + // }); + }); + + describe("isInFrame", () => { + it ("returns false by default", () => { + expect(smart.isInFrame()).to.equal(false); + }); + it ("returns true in frames by default", () => { + (global as any).top = (global as any).window.top = new MockWindow(); + (global as any).parent = (global as any).window.parent = top; + expect(smart.isInFrame()).to.equal(true); + }); + }); + + describe("isInPopUp", () => { + it ("returns false by default", () => { + expect(smart.isInPopUp()).to.equal(false); + }); + it ("returns false if self !== top", () => { + (global as any).top = new MockWindow(); + expect(smart.isInPopUp()).to.equal(false); + }); + it ("returns false if !opener", () => { + (global as any).opener = null; + expect(smart.isInPopUp()).to.equal(false); + }); + it ("returns false if opener === self", () => { + (global as any).opener = self; + expect(smart.isInPopUp()).to.equal(false); + }); + it ("returns false if !window.name", () => { + (global as any).window.name = ""; + expect(smart.isInPopUp()).to.equal(false); + }); + it ("returns true in popups", () => { + (global as any).opener = new MockWindow(); + (global as any).window.name = "whatever"; + expect(smart.isInPopUp()).to.equal(true); + }); + // it ("returns true top or parent are not accessible", () => { + // const self = new MockWindow(); + // const win = { + // self, + // top: self, + // // get parent() { + // // throw new Error("Not accessible"); + // // } + // }; + // // (global as any).top = new MockWindow(); + // Object.assign(global as any, win); + // Object.defineProperty(global, "parent", { + // get() { + // throw new Error("Not accessible"); + // } + // }); + // expect(smart.isInFrame()).to.equal(true); + // }); + }); + + it ("authorize in popup returns control to opener", (next) => { + const opener = new MockWindow("http://localhost?state=TEST"); + opener.location.once("change", () => next()); + (global as any).opener = opener; + + // pretend that we are in a popup + const popup = new MockWindow("http://localhost?state=TEST", "SMARTAuthPopup"); + (global as any).parent = popup; + (global as any).top = (global as any).self = popup; + // (global as any).self = popup; + (global as any).window = popup; + (global as any).sessionStorage = popup.sessionStorage; + popup.sessionStorage.setItem("SMART_KEY", '"TEST"'); + popup.sessionStorage.setItem("TEST", JSON.stringify({})); + + smart.ready(new BrowserEnv()); + }); + + it ("authorize in frame returns control to parent", (next) => { + const parent = new MockWindow("http://localhost?state=TEST"); + parent.location.once("change", () => next()); + (global as any).parent = parent; + (global as any).top = top; + + // pretend that we are in a popup + const frame = new MockWindow("http://localhost?state=TEST"); + (global as any).self = frame; + (global as any).window = frame; + (global as any).sessionStorage = frame.sessionStorage; + sessionStorage.setItem("SMART_KEY", '"TEST"'); + sessionStorage.setItem("TEST", JSON.stringify({})); + + smart.ready(new BrowserEnv()); + }); + + it ("authorize in frame does not return control to parent if 'complete' is true", async () => { + const parent = new MockWindow("http://localhost"); + // parent.location.once("change", () => next()); + (global as any).parent = parent; + (global as any).top = parent; + + // pretend that we are in a popup + const frame = new MockWindow("http://localhost?state=TEST&complete=1"); + (global as any).self = frame; + (global as any).window = frame; + (global as any).sessionStorage = frame.sessionStorage; + // frame.sessionStorage.setItem("SMART_KEY", '"TEST"'); + sessionStorage.setItem("TEST", JSON.stringify({ + // completeInTarget: true + })); + + await expect(smart.ready(new BrowserEnv())).to.reject(); + }); + + describe("onMessage", () => { + it ("ignores postMessage if the event type is not 'completeAuth'", () => { + let error = null; + window.location.once("change", () => { + error = new Error("The event should be ignored"); + }); + window.addEventListener("message", smart.onMessage); + window.postMessage({ + type: "not completeAuth", + url: window.location.href + }, window.location.origin); + expect(error).to.equal(null); + }); + + it ("ignores postMessage if the origin is wrong", () => { + let error = null; + window.location.once("change", () => { + error = new Error("The event should be ignored"); + }); + window.addEventListener("message", smart.onMessage); + window.postMessage({ + type: "completeAuth", + url: window.location.href + }, "whatever"); + expect(error).to.equal(null); + }); + + it ("accepts postMessage if the event type is 'completeAuth' and removes itself", () => { + let count = 0; + window.location.once("change", () => count += 1); + window.addEventListener("message", smart.onMessage); + window.postMessage({ + type: "completeAuth", + url: window.location.href + }, window.location.origin); + window.postMessage({ + type: "completeAuth", + url: window.location.href + }, window.location.origin); + expect(count).to.equal(1); + }); + }); + }); + + // describe("BrowserAdapter", () => { + + // it ("base64urlencode a string", () => { + // // @ts-ignore + // const env = new Adapter({}) + // const input = "This is a test" + // expect(env.base64urlencode(input)).to.equal(Buffer.from(input).toString("base64url")) + // }) + + // it ("base64urlencode an Uint8Array", () => { + // // @ts-ignore + // const env = new Adapter({}) + // const input = "This is a test" + // expect(env.base64urlencode(new TextEncoder().encode(input))).to.equal(Buffer.from(input).toString("base64url")) + // }) + + // it ("base64urldecode", () => { + // // @ts-ignore + // const env = new Adapter({}) + // const input = Buffer.from("test").toString("base64url") + // expect(env.base64urldecode(input)).to.equal("test") + // }) + // }) +}); diff --git a/test/browser_security.html b/test/browser_security.html new file mode 100644 index 00000000..9936871c --- /dev/null +++ b/test/browser_security.html @@ -0,0 +1,106 @@ + + + + Request Examples + + +

      + This file will test crypto functionality in the current browser. + Look at the console output for details. +

      + + + + diff --git a/test/fixtures/observation.json b/test/fixtures/observation.json deleted file mode 100644 index b1018dad..00000000 --- a/test/fixtures/observation.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "Observation": { - "text": { - "status": { - "value": "generated" - }, - "div": "
      2004-10-22: 137/85 mmHg
      " - }, - "name": { - "coding": [ - { - "system": { - "value": "http://loinc.org" - }, - "code": { - "value": "55284-4" - }, - "display": { - "value": "Blood pressure systolic and diastolic" - } - } - ] - }, - "appliesDateTime": { - "value": "2004-10-22" - }, - "status": { - "value": "final" - }, - "subject": { - "type": { - "value": "Patient" - }, - "reference": { - "value": "server/fhir/patient/@5227b41ac25e6ac5061d69e1" - } - }, - "component": [ - { - "name": { - "coding": [ - { - "system": { - "value": "http://loinc.org" - }, - "code": { - "value": "8480-6" - }, - "display": { - "value": "Systolic blood pressure" - } - } - ] - }, - "valueQuantity": { - "value": { - "value": "137" - }, - "units": { - "value": "mm[Hg]" - } - } - }, - { - "name": { - "coding": [ - { - "system": { - "value": "http://loinc.org" - }, - "code": { - "value": "8462-4" - }, - "display": { - "value": "Diastolic blood pressure" - } - } - ] - }, - "valueQuantity": { - "value": { - "value": "85" - }, - "units": { - "value": "mm[Hg]" - } - } - } - ] - } -} - diff --git a/test/fixtures/observation.simplified.json b/test/fixtures/observation.simplified.json deleted file mode 100644 index d6841401..00000000 --- a/test/fixtures/observation.simplified.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "text": { - "status": "generated", - "div": "
      2004-10-22: 137/85 mmHg
      " - }, - "name": { - "coding": [ - { - "system": "http://loinc.org", - "code": "55284-4", - "display": "Blood pressure systolic and diastolic" - } - ] - }, - "appliesDateTime": "2004-10-22T00:00:00.000Z", - "status": "final", - "subject": { - "type": "Patient", - "reference": "server/fhir/patient/@5227b41ac25e6ac5061d69e1" - }, - "component": [ - { - "name": { - "coding": [ - { - "system": "http://loinc.org", - "code": "8480-6", - "display": "Systolic blood pressure" - } - ] - }, - "valueQuantity": { - "value": 137, - "units": "mm[Hg]" - } - }, - { - "name": { - "coding": [ - { - "system": "http://loinc.org", - "code": "8462-4", - "display": "Diastolic blood pressure" - } - ] - }, - "valueQuantity": { - "value": 85, - "units": "mm[Hg]" - } - } - ], - "resourceType": "Observation" -} diff --git a/test/fixtures/patient.json b/test/fixtures/patient.json deleted file mode 100644 index 93f6069c..00000000 --- a/test/fixtures/patient.json +++ /dev/null @@ -1 +0,0 @@ -{"resourceType":"Patient","text":{"status":"generated","div":"
      \n \n

      Patient Donald DUCK @ Acme Healthcare, Inc. MR = 654321

      \n \n
      "},"identifier":[{"use":"usual","label":"MRN","system":"urn:oid:0.1.2.3.4.5.6.7","value":"654321"}],"name":[{"use":"official","family":["Donald"],"given":["Duck"]}],"gender":{"coding":[{"system":"http://hl7.org/fhir/v3/AdministrativeGender","code":"M","display":"Male"}]},"photo":[{"contentType":"image/gif","data":"R0lGODlhEwARAPcAAAAAAAAA/+9aAO+1AP/WAP/eAP/eCP/eEP/eGP/nAP/nCP/nEP/nIf/nKf/nUv/nWv/vAP/vCP/vEP/vGP/vIf/vKf/vMf/vOf/vWv/vY//va//vjP/3c//3lP/3nP//tf//vf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAEALAAAAAATABEAAAi+AAMIDDCgYMGBCBMSvMCQ4QCFCQcwDBGCA4cLDyEGECDxAoAQHjxwyKhQAMeGIUOSJJjRpIAGDS5wCDly4AALFlYOgHlBwwOSNydM0AmzwYGjBi8IHWoTgQYORg8QIGDAwAKhESI8HIDgwQaRDI1WXXAhK9MBBzZ8/XDxQoUFZC9IiCBh6wEHGz6IbNuwQoSpWxEgyLCXL8O/gAnylNlW6AUEBRIL7Og3KwQIiCXb9HsZQoIEUzUjNEiaNMKAAAA7"}],"contact":[{"relationship":[{"coding":[{"system":"http://hl7.org/fhir/patient-contact-relationship","code":"owner"}]}],"organization":{"reference":"Organization/1","display":"Walt Disney Corporation"}}],"managingOrganization":{"reference":"Organization/1","display":"ACME Healthcare, Inc"},"link":[{"other":{"reference":"Patient/pat2"},"type":"seealso"}],"active":true} diff --git a/test/fixtures/patient.search.json b/test/fixtures/patient.search.json deleted file mode 100644 index b111ef65..00000000 --- a/test/fixtures/patient.search.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "resourceType": "Bundle", - "title": "FHIR Atom Feed", - "id": "http://localhost/Patient?_format=json&_count=2", - "link": [ - { - "rel": "self", - "href": "http://localhost/Patient?_format=json&_count=2" - }, - { - "rel": "next", - "href": "http://localhost/Patient?_format=json&_count=2&_skip=2" - } - ], - "totalResults": 59, - "updated": "2014-04-28T12:34:19.742-07:00", - "author": [ - { - "name": "groovy.config.atom.author-name", - "uri": "groovy.config.atom.author-uri" - } - ], - "entry": [ - { - "title": "Patient/1032702", - "id": "http://localhost/Patient/1032702", - "updated": "2014-04-28T12:34:19.742-07:00", - "content": { - "resourceType": "Patient", - "text": { - "status": "generated", - "div": "
      \n \n

      Amy V. Shaw

      \n \n
      " - }, - "identifier": [ - { - "use": "usual", - "label": "SMART Hospiptal MRN", - "system": "urn:oid:0.1.2.3.4.5.6.7", - "value": "1032702" - } - ], - "name": [ - { - "use": "official", - "family": [ - "Shaw" - ], - "given": [ - "Amy", - "V." - ] - } - ], - "telecom": [ - { - "system": "phone", - "use": "home" - }, - { - "system": "phone", - "value": "800-782-6765", - "use": "mobile" - }, - { - "system": "email", - "value": "amy.shaw@example.com" - } - ], - "gender": { - "coding": [ - { - "system": "http://hl7.org/fhir/v3/AdministrativeGender", - "code": "F", - "display": "Female" - } - ] - }, - "birthDate": "2007-03-20", - "address": [ - { - "use": "home", - "line": [ - "49 Meadow St" - ], - "city": "Mounds", - "state": "OK", - "zip": "74047", - "country": "USA" - } - ], - "active": true - } - }, - { - "title": "Patient/1081332", - "id": "http://localhost/Patient/1081332", - "updated": "2014-04-28T12:34:19.742-07:00", - "content": { - "resourceType": "Patient", - "text": { - "status": "generated", - "div": "
      \n \n

      Joseph I. Ross

      \n \n
      " - }, - "identifier": [ - { - "use": "usual", - "label": "SMART Hospiptal MRN", - "system": "urn:oid:0.1.2.3.4.5.6.7", - "value": "1081332" - } - ], - "name": [ - { - "use": "official", - "family": [ - "Ross" - ], - "given": [ - "Joseph", - "I." - ] - } - ], - "telecom": [ - { - "system": "phone", - "use": "home" - }, - { - "system": "phone", - "value": "800-960-9294", - "use": "mobile" - }, - { - "system": "email", - "value": "joseph.ross@example.com" - } - ], - "gender": { - "coding": [ - { - "system": "http://hl7.org/fhir/v3/AdministrativeGender", - "code": "M", - "display": "Male" - } - ] - }, - "birthDate": "2003-10-02", - "address": [ - { - "use": "home", - "line": [ - "19 Church StApt 29" - ], - "city": "Tulsa", - "state": "OK", - "zip": "74108", - "country": "USA" - } - ], - "active": true - } - } - ] -} diff --git a/test/fixtures/patient.simplified.json b/test/fixtures/patient.simplified.json deleted file mode 100644 index a1fdc181..00000000 --- a/test/fixtures/patient.simplified.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "text": { - "status": "generated", - "div": "
      \n \n

      Amy E. Clark

      \n \n
      " - }, - "identifier": [ - { - "use": "usual", - "label": "SMART Hospiptal MRN", - "system": "urn:oid:0.1.2.3.4.5.6.7", - "key": "1540505" - } - ], - "name": [ - { - "use": "official", - "family": [ - "Clark" - ], - "given": [ - "Amy", - "E." - ] - } - ], - "telecom": [ - { - "system": "phone", - "value": "800-661-3584", - "use": "home" - }, - { - "system": "phone", - "use": "mobile" - }, - { - "system": "email", - "value": "amy.clark@example.com" - } - ], - "gender": { - "coding": [ - { - "system": "http://hl7.org/fhir/v3/AdministrativeGender", - "code": "F", - "display": "Female" - } - ] - }, - "birthDate": "1964-01-21T00:00:00.000Z", - "address": [ - { - "use": "home", - "line": [ - "77 North St" - ], - "city": "Bixby", - "state": "OK", - "zip": "74008", - "country": "USA" - } - ], - "active": true, - "resourceType": "Patient" -} diff --git a/test/lib.test.ts b/test/lib.test.ts new file mode 100644 index 00000000..d095a365 --- /dev/null +++ b/test/lib.test.ts @@ -0,0 +1,322 @@ +import { expect } from "@hapi/code"; +import * as Lab from "@hapi/lab"; +import { Response } from "cross-fetch"; +import * as lib from "../src/lib"; +import HttpError from "../src/HttpError"; +import mockServer from "./mocks/mockServer"; +import ServerEnv from "./mocks/ServerEnvironment"; +import BrowserEnv from "./mocks/BrowserEnvironment"; +import { fhirclient } from "../src/types"; + +export const lab = Lab.script(); +const { it, describe, beforeEach, afterEach } = lab; + +describe("Lib", () => { + + describe("setPath", () => { + it ("works as expected", () => { + const data = { a: 1, b: [0, { a: 2 }] }; + expect(lib.setPath(data, "b.1.a", 3)).to.equal({ a: 1, b: [0, { a: 3 }] }); + expect(lib.setPath(data, "b.2" , 7)).to.equal({ a: 1, b: [0, { a: 3 }, 7] }); + }); + + it ("does nothing if the first argument is null", () => { + // @ts-ignore + expect(lib.setPath(null, "b.1.a", 3)).to.equal(null); + }); + }); + + describe("getPath", () => { + it ("returns the first arg if no path", () => { + const data = {}; + expect(lib.getPath(data)).to.equal(data); + }); + + it ("returns the first arg for empty path", () => { + const data = {}; + expect(lib.getPath(data, "")).to.equal(data); + }); + + it ("works as expected", () => { + const data = { a: 1, b: [0, { a: 2 }] }; + expect(lib.getPath(data, "b.1.a")).to.equal(2); + expect(lib.getPath(data, "b.4.a")).to.equal(undefined); + }); + + it ("dive into arrays", () => { + const data = { + a: [ + { x: [ { y: 2, z: 3 } ] }, + { x: [ { y: 4, z: 5 } ] } + ] + }; + + const map = { + "a" : [ { x: [ { y: 2, z: 3 } ] }, { x: [ { y: 4, z: 5 } ] } ], + "a." : [ { x: [ { y: 2, z: 3 } ] }, { x: [ { y: 4, z: 5 } ] } ], + "a.." : [ { x: [ { y: 2, z: 3 } ] }, { x: [ { y: 4, z: 5 } ] } ], + "a.length" : 2, + "a.0" : { x: [ { y: 2, z: 3 } ] }, + "a.1" : { x: [ { y: 4, z: 5 } ] }, + "a..x" : [ [ { y: 2, z: 3 } ], [ { y: 4, z: 5 } ] ], // data.a.map(o => o.x), + "a..x.length" : [ 1, 1 ], // data.a.map(o => o.x.length), + "a..x.0" : [ { y: 2, z: 3 }, { y: 4, z: 5 } ], // data.a.map(o => o.x[0]), + "a..x.1" : [ undefined, undefined ], // data.a.map(o => o.x[1]), + "a..x.0.y" : [ 2, 4 ], // data.a.map(o => o.x[0].y), + "a..x.0.z" : [ 3, 5 ], // data.a.map(o => o.x[0].z), + "a..x..y" : [[2], [4]], // data.a.map(o => o.x.map(o => o.y)), + "a..x..z" : [[3], [5]], // data.a.map(o => o.x.map(o => o.z)), + }; + + for (let path in map) { + expect(lib.getPath(data, path)).to.equal(map[path]); + } + }); + }); + + describe("absolute", () => { + it ("returns http, https or urn URI as is", () => { + [ + "http://a/b/c", + "https://a/b/c", + "urn:a:b:c" + ].forEach(uri => { + expect(lib.absolute(uri)).to.equal(uri); + }); + }); + + // it ("if no serverUrl is provided returns URLs mounted to the current domain", () => { + // expect(lib.absolute("/")).to.equal(window.location.href); + // }); + + it ("returns URLs mounted to the given domain", () => { + expect(lib.absolute("/", "http://google.com")).to.equal("http://google.com/"); + expect(lib.absolute("/a/b/c", "http://google.com")).to.equal("http://google.com/a/b/c"); + expect(lib.absolute("a/b/c", "http://google.com")).to.equal("http://google.com/a/b/c"); + }); + + it ("returns site rooted paths if no baseUrl is provided", () => { + expect(lib.absolute("/")).to.equal("/"); + expect(lib.absolute("a/b/c")).to.equal("/a/b/c"); + expect(lib.absolute("./a/b/c")).to.equal("/./a/b/c"); + }); + }); + + describe("randomString", () => { + it ("respects strLength", () => { + expect(lib.randomString( ).length).to.equal(8); + expect(lib.randomString(2).length).to.equal(2); + expect(lib.randomString(9).length).to.equal(9); + }); + + it ("respects charSet", () => { + expect(lib.randomString(8, "abc")).to.match(/^[abc]{8}$/); + expect(lib.randomString(8, "xyz")).to.match(/^[xyz]{8}$/); + expect(lib.randomString(8, "123")).to.match(/^[123]{8}$/); + }); + }); + + describe("getTimeInFuture", () => { + it ("Add X seconds to a supplied date", () => { + const now = new Date(); + const delta = 123; + expect(lib.getTimeInFuture(delta, now)).to.equal(Math.floor(now.getTime() / 1000) + delta); + }) + }); + + describe("getAccessTokenExpiration", () => { + + it ("Using expires_in in the browser", () => { + const now = Math.floor(Date.now() / 1000); + expect(lib.getAccessTokenExpiration({ expires_in: 10 }, new BrowserEnv())).to.equal(now + 10); + }); + + it ("Using expires_in on the server", () => { + const now = Math.floor(Date.now() / 1000); + expect(lib.getAccessTokenExpiration({ expires_in: 10 }, new ServerEnv())).to.equal(now + 10); + }); + + it ("Using token.exp in the browser", () => { + const env = new BrowserEnv(); + const now = Math.floor(Date.now() / 1000); + const access_token = "." + env.btoa(JSON.stringify({ exp: now + 10 })) + "."; + expect(lib.getAccessTokenExpiration({ access_token }, env)).to.equal(now + 10); + }); + + it ("Using token.exp on the server", () => { + const env = new ServerEnv(); + const now = Math.floor(Date.now() / 1000); + const access_token = "." + env.btoa(JSON.stringify({ exp: now + 10 })) + "."; + expect(lib.getAccessTokenExpiration({ access_token }, env)).to.equal(now + 10); + }); + + it ("fails back to 5 min in the browser", () => { + const env = new BrowserEnv(); + const now = Math.floor(Date.now() / 1000); + const access_token = "x"; + expect(lib.getAccessTokenExpiration({ access_token }, env)).to.equal(now + 300); + }); + + it ("fails back to 5 min on the server", () => { + const env = new ServerEnv(); + const now = Math.floor(Date.now() / 1000); + const access_token = "x"; + expect(lib.getAccessTokenExpiration({ access_token }, env)).to.equal(now + 300); + }); + }); + + // describe("btoa", () => { + // it ("works in node", () => { + // expect(lib.btoa("abc")).to.equal("YWJj"); + // }); + + // it ("works in browser", () => { + // // @ts-ignore + // global.window = 1; + // try { + // expect(lib.btoa("abc")).to.equal("YWJj"); + // } catch (ex) { + // throw ex; + // } finally { + // // @ts-ignore + // delete global.window; + // } + // }); + // }); + + describe("Request Functions", () => { + + let mockDataServer: any, mockUrl: string; + + + beforeEach(() => { + return new Promise((resolve, reject) => { + // @ts-ignore + mockDataServer = mockServer.listen(null, "0.0.0.0", (error: Error) => { + if (error) { + return reject(error); + } + const addr: any = mockDataServer.address(); + mockUrl = `http://127.0.0.1:${addr.port}`; + // console.log(`Mock Data Server listening at ${mockUrl}`); + resolve(void 0); + }); + }); + }); + + afterEach(() => { + if (mockDataServer && mockDataServer.listening) { + return new Promise(resolve => { + mockUrl = ""; + mockDataServer.close((error: Error) => { + if (error) { + console.log("Error shutting down the mock-data server: ", error); + } + // console.log("Mock Data Server CLOSED!"); + resolve(void 0); + }); + }); + } + }); + + describe("getAndCache", () => { + it ("returns second hit from cache", async () => { + mockServer.mock({ + headers: { "content-type": "text/plain" }, + status: 200, + body: "abc" + }); + + const result = await lib.getAndCache(mockUrl, {}, false); + expect(result).to.equal("abc"); + + const result2 = await lib.getAndCache(mockUrl, {}, false); + expect(result2).to.equal("abc"); + }); + + it ("can force-load and update the cache", async () => { + mockServer.mock({ + headers: { "content-type": "text/plain" }, + status: 200, + body: "abc" + }); + + const result = await lib.getAndCache(mockUrl, {}, false); + expect(result).to.equal("abc"); + + mockServer.mock({ + headers: { "content-type": "text/plain" }, + status: 200, + body: "123" + }); + + const result2 = await lib.getAndCache(mockUrl, {}, false); + expect(result2).to.equal("abc"); + + const result3 = await lib.getAndCache(mockUrl, {}, true); + expect(result3).to.equal("123"); + }); + }); + + describe("fetchConformanceStatement", () => { + + it ("rejects bad baseUrl values", async () => { + await expect(lib.fetchConformanceStatement("")).to.reject(); + // @ts-ignore + await expect(lib.fetchConformanceStatement(null)).to.reject(); + await expect(lib.fetchConformanceStatement("whatever")).to.reject(); + }); + + it("works", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + resourceType: "Conformance" + } + }); + const conformance = await lib.fetchConformanceStatement(mockUrl); + // @ts-ignore + expect(conformance).to.equal({resourceType: "Conformance"}); + }); + + it("rejects on error", async () => { + mockServer.mock({ + status: 404, + body: "Not Found" + }); + await expect(lib.fetchConformanceStatement(mockUrl)).to.reject(Error, /Not Found/); + }); + }); + + describe("request", () => { + + it ("follows the location header if the server replies with 201", async () => { + mockServer.mock({ + headers: { "location": mockUrl }, + status : 201, + body : null + }); + mockServer.mock({ + headers: { "content-type": "application/json" }, + status : 200, + body : { result: "success" } + }); + const response = await lib.request(mockUrl); + expect(response).to.equal({ result: "success" }); + }); + + it ("respects the includeResponse option", async () => { + mockServer.mock({ + headers: { "content-type": "application/json" }, + status : 200, + body : { result: "success" } + }); + + const result = await lib.request(mockUrl, { includeResponse: true }); + expect(result.body).to.equal({ result: "success" }); + expect(result.response.headers.get("content-type")).to.startWith("application/json"); + }); + }); + }); +}); diff --git a/test/mocha.opts b/test/mocha.opts deleted file mode 100644 index dfc2e1e6..00000000 --- a/test/mocha.opts +++ /dev/null @@ -1,3 +0,0 @@ ---require should ---require sinon - diff --git a/test/mocks/BrowserEnvironment.ts b/test/mocks/BrowserEnvironment.ts new file mode 100644 index 00000000..1d79b2e2 --- /dev/null +++ b/test/mocks/BrowserEnvironment.ts @@ -0,0 +1,85 @@ +/* global fhir */ +const EventEmitter = require("events"); +import BrowserStorage from "../../src/storage/BrowserStorage"; +import { fhirclient } from "../../src/types"; +import { AbortController } from "abortcontroller-polyfill/dist/cjs-ponyfill"; +import * as security from "../../src/security/server" +import { base64url } from "jose" + + +export default class BrowserEnvironment extends EventEmitter implements fhirclient.Adapter +{ + options: any; + + security = security; + + constructor(options = {}) + { + super(); + this.options = { + replaceBrowserHistory: true, + fullSessionStorageSupport: true, + refreshTokenWithCredentials: "same-origin", + ...options + }; + } + + get fhir() + { + return null; + } + + getUrl() + { + return new URL(window.location.href); + } + + redirect(to: string) + { + window.location.href = to; + this.emit("redirect"); + } + + getStorage() + { + if (!this._storage) { + this._storage = new BrowserStorage(); + } + return this._storage; + } + + relative(url: string) + { + return new URL(url, window.location.href).href; + } + + getSmartApi(): any + { + return false; + } + + btoa(str: string): string + { + return Buffer.from(str).toString("base64"); + } + + atob(str: string): string + { + return Buffer.from(str, "base64").toString("ascii"); + } + + base64urlencode(input: string | Uint8Array) + { + return base64url.encode(input); + } + + base64urldecode(input: string) + { + return base64url.decode(input).toString(); + } + + getAbortController() + { + return AbortController as any; + } +} diff --git a/test/mocks/BrowserEnvironmentWithFhirJs.ts b/test/mocks/BrowserEnvironmentWithFhirJs.ts new file mode 100644 index 00000000..c3556308 --- /dev/null +++ b/test/mocks/BrowserEnvironmentWithFhirJs.ts @@ -0,0 +1,19 @@ +import BrowserEnvironment from "./BrowserEnvironment"; +import fetch from "cross-fetch"; +import { JSDOM } from "jsdom"; + +const dom = new JSDOM("", { url: "http://localhost" }); +(global as any).window = dom.window; +(global as any).fetch = fetch; + +class BrowserEnvironmentWithFhirJs extends BrowserEnvironment +{ + get fhir() + { + // $lab:coverage:off$ + return require("../../lib/nativeFhir"); + // $lab:coverage:on$ + } +} + +export default BrowserEnvironmentWithFhirJs; diff --git a/test/mocks/HttpRequest.ts b/test/mocks/HttpRequest.ts new file mode 100644 index 00000000..68d96618 --- /dev/null +++ b/test/mocks/HttpRequest.ts @@ -0,0 +1,17 @@ +import MemoryStorage from "./MemoryStorage"; + +export default class HttpRequest +{ + url: URL | string; + headers: { [key: string]: any }; + session: MemoryStorage; + socket: any; + + constructor(url: URL | string) + { + this.url = url; + this.headers = {}; + this.session = new MemoryStorage(); + this.socket = {}; + } +} diff --git a/test/mocks/HttpResponse.ts b/test/mocks/HttpResponse.ts new file mode 100644 index 00000000..089e6885 --- /dev/null +++ b/test/mocks/HttpResponse.ts @@ -0,0 +1,18 @@ +export default class HttpResponse +{ + status: number; + headers: {[key: string]: any}; + constructor() + { + this.status = 0; + this.headers = {}; + } + + writeHead(status: number, headers: {[key: string]: any}) + { + this.status = status; + Object.assign(this.headers, headers); + } + + end(): void {} +} diff --git a/test/mocks/Location.ts b/test/mocks/Location.ts new file mode 100644 index 00000000..19e5e1e6 --- /dev/null +++ b/test/mocks/Location.ts @@ -0,0 +1,52 @@ +import { EventEmitter } from "events"; + +export default class Location extends EventEmitter +{ + private _href: string; + + private _readonly = false; + + constructor(url: string = "http://localhost") { + super(); + this._href = url; + } + + get href() + { + return this._href; + } + + set href(value) + { + if (this._readonly) { + throw new Error("Cannot change window location"); + } + this._href = value; + this.emit("change", value); + } + + get origin() + { + return new URL(this._href).origin; + } + + get readonly() + { + return this._readonly; + } + + set readonly(value: boolean) + { + this._readonly = !!value; + } + + assign(href: string) + { + this.href = href; + } + + toString() + { + return this._href; + } +} diff --git a/test/mocks/MemoryStorage.ts b/test/mocks/MemoryStorage.ts new file mode 100644 index 00000000..214c9b33 --- /dev/null +++ b/test/mocks/MemoryStorage.ts @@ -0,0 +1,27 @@ + +export default class MemoryStorage +{ + private _data: { [key: string]: any }; + + constructor() + { + this._data = {}; + } + + async set(key: string, value: any) { + this._data[key] = value; + return value; + } + + async get(key: string) { + return Object.prototype.hasOwnProperty.call(this._data, key) ? this._data[key] : null; + } + + async unset(key: string) { + if (key in this._data) { + delete this._data[key]; + return true; + } + return false; + } +} diff --git a/test/mocks/Observation-1.json b/test/mocks/Observation-1.json new file mode 100644 index 00000000..a43a7deb --- /dev/null +++ b/test/mocks/Observation-1.json @@ -0,0 +1,84 @@ +{ + "resourceType": "Observation", + "id": "bb86aa11-bbe8-4089-9249-fe7834646ba1", + "meta": { + "versionId": "2", + "lastUpdated": "2018-10-04T16:15:32.248-04:00", + "profile": [ + "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure", + "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation" + ], + "tag": [ + { + "system": "https://smarthealthit.org/tags", + "code": "synthea-7-2017" + } + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/observation-category", + "code": "vital-signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "55284-4", + "display": "Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/d0d0cde0-4b21-42f6-9c1e-bfa447d72059" + }, + "context": { + "reference": "Encounter/ee85481a-ed13-4636-9166-adb15cf6b2af" + }, + "effectiveDateTime": "2017-04-28T06:19:04-04:00", + "issued": "2017-04-28T06:19:04-04:00", + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + } + ], + "text": "Systolic Blood Pressure" + }, + "valueQuantity": { + "value": 110, + "unit": "mmHg", + "system": "http://unitsofmeasure.org/", + "code": "mmHg" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + } + ], + "text": "Diastolic Blood Pressure" + }, + "valueQuantity": { + "value": 80, + "unit": "mmHg", + "system": "http://unitsofmeasure.org/", + "code": "mmHg" + } + } + ] +} \ No newline at end of file diff --git a/test/mocks/Observation-2.json b/test/mocks/Observation-2.json new file mode 100644 index 00000000..bfc32bd5 --- /dev/null +++ b/test/mocks/Observation-2.json @@ -0,0 +1,52 @@ +{ + "resourceType": "Observation", + "id": "6e5c3052-5eac-406a-9f28-9ade70685bbe", + "meta": { + "versionId": "2", + "lastUpdated": "2018-10-04T16:15:33.393-04:00", + "profile": [ + "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation" + ], + "tag": [ + { + "system": "https://smarthealthit.org/tags", + "code": "synthea-7-2017" + } + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/observation-category", + "code": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "6082-2", + "display": "Codfish IgE Ab in Serum" + } + ], + "text": "Codfish IgE Ab in Serum" + }, + "subject": { + "reference": "Patient/d0d0cde0-4b21-42f6-9c1e-bfa447d72059" + }, + "context": { + "reference": "Encounter/ee455dbe-6d18-478b-8173-c6c6bb88affa" + }, + "effectiveDateTime": "2013-03-03T22:01:02-05:00", + "issued": "2013-03-03T22:01:02-05:00", + "valueQuantity": { + "value": 0.19175482211470585, + "unit": "kU/L", + "system": "http://unitsofmeasure.org/", + "code": "kU/L" + } +} \ No newline at end of file diff --git a/test/mocks/Patient-1.json b/test/mocks/Patient-1.json new file mode 100644 index 00000000..795fda32 --- /dev/null +++ b/test/mocks/Patient-1.json @@ -0,0 +1,182 @@ +{ + "resourceType": "Patient", + "id": "d0d0cde0-4b21-42f6-9c1e-bfa447d72059", + "meta": { + "versionId": "153", + "lastUpdated": "2019-06-02T05:00:02.955-04:00", + "tag": [ + { + "system": "https://smarthealthit.org/tags", + "code": "synthea-7-2017" + } + ] + }, + "text": { + "status": "generated", + "div": "
      Generated by Synthea. Version identifier: 1a8d765a5375bf72f3b7a92001940d05a6f21189
      " + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/Race", + "code": "2106-3", + "display": "White" + } + ], + "text": "race" + } + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/Ethnicity", + "code": "2186-5", + "display": "Nonhispanic" + } + ], + "text": "ethnicity" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", + "valueAddress": { + "city": "Canton", + "state": "MA", + "country": "US" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", + "valueString": "Danuta Kuhn" + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", + "valueCode": "M" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired", + "valueBoolean": false + }, + { + "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension", + "valueBoolean": true + }, + { + "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension", + "valueHumanName": { + "text": "Alva Von" + } + }, + { + "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension", + "valueString": "999-89-3304" + } + ], + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "94fb3356-b6d3-4ff1-acf1-17942da1dc0e" + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/identifier-type", + "code": "SB" + } + ] + }, + "system": "http://hl7.org/fhir/sid/us-ssn", + "value": "999893304" + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "MR" + } + ] + }, + "system": "http://hospital.smarthealthit.org", + "value": "94fb3356-b6d3-4ff1-acf1-17942da1dc0e" + } + ], + "name": [ + { + "use": "official", + "family": "Von", + "given": [ + "Shelby" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "440.657.5387 x673", + "use": "home" + }, + { + "system": "email", + "value": "ShelbyVon@mail.com", + "use": "work" + } + ], + "gender": "male", + "birthDate": "2011-12-10", + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 42.79287784803631 + }, + { + "url": "longitude", + "valueDecimal": -71.0313586512991 + } + ] + } + ], + "line": [ + "395 Batz Extension" + ], + "city": "Haverhill", + "state": "MA", + "postalCode": "01833", + "country": "US" + } + ], + "maritalStatus": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/MaritalStatus", + "code": "S" + } + ], + "text": "Never Married" + }, + "multipleBirthBoolean": false, + "communication": [ + { + "language": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/languages", + "code": "en-US", + "display": "English (United States)" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/test/mocks/Patient-2.json b/test/mocks/Patient-2.json new file mode 100644 index 00000000..1f64210e --- /dev/null +++ b/test/mocks/Patient-2.json @@ -0,0 +1,196 @@ +{ + "resourceType": "Patient", + "id": "2e27c71e-30c8-4ceb-8c1c-5641e066c0a4", + "meta": { + "versionId": "4", + "lastUpdated": "2019-06-01T02:40:48.019-04:00", + "profile": [ + "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord" + ], + "tag": [ + { + "system": "https://smarthealthit.org/tags", + "code": "synthea-7-2017" + } + ] + }, + "text": { + "status": "generated", + "div": "
      Generated by Synthea. Version identifier: 1a8d765a5375bf72f3b7a92001940d05a6f21189
      " + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/Race", + "code": "2054-5", + "display": "Black" + } + ], + "text": "race" + } + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/Ethnicity", + "code": "2186-5", + "display": "Nonhispanic" + } + ], + "text": "ethnicity" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", + "valueAddress": { + "city": "Cambridge", + "state": "MA", + "country": "US" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", + "valueString": "Ester Mann" + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", + "valueCode": "F" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired", + "valueBoolean": false + }, + { + "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension", + "valueBoolean": true + }, + { + "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension", + "valueHumanName": { + "text": "Theodore Abbott" + } + }, + { + "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension", + "valueString": "999-34-7518" + } + ], + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "0ba1b4c1-82fb-4f24-87ff-1bc302cfc6ba" + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/identifier-type", + "code": "SB" + } + ] + }, + "system": "http://hl7.org/fhir/sid/us-ssn", + "value": "999347518" + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "DL" + } + ] + }, + "system": "urn:oid:2.16.840.1.113883.4.3.25", + "value": "S99990057" + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "MR" + } + ] + }, + "system": "http://hospital.smarthealthit.org", + "value": "0ba1b4c1-82fb-4f24-87ff-1bc302cfc6ba" + } + ], + "name": [ + { + "use": "official", + "family": "Abbott", + "given": [ + "Buena" + ], + "prefix": [ + "Ms." + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "433.867.2146", + "use": "home" + } + ], + "gender": "female", + "birthDate": "1951-03-09", + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 41.722729537068034 + }, + { + "url": "longitude", + "valueDecimal": -70.95664799913175 + } + ] + } + ], + "line": [ + "45671 Florine Islands", + "Apt. 213" + ], + "city": "New Bedford", + "state": "MA", + "postalCode": "02743", + "country": "US" + } + ], + "maritalStatus": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/MaritalStatus", + "code": "S" + } + ], + "text": "S" + }, + "multipleBirthBoolean": false, + "communication": [ + { + "language": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/languages", + "code": "es", + "display": "Spanish" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/test/mocks/Screen.ts b/test/mocks/Screen.ts new file mode 100644 index 00000000..d16a531a --- /dev/null +++ b/test/mocks/Screen.ts @@ -0,0 +1,4 @@ +export default class Screen { + width = 1980; + height = 1024; +} diff --git a/test/mocks/ServerEnvironment.ts b/test/mocks/ServerEnvironment.ts new file mode 100644 index 00000000..654ef480 --- /dev/null +++ b/test/mocks/ServerEnvironment.ts @@ -0,0 +1,105 @@ +import { AbortController as AbortControllerPonyfill } from "abortcontroller-polyfill/dist/cjs-ponyfill"; +import ServerStorage from "../../src/storage/ServerStorage"; +import { fhirclient } from "../../src/types"; +import * as security from "../../src/security/server" +import { base64url } from "jose" + +const AbortController = global.AbortController || AbortControllerPonyfill + +export default class ServerEnvironment implements fhirclient.Adapter +{ + request: any; + + response: any; + + storage: any; + + options: fhirclient.JsonObject; + + security = security; + + constructor(request?: any, response?: any, storage?: any) + { + this.request = request; + this.response = response; + + if (storage) { + if (typeof storage == "function") { + this.storage = storage(request, response); + } else { + this.storage = storage; + } + } else { + this.storage = new ServerStorage(this.request); + } + + this.options = { + request : this.request, + response: this.response, + storage : this.storage + }; + } + + getUrl() + { + const req = this.request; + const host = req.headers["x-forwarded-host"] || req.headers.host; + const protocol = req.headers["x-forwarded-proto"] || req.protocol || "http"; + // if (!host) { + // const addr = req.socket.address() as AddressInfo; + // host = addr.address.replace("::1", "localhost"); + // if ((addr.port != 80 && req.protocol == "http") || + // (addr.port != 443 && req.protocol == "https")) + // { + // host += ":" + addr.port; + // } + // } + return new URL(req.originalUrl || req.path || req.url, protocol + "://" + host); + } + + redirect(location: string) + { + this.response.writeHead(302, { location }); + this.response.end(); + } + + getStorage() + { + return this.storage; + } + + relative(url: string) + { + return new URL(url, this.getUrl()).href; + } + + btoa(str: string): string + { + return Buffer.from(str).toString("base64"); + } + + atob(str: string): string + { + return Buffer.from(str, "base64").toString("ascii"); + } + + base64urlencode(input: string | Uint8Array) + { + return base64url.encode(input); + } + + base64urldecode(input: string) + { + return base64url.decode(input).toString(); + } + + getAbortController() + { + return AbortController; + } + + getSmartApi(): any + { + return false; + } +} diff --git a/test/mocks/SessionStorage.ts b/test/mocks/SessionStorage.ts new file mode 100644 index 00000000..5dbbaddb --- /dev/null +++ b/test/mocks/SessionStorage.ts @@ -0,0 +1,20 @@ +export default class Storage +{ + getItem(name: string) { + return this[name]; + } + + setItem(name: string, value: any) { + return this[name] = String(value); + } + + removeItem(name: string) { + delete this[name]; + } + + clear() { + for (const key in this) { + delete this[key]; + } + } +} diff --git a/test/mocks/Window.ts b/test/mocks/Window.ts new file mode 100644 index 00000000..4791516a --- /dev/null +++ b/test/mocks/Window.ts @@ -0,0 +1,102 @@ +import MockLocation from "./Location"; +import MockSessionStorage from "./SessionStorage"; +import { EventEmitter } from "events"; + +class History +{ + _location: string; + + constructor() + { + this._location = ""; + } + + replaceState(a: any, b: any, loc: string) + { + this._location = loc; + } +} + +export default class Window extends EventEmitter +{ + FHIR: any; + history: History; + frames: any; + parent: any; + top: any; + self: any; + opener: any; + location: MockLocation; + name: string; + features: string; + sessionStorage: MockSessionStorage; + + constructor(url = "http://localhost", name = "", features = "") + { + super(); + this.name = name; + this.features = features; + this.history = new History(); + this.location = new MockLocation(url); + this.sessionStorage = new MockSessionStorage(); + + this.frames = {}; + this.parent = this; + this.top = this; + this.self = this; + this.opener = null; + + this.FHIR = { + // client: (...args) => new Client(env, ...args), + oauth2: { + settings: { + replaceBrowserHistory: true, + fullSessionStorageSupport: true + }, + // ready: (...args) => smart.ready(env, ...args), + // authorize: (...args) => smart.authorize(env, ...args) + // $lab:coverage:on$ + } + }; + } + + atob(str: string) { + return Buffer.from(str, "base64").toString("ascii"); + } + + addEventListener(event: string, handler: (event?:any) => any) + { + this.on(event, handler); + } + + removeEventListener(event: string, handler: (event?:any) => any) + { + this.removeListener(event, handler); + } + + postMessage(event: any, origin?: string) + { + this.emit("message", { + data: event, + origin + }); + } + + open(url: string, name: string, features: string) + { + let prevented = false; + this.emit("beforeOpen", { + prevent: () => { + prevented = true; + } + }); + if (prevented) { + return null; + } + return new Window(url, name, features); + } + + close() { + /* stub */ + } +} diff --git a/test/mocks/json.png b/test/mocks/json.png new file mode 100755 index 00000000..eafcaedc Binary files /dev/null and b/test/mocks/json.png differ diff --git a/test/mocks/mockDebug.ts b/test/mocks/mockDebug.ts new file mode 100644 index 00000000..63ed7e00 --- /dev/null +++ b/test/mocks/mockDebug.ts @@ -0,0 +1,22 @@ +require("debug"); +require.cache[require.resolve("debug")].exports = createDebug; + +function extend(namespace, delimiter = ":") { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; +} + +export default function createDebug(namespace) { + const debug = (...args) => { + debug._calls.push(args); + }; + Object.assign(debug, { + namespace, + extend, + _calls: [] + }); + createDebug.instances.push(debug); + return debug; +} +createDebug.instances = []; diff --git a/test/mocks/mockServer.ts b/test/mocks/mockServer.ts new file mode 100644 index 00000000..51853edd --- /dev/null +++ b/test/mocks/mockServer.ts @@ -0,0 +1,70 @@ +import { Application, Request, Response } from "express"; +import { AddressInfo } from "net"; + +const express = require("express"); +const cors = require("cors"); + +interface App extends Application { + mock: (mock: any) => number; + clear: () => any; +} + +const app: App = express(); +export default app; +app.use(cors()); + +const mocks: any[] = []; + +app.mock = mock => mocks.push(mock); +app.clear = () => mocks.splice(0, mocks.length); + + +app.all("*", (req, res, next) => { + if (!mocks.length) { + return next(new Error("No mocks defined for this request")); + } + const settings = mocks.shift(); + + setTimeout(() => { + if (settings.handler) { + return settings.handler(req, res, next); + } + + if (settings.headers) { + res.set(settings.headers); + } + + if (settings.status) { + res.status(settings.status); + } + + if (settings.body) { + res.send( + settings.body && typeof settings.body == "object" ? + JSON.stringify(settings.body) : + settings.body + ); + } + + if (settings.file) { + res.sendFile(settings.file, { root: __dirname }); + } else { + res.end(); + } + }, settings._delay || 0); +}); + +app.use((err: Error, _req: Request, res: Response, _next: () => any) => { + res.status(500).send(err.message); +}); + +if (!module.parent) { + const server = app.listen(3456, "0.0.0.0", () => { + + /** + * @type any + */ + const addr: AddressInfo = server.address() as AddressInfo; + console.log(`Server listening at 0.0.0.0:${addr.port}`); + }); +} diff --git a/test/mocks/mockServer2.js b/test/mocks/mockServer2.js new file mode 100644 index 00000000..f679faf4 --- /dev/null +++ b/test/mocks/mockServer2.js @@ -0,0 +1,113 @@ +const express = require("express"); +const cors = require("cors"); + +let router = express.Router(); + +/** + * @param {import("express").RequestHandler} fn + * @returns {import("express").RequestHandler} + */ +function routeWrap(fn) { + return (req, res, next) => { + return Promise.resolve(fn(req, res, next)).catch(e => next(String(e))); + }; +} + +/** @type {any} */ +const app = express(); + +app.use(cors()); + +app.use((req, res, next) => { + res.set({ + "cache-control": "no-cache, no-store, must-revalidate", + "pragma" : "no-cache", + "expires" : "0" + }); + next(); +}) + +/** + * @param {'all'|'get'|'post'|'put'|'delete'|'patch'|'options'|'head' | + * { method: 'all'|'get'|'post'|'put'|'delete'|'patch'|'options'|'head', path: string }} a + * @param {*} mock + * @returns + */ +function mockFunction(a, mock) { + if (typeof a === "string") { + return mockFunction({ method: "get", path: a }, mock) + } + + if (mock.bodyParser) { + router[a.method](a.path, mock.bodyParser) + } + + router[a.method](a.path, (req, res, next) => { + + Object.defineProperties(mock, { + _request: { + configurable: false, + enumerable: true, + writable: false, + value: req + }, + _response: { + configurable: false, + enumerable: true, + writable: false, + value: res + } + }); + Object.freeze(mock); + + setTimeout(() => { + + if (mock.handler) { + return routeWrap(mock.handler)(req, res, next); + } + + if (mock.headers) { + res.set(mock.headers); + } + + if (mock.status) { + res.status(mock.status); + } + + if (mock.body) { + res.send( + mock.body && typeof mock.body == "object" ? + JSON.stringify(mock.body) : + mock.body + ); + } + + if (mock.file) { + res.sendFile(mock.file, { root: __dirname }); + } else { + res.end(); + } + }, mock._delay || 0); + }); + + return mock +} + +app.mock = mockFunction; + +app.clear = () => { + router = express.Router(); +} + +app.use(function (req, res, next) { + router(req, res, next) +}) + +app.use((err, _req, res, _next) => { + console.log("============= Mock Server Error =============") + console.error(err) + console.log("=============================================") + res.status(500).send(String(err)); +}); + +module.exports = app; diff --git a/test/security.test.ts b/test/security.test.ts new file mode 100644 index 00000000..6114e004 --- /dev/null +++ b/test/security.test.ts @@ -0,0 +1,270 @@ +// @ts-ignore These tests cannot run without webcrypto +if (+process.version.replace(/^v/, "").split(".").shift() < 16) return; + +// provide global crypto for older Node versions +if (!global.crypto) { + global.crypto = require('node:crypto').webcrypto; +} + +import { expect } from "@hapi/code"; +import { fhirclient } from "../src/types"; +import * as jose from 'jose'; +import * as Lab from "@hapi/lab"; +import * as serverSecurity from "../src/security/server" +import * as browserSecurity from "../src/security/browser" + +export const lab = Lab.script(); +const { it, describe } = lab; + +// ============================================================================= + +// base64urlencode ------------------------------------------------------------- +// server - (input: string | Uint8Array) => string +// browser - (input: string | Uint8Array) => string + +// base64urldecode ------------------------------------------------------------- +// server - (input: string) => string +// browser - (input: string) => string + +// randomBytes ----------------------------------------------------------------- +// server - (size: number) => Buffer +// browser - (size: number) => Uint8Array + +// digestSha256 ---------------------------------------------------------------- +// server - (payload: string) => Promise +// browser - (payload: string) => Promise + +// generatePKCEChallenge ------------------------------------------------------- +// server - (entropy = 96) => Promise +// browser - (entropy = 96) => Promise + +// importJWK ------------------------------------------------------------------- +// server - (jwk: fhirclient.JWK) => Promise +// browser - (jwk: fhirclient.JWK) => Promise + +// signCompactJws +// server - (alg: SupportedAlg , privateKey: KeyLike , header: any, payload: any) => Promise +// browser - (alg: keyof typeof ALGS, privateKey: CryptoKey, header: any, payload: any) => Promise + +// ============================================================================= + +describe("security", () => { + // describe("base64urlencode", () => { + // it ("from string", () => { + // const input = "This is a test" + // const s = serverSecurity .base64urlencode(input) + // const b = browserSecurity.base64urlencode(input) + // expect(s).to.equal(b) + // }) + + // it ("from Uint8Array", () => { + // const input = "This is a test" + // const s = serverSecurity .base64urlencode(new TextEncoder().encode(input)) + // const b = browserSecurity.base64urlencode(new TextEncoder().encode(input)) + // expect(s).to.equal(b) + // }) + // }) + + // it ("base64urldecode", () => { + // const input = "This is a test" + // const s = serverSecurity .base64urldecode(Buffer.from(input, "utf8").toString("base64url")) + // const b = browserSecurity.base64urldecode(Buffer.from(input, "utf8").toString("base64url")) + // expect(s).to.equal(b) + // expect(s).to.equal(input) + // }) + + it ("randomBytes", () => { + const s = serverSecurity .randomBytes(90) + const b = browserSecurity.randomBytes(90) + expect(s.byteLength).to.equal(b.byteLength) + expect(s.byteLength).to.equal(90) + }) + + it ("digestSha256", async () => { + const input = "This is a test" + const s = await serverSecurity .digestSha256(input) + const b = await browserSecurity.digestSha256(input) + expect(Uint8Array.from(s).toString()).to.equal(b.toString()) + }) + + it ("generatePKCEChallenge", async () => { + const s = await serverSecurity .generatePKCEChallenge(90) + const b = await browserSecurity.generatePKCEChallenge(90) + expect(s).to.contain("codeChallenge") + expect(s).to.contain("codeVerifier") + expect(b).to.contain("codeChallenge") + expect(b).to.contain("codeVerifier") + expect(s.codeChallenge).to.not.equal(b.codeChallenge) + expect(s.codeVerifier).to.not.equal(b.codeVerifier) + }) + + describe("importJWK", () => { + + const ES384_JWK = { + "kty": "EC", + "crv": "P-384", + "d": "WcrTiYk8jbI-Sd1sKNpqGmELWGG08bf_y9SSlnC4cpAl5GRdHHN9gKYlPvMFqiJ5", + "x": "wcE8O55ro6aOuTf5Ty1k_IG4mTcuLiVercHouge1G5Ri-leevhev4uJzlHpi3U8r", + "y": "mLRgz8Giu6XA_AqG8bywqbygShmd8jowflrdx0KQtM5X4s4aqDeCRfcpexykp3aI", + "kid": "afb27c284f2d93959c18fa0320e32060", + "alg": "ES384", + // "key_ops": [ "sign" ] + } + + const RS384_JWK = { + "kty": "RSA", + "alg": "RS384", + "n": "xo_gxYK3pcbczo8tSXLRaFGKBGEjQpk9tXnLEgZ3P0bAG8I26Sw4LSzMw2Mqz4aF0E73AUAkephuKMWSneGO6ZI0uAOaRXYXruHHAG68pK5dT8MZyWnXAwwNYK_QmtnC7Bc7jmqRDn9jANo6iREtkFvuNpyOv-tVk8waZoTG4zf0O4AOXSiRFp4N4_QWwyhzUX8mhjtW5hFZcg6vm_VIcDv1E5rcumbc3ga53c8G6_lNoKfRzh4Mhf8-Mnljszo7x8MdLZ7OEhMAg8DCzx66Vsm4dOassRRIFNUyBsu3fRslByLdUoXdcjMmp0hYqPVKxpukgb-WQEeVWsB-lAjZHw", + "e": "AQAB", + "d": "qEnfTmcYsWdXU7ZjwqGOvCSHnmiZ0uNAOuQL6a4TOU0Em0JC-eMhhaA3t83_xb2VAlU64hN0F3fDvcieGDPIxUvGZMOg6AhL0EvJNyOjvMuPiH-qBlwvAIUhfXXljqjLnP-f2XeWk7wBtAJBpFQr0vMndZ_BGQYjFM3i_krAqmgMPorxRmP5FZIeSyXAyGhuqBZ_N4s_-BitBrAm7MlEexc4FwxQg3hDoZ9gk1DcKnnpYCtZGUj3zhcxXzp2vOu9PHiBJ91GbPp9yOwWie4-bd8Q2XJT0cOfVRLbqsVQkarvS7zHWqlmIRUiJM-Ffhv8rwuWOlnM1mhC0bkDBJb8MQ", + "p": "_blYwdk-rAX1IiKnBUGn72zALfd0gjkVMHI_0-O56zUHTthVhVZ0TS7B0SwtgZU48rnSewf2SiZyfk3jMfgvmt6M6B0HIXbE0OdPhFt_qfo8AbwdZ4cmmRiqk-k5EBqchI2Rd6hy5t6YIR24XHZeArqF7zI-x9p_XSJ41wMn0qc", + "q": "yFfbZDxSpdHP8eSTwUmjB-FPyPYwQHdtSNE3UfqlGF0iCt_TBS2kY8DceI6F67IixOMUEbKqAEZYB_gcU5cbyDW77lEejmdNyT3QQicJYmiAicv3sIXDS5Y4zONah64stqZR3jLAXSdz1NEzIiKN8LC_3LBnleo0MNFspYaqbMk", + "dp": "zdaAW0OTxJtQs9DJD0qko2jmwGPw8XS96__EKHKnclojA6QePX5V_Afi1X-xq18URFbcm1NqS93FJRKrLu7aMBo81lI2Zr-kDJabvBU_DPcll4K1mDfc6HdKa5TZ5mawdBkl2p2eGg6b_MHPv7OHsU8BOXzZ0elBSp2cy1KUDCE", + "dq": "F3vE6bDwdyNq3o3Oi_-XrprIgWPqMARPuRNdCqz4oSx5ixDFaXv6Iv8-WJtMM16EGNQNTC3HI5UbSIPavimeRg-WYc78Z_DP-2DVgouU3AYn2v8fn39ubvPC4LFdsT3HW_mO6x7D0aeIOk_zUHMAdFAjjTjYS4hSac6Cj7yDSZE", + "qi": "S0_CM6gD7_QZYM4LURTT_zpiaG5WDsGhKzw67fBNfpvS79T4Y-C9ICLc9h2SFflMXRry9SiKNDOdBm1MqYXm4R5ExHxr1DYzoBOk6q6ejlo8iImnKt-BhEU-L21NZzKxJXuS3Bu6RPYtclRfbAQP_BwxjtM4kwXnewXhZQrKb1Y", + "kid": "5f75856796f2270469566ceb84c204f6", + // "key_ops": [ "sign" ] + } + + it ("ES384 in the browser", async () => { + await browserSecurity.importJWK(ES384_JWK as fhirclient.JWK) + }) + + it ("ES384 on the server", async () => { + await serverSecurity.importJWK(ES384_JWK as fhirclient.JWK) + }) + + it ("RS384 in the browser", async () => { + await browserSecurity.importJWK(RS384_JWK as fhirclient.JWK) + }) + + it ("RS384 on the server", async () => { + await serverSecurity.importJWK(RS384_JWK as fhirclient.JWK) + }) + + it ("ES384 in the browser throws without 'sign' in key_ops", async () => { + expect(browserSecurity.importJWK({ ...ES384_JWK, key_ops: ["verify"] } as fhirclient.JWK)).to.reject('The "key_ops" property of the JWK does not contain "sign"') + }) + + it ("ES384 on the server throws without 'sign' in key_ops", async () => { + expect(serverSecurity.importJWK({ ...ES384_JWK, key_ops: ["verify"] } as fhirclient.JWK)).to.reject('The "key_ops" property of the JWK does not contain "sign"') + }) + + it ("RS384 in the browser throws without 'sign' in key_ops", async () => { + expect(browserSecurity.importJWK({ ...RS384_JWK, key_ops: ["verify"] } as fhirclient.JWK)).to.reject('The "key_ops" property of the JWK does not contain "sign"') + }) + + it ("RS384 on the server throws without 'sign' in key_ops", async () => { + expect(serverSecurity.importJWK({ ...RS384_JWK, key_ops: ["verify"] } as fhirclient.JWK)).to.reject('The "key_ops" property of the JWK does not contain "sign"') + }) + + it ("ES384 in the browser throws without JWK.alg", async () => { + // @ts-ignore + expect(browserSecurity.importJWK({ ...ES384_JWK, alg: undefined } as fhirclient.JWK)).to.reject('The "alg" property of the JWK must be set to "ES384" or "RS384"') + }) + + it ("ES384 on the server throws without JWK.alg", async () => { + // @ts-ignore + expect(serverSecurity.importJWK({ ...ES384_JWK, alg: undefined } as fhirclient.JWK)).to.reject('The "alg" property of the JWK must be set to "ES384" or "RS384"') + }) + + it ("RS384 in the browser throws without JWK.alg", async () => { + // @ts-ignore + expect(browserSecurity.importJWK({ ...RS384_JWK, alg: undefined } as fhirclient.JWK)).to.reject('The "alg" property of the JWK must be set to "ES384" or "RS384"') + }) + + it ("RS384 on the server throws without JWK.alg", async () => { + // @ts-ignore + expect(serverSecurity.importJWK({ ...RS384_JWK, alg: undefined } as fhirclient.JWK)).to.reject('The "alg" property of the JWK must be set to "ES384" or "RS384"') + }) + + it ("ES384 in the browser throws with bad JWK", async () => { + // @ts-ignore + expect(browserSecurity.importJWK({ ...ES384_JWK, kty: "x" } as fhirclient.JWK)).to.reject() + }) + + it ("ES384 on the server throws with bad JWK", async () => { + // @ts-ignore + expect(serverSecurity.importJWK({ ...ES384_JWK, kty: "x" } as fhirclient.JWK)).to.reject() + }) + + it ("RS384 in the browser throws with bad JWK", async () => { + // @ts-ignore + expect(browserSecurity.importJWK({ ...RS384_JWK, kty: "x" } as fhirclient.JWK)).to.reject() + }) + + it ("RS384 on the server throws with bad JWK", async () => { + // @ts-ignore + expect(serverSecurity.importJWK({ ...RS384_JWK, kty: "x" } as fhirclient.JWK)).to.reject() + }) + }) + + describe("signCompactJws", () => { + + const jwtHeaders = { typ: "JWT", kid: "test-kid" }; + const jwtClaims = {}; + + it ("ES384 on the server", async () => { + const esk = await jose.generateKeyPair("ES384", { extractable: true }); + const clientAssertion = await serverSecurity .signCompactJws("ES384", esk.privateKey, jwtHeaders, jwtClaims) + await jose.compactVerify(clientAssertion, esk.publicKey) + }) + + it ("ES384 in the browser", async () => { + const { publicKey, privateKey } = await crypto.subtle.generateKey({ + name: "ECDSA", + namedCurve: "P-384" + }, true, ["sign", "verify"]); + + const clientAssertion = await browserSecurity.signCompactJws("ES384", privateKey, jwtHeaders, jwtClaims) + await jose.compactVerify(clientAssertion, publicKey) + }) + + it ("RS384 on the server", async () => { + const esk = await jose.generateKeyPair("RS384", { extractable: true }); + const clientAssertion = await serverSecurity .signCompactJws("RS384", esk.privateKey, jwtHeaders, jwtClaims) + await jose.compactVerify(clientAssertion, esk.publicKey) + }) + + it ("RS384 in the browser", async () => { + const { publicKey, privateKey } = await crypto.subtle.generateKey({ + name: "RSASSA-PKCS1-v1_5", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: { + name: 'SHA-384' + } + }, true, ["sign", "verify"]); + + const clientAssertion = await browserSecurity.signCompactJws("RS384", privateKey, jwtHeaders, jwtClaims) + await jose.compactVerify(clientAssertion, publicKey) + }) + }) + + // it ("s2b", () => { + // function s2b ( s: string ) { + // var b = new Uint8Array(s.length); + // for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i); + // return b; + // } + + // const s = new TextEncoder().encode("this is a test") + // const b = s2b("this is a test") + // expect(s).to.equal(b) + // }) + + // it ("ab2str", () => { + // function str2ab(str) { + // var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char + // var bufView = new Uint16Array(buf); + // for (var i=0, strLen=str.length; i { + // debug.enable("FHIRClient:*"); + return new Promise((resolve, reject) => { + mockDataServer = mockServer.listen(null, "0.0.0.0", error => { + if (error) { + return reject(error); + } + const addr = mockDataServer.address(); + mockUrl = `http://127.0.0.1:${addr.port}`; + // console.log(`Mock Data Server listening at ${mockUrl}`); + resolve(); + }); + }); +}); + +after(() => { + if (mockDataServer && mockDataServer.listening) { + return new Promise(resolve => { + mockUrl = ""; + mockDataServer.close(error => { + if (error) { + console.log("Error shutting down the mock-data server: ", error); + } + // console.log("Mock Data Server CLOSED!"); + resolve(); + }); + }); + } +}); + +afterEach(() => { + mockServer.clear(); +}); + +// ----------------------------------------------------------------------------- + +describe("Complete authorization [SERVER]", () => { + it ("code flow authorization", async () => { + + const key = "my-random-state"; + + const req1 = new HttpRequest("http://localhost/launch?launch=123&state=" + key); + const res1 = new HttpResponse(); + const smart1 = FHIR(req1 as any, res1 as any); + + // mock our oauth endpoints + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + authorization_endpoint: mockUrl, + token_endpoint: mockUrl + } + }); + + await smart1.authorize({ + iss : mockUrl, + scope : "my_scope", + clientId : "my_client_id", + redirectUri: "http://localhost/index" + }); + + expect(res1.status).to.equal(302); + expect(res1.headers.location).to.exist(); + + const url = new URL(res1.headers.location); + + expect(url.searchParams.get("response_type")).to.equal("code"); + expect(url.searchParams.get("client_id")).to.equal("my_client_id"); + expect(url.searchParams.get("scope")).to.equal("my_scope launch"); + expect(url.searchParams.get("launch")).to.equal("123"); + expect(url.searchParams.get("redirect_uri")).to.exist(); + expect(url.searchParams.get("state")).to.exist(); + + // Now we have been redirected to `redirect` and then back to our + // redirect_uri. It is time to complete the authorization. + const code = url.searchParams.get("state"); + const req2 = new HttpRequest("http://localhost/index?code=123&state=" + code); + req2.session = req1.session; // inherit the session + const res2 = new HttpResponse(); + const smart2 = FHIR(req2 as any, res2 as any); + + // mock our access token response + mockServer.mock({ + headers: { "content-type": "application/json" }, + status: 200, + body: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + const client = await smart2.ready(); + + expect(client.patient.id).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.encounter.id).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.user.id).to.equal("smart-Practitioner-71482713"); + expect(client.user.resourceType).to.equal("Practitioner"); + }); + + it ("refresh an authorized page", async () => { + + const key = "my-random-state"; + + const req = new HttpRequest("http://localhost/index"); + const res = new HttpResponse(); + const storage = new MemoryStorage(); + const smart = FHIR(req as any, res as any, storage); + + await storage.set(KEY, key); + await storage.set(key, { + clientId : "my_web_app", + scope : "whatever", + redirectUri : "whatever", + serverUrl : mockUrl, + tokenResponse: { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": "b2536dd3-bccd-4d22-8355-ab20acdf240b", + "encounter": "e3ec2d15-4c27-4607-a45c-2f84962b0700", + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJQBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": "my_web_app", + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0MzQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEzODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291bnRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjFibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltTnNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtpQndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJtVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfYWNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJleHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTRUZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSFBBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4QUFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJsbXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zGV9Os5cKREYcY" + } + }); + + const client = await smart.ready(); + + expect(client.patient.id).to.equal("b2536dd3-bccd-4d22-8355-ab20acdf240b"); + expect(client.encounter.id).to.equal("e3ec2d15-4c27-4607-a45c-2f84962b0700"); + expect(client.user.id).to.equal("smart-Practitioner-71482713"); + expect(client.user.resourceType).to.equal("Practitioner"); + }); + + it ("can bypass oauth by passing `fhirServiceUrl` to `authorize`", async () => { + const req = new HttpRequest("http://localhost/launch"); + const res = new HttpResponse(); + const smart = FHIR(req as any, res as any); + await smart.authorize({ fhirServiceUrl: "http://localhost" }); + expect(res.status).to.equal(302); + expect(res.headers.location).to.exist(); + const url = new URL(res.headers.location); + expect(url.href).to.match(/http:\/\/localhost\/\?state=./); + }); + + it ("appends 'launch' to the scopes if needed", async () => { + const req = new HttpRequest("http://localhost/launch"); + const res = new HttpResponse(); + const storage = new MemoryStorage(); + const smart = FHIR(req as any, res as any, storage); + await smart.authorize({ + fhirServiceUrl: "http://localhost", + scope: "x", + launch: "123" + }); + expect(res.status).to.equal(302); + expect(res.headers.location).to.exist(); + const url = new URL(res.headers.location); + const state = url.searchParams.get("state"); + const stored = await storage.get(state); + expect(stored.scope).to.equal("x launch"); + }); + + // it ("can do standalone launch"); +}); + +describe("ServerStorage", () => { + it ("can 'get'", async () => { + const session = { a: "b" }; + const storage = new ServerStorage({ session } as any); + expect(await storage.get("a")).to.equal("b"); + expect(await storage.get("b")).to.equal(undefined); + }); + it ("can 'set'", async () => { + const session = {}; + const storage = new ServerStorage({ session } as any); + await storage.set("a", "b"); + expect(await storage.get("a")).to.equal("b"); + }); + it ("can 'unset'", async () => { + const session = { a: "b" }; + const storage = new ServerStorage({ session } as any); + const result = await storage.unset("a"); + expect(result).to.equal(true); + expect(session.a).to.equal(undefined); + const result2 = await storage.unset("a"); + expect(result2).to.equal(false); + }); +}); + +describe("NodeAdapter", () => { + + it ("base64urlencode a string", () => { + // @ts-ignore + const env = new Adapter({}) + const input = "This is a test" + expect(env.base64urlencode(input)).to.equal(Buffer.from(input).toString("base64url")) + }) + + it ("base64urlencode an Uint8Array", () => { + // @ts-ignore + const env = new Adapter({}) + const input = "This is a test" + expect(env.base64urlencode(new TextEncoder().encode(input))).to.equal(Buffer.from(input).toString("base64url")) + }) + + it ("base64urldecode", () => { + // @ts-ignore + const env = new Adapter({}) + const input = Buffer.from("test").toString("base64url") + expect(env.base64urldecode(input)).to.equal("test") + }) + + it ("getUrl", () => { + const map = [ + { + request: { + url: "/", + headers: { + host: "localhost" + } + }, + result: "http://localhost/" + }, + { + request: { + url: "/a/b/c", + headers: { + "x-forwarded-host" : "external-domain", + "x-forwarded-proto": "https" + } + }, + result: "https://external-domain/a/b/c" + }, + { + request: { + headers: { + "x-forwarded-host" : "external-domain", + "x-forwarded-proto": "https", + "x-forwarded-port" : "8080", + "x-original-uri" : "/b/c/d" + } + }, + result: "https://external-domain:8080/b/c/d" + } + ]; + + map.forEach(meta => { + const request = meta.request as IncomingMessage; + request.socket = {} as any; + const adapter = new Adapter({ request, response: {} as any }); + expect(adapter.getUrl().href).to.equal(meta.result); + }); + }); + + it ("getStorage() works with factory function", () => { + + const callLog = []; + + const fakeStorage: any = { fakeStorage: "whatever" }; + + function getStorage(...args) { + callLog.push(args); + return fakeStorage; + } + + const adapter = new Adapter({ + storage : getStorage, + request : "my-request" as any, + response: "my-response" as any + }); + + // Call it twice and make sure that only one instance is created + expect(adapter.getStorage()).to.equal(fakeStorage); + expect(adapter.getStorage()).to.equal(fakeStorage); + expect(callLog).to.equal([[{ + storage : getStorage, + request : "my-request", + response: "my-response" + }]]); + }); +}); diff --git a/test/smart.test.ts b/test/smart.test.ts new file mode 100644 index 00000000..0ebdb980 --- /dev/null +++ b/test/smart.test.ts @@ -0,0 +1,219 @@ +import * as jose from 'jose'; +import { expect } from "@hapi/code"; +import * as Lab from "@hapi/lab"; +import * as smart from "../src/smart"; +import { fhirclient } from "../src/types"; +import ServerEnv from "./mocks/ServerEnvironment"; +export const lab = Lab.script(); +const { it, describe } = lab; + +try { var { subtle } = require('node:crypto').webcrypto; } catch {} + +const defaultState: fhirclient.ClientState = { + serverUrl : 'https://server.example.org', + redirectUri: 'https://client.example.org/after-auth', + tokenUri : 'https://server.example.org/token', + clientId : 'example-client-id', +}; + +const clientPrivateJwk: fhirclient.ES384JWK = { + "alg": "ES384", + "kty": "EC", + "crv": "P-384", + "d" : "WcrTiYk8jbI-Sd1sKNpqGmELWGG08bf_y9SSlnC4cpAl5GRdHHN9gKYlPvMFqiJ5", + "x" : "wcE8O55ro6aOuTf5Ty1k_IG4mTcuLiVercHouge1G5Ri-leevhev4uJzlHpi3U8r", + "y" : "mLRgz8Giu6XA_AqG8bywqbygShmd8jowflrdx0KQtM5X4s4aqDeCRfcpexykp3aI", + "kid": "afb27c284f2d93959c18fa0320e32060", +} + +const defaultStateAsymmetricAuth: fhirclient.ClientState = { + ...defaultState, + clientPublicKeySetUrl: "https://client.example.org/.well-known/jwks.json", + clientPrivateJwk +}; + +const defaultEnv = new ServerEnv(); + + + + +describe("smart", () => { + + describe("buildTokenRequest", () => { + it("uses state.clientSecret", async () => { + const requestOptions = await smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: { + ...defaultState, + clientSecret: "test-secret" + } + }); + + const authz = requestOptions.headers?.['authorization'] as string; + expect(authz).to.exist(); + expect(authz).to.startWith("Basic ") + }); + + it("throws without JWK.alg", async () => { + expect(smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: defaultStateAsymmetricAuth, + // @ts-ignore + privateKey: { ...clientPrivateJwk, alg: undefined } + })).to.reject('The "alg" property of the JWK must be set to "ES384" or "RS384"') + }) + + it("throws without 'sign' in key_ops", async () => { + expect(smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: defaultStateAsymmetricAuth, + privateKey: { ...clientPrivateJwk, key_ops: ["verify"] } + })).to.reject('The "key_ops" property of the JWK does not contain "sign"') + }) + + it("generates an assertion with state.clientPrivateJwk", async () => { + const requestOptions = await smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: defaultStateAsymmetricAuth, + privateKey: clientPrivateJwk + }); + + expect(requestOptions.body).to.exist(); + expect(requestOptions.body).to.contain('&client_assertion='); + expect(requestOptions.body).to.contain('&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer'); + + const assertionMatch = (requestOptions.body as string).match(/client_assertion=(?[^&]+)/); + expect(assertionMatch).not.to.be.null; + + const assertion = assertionMatch?.groups?.assertion; + expect(assertion).to.exist; + + const clientKey = await jose.importJWK(defaultStateAsymmetricAuth.clientPrivateJwk!); + let validated = await jose.compactVerify(assertion!, clientKey) + expect(validated).to.exist; + expect(validated.protectedHeader["jku"]).to.equal(defaultStateAsymmetricAuth.clientPublicKeySetUrl); + expect(validated.protectedHeader["kid"]).to.equal(defaultStateAsymmetricAuth.clientPrivateJwk!.kid); + expect(validated.protectedHeader["typ"]).to.equal("JWT"); + + let payload: any = JSON.parse(new TextDecoder().decode(validated.payload)); + + expect(payload["aud"]).to.equal(defaultStateAsymmetricAuth.tokenUri); + expect(payload["iss"]).to.equal(defaultStateAsymmetricAuth.clientId); + expect(payload["sub"]).to.equal(defaultStateAsymmetricAuth.clientId); + expect(payload["exp"]).to.exist(); + expect(payload["jti"]).to.exist(); + + }); + + if (subtle) { + it("works with ES384 CryptoKey instance", async () => { + const alg = "ES384" + const kid = "afb27c284f2d93959c18fa0320e32060" + const jku = "https://client.example.org/.well-known/jwks.json"; + + const { privateKey, publicKey } = await subtle.generateKey({ + name: "ECDSA", + namedCurve: "P-384" + }, false, ["sign", "verify"]) + + const requestOptions = await smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: defaultStateAsymmetricAuth, + clientPublicKeySetUrl: jku, + privateKey: { + kid, + alg, + key: privateKey + } + }); + + expect(requestOptions.body).to.exist(); + expect(requestOptions.body).to.contain('&client_assertion='); + expect(requestOptions.body).to.contain('&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer'); + + const assertionMatch = (requestOptions.body as string).match(/client_assertion=(?[^&]+)/); + expect(assertionMatch).not.to.be.null; + + const assertion = assertionMatch?.groups?.assertion; + expect(assertion).to.exist; + + const validated = await jose.compactVerify(assertion!, publicKey) + expect(validated).to.exist; + expect(validated.protectedHeader["jku"]).to.equal(jku); + expect(validated.protectedHeader["kid"]).to.equal(kid); + expect(validated.protectedHeader["typ"]).to.equal("JWT"); + + const payload: any = JSON.parse(new TextDecoder().decode(validated.payload)); + expect(payload["aud"]).to.equal(defaultStateAsymmetricAuth.tokenUri); + expect(payload["iss"]).to.equal(defaultStateAsymmetricAuth.clientId); + expect(payload["sub"]).to.equal(defaultStateAsymmetricAuth.clientId); + expect(payload["exp"]).to.exist(); + expect(payload["jti"]).to.exist(); + }); + + it("works with RS384 CryptoKey instance", async () => { + const alg = "RS384" + const kid = "afb27c284f2d93959c18fa0320e32060" + const jku = "https://client.example.org/.well-known/jwks.json"; + + const { privateKey, publicKey } = await subtle.generateKey({ + name: "RSASSA-PKCS1-v1_5", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: { + name: 'SHA-384' + } + }, false, ["sign", "verify"]) + + const requestOptions = await smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: defaultStateAsymmetricAuth, + clientPublicKeySetUrl: jku, + privateKey: { + kid, + alg, + key: privateKey + } + }); + + expect(requestOptions.body).to.exist(); + expect(requestOptions.body).to.contain('&client_assertion='); + expect(requestOptions.body).to.contain('&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer'); + + const assertionMatch = (requestOptions.body as string).match(/client_assertion=(?[^&]+)/); + expect(assertionMatch).not.to.be.null; + + const assertion = assertionMatch?.groups?.assertion; + expect(assertion).to.exist; + + const validated = await jose.compactVerify(assertion!, publicKey) + expect(validated).to.exist; + expect(validated.protectedHeader["jku"]).to.equal(jku); + expect(validated.protectedHeader["kid"]).to.equal(kid); + expect(validated.protectedHeader["typ"]).to.equal("JWT"); + + const payload: any = JSON.parse(new TextDecoder().decode(validated.payload)); + expect(payload["aud"]).to.equal(defaultStateAsymmetricAuth.tokenUri); + expect(payload["iss"]).to.equal(defaultStateAsymmetricAuth.clientId); + expect(payload["sub"]).to.equal(defaultStateAsymmetricAuth.clientId); + expect(payload["exp"]).to.exist(); + expect(payload["jti"]).to.exist(); + }); + } + + it("fails with broken state.clientPrivateJwk", async () => { + expect(smart.buildTokenRequest(defaultEnv, { + code: "example-code", + state: { + ...defaultStateAsymmetricAuth + }, + privateKey: { + alg: "RS384", + kid: "whatever", + kty: "RSA" + } + })).to.reject(); + }); + + }); +}); diff --git a/test/specs/index.html b/test/specs/index.html new file mode 100644 index 00000000..43b832f6 --- /dev/null +++ b/test/specs/index.html @@ -0,0 +1,9 @@ + + + + Sample Index Page + + + + + \ No newline at end of file diff --git a/test/specs/launch.html b/test/specs/launch.html new file mode 100644 index 00000000..e1affc57 --- /dev/null +++ b/test/specs/launch.html @@ -0,0 +1,9 @@ + + + + Sample Launch Page + + + + + \ No newline at end of file diff --git a/test/specs/smart.e2e.js b/test/specs/smart.e2e.js new file mode 100644 index 00000000..2037fd5a --- /dev/null +++ b/test/specs/smart.e2e.js @@ -0,0 +1,985 @@ +const chai = require("chai"); +const express = require("express"); +const jose = require('jose'); +const cors = require("cors"); +const mockServer = require("../mocks/mockServer2"); +const chaiAsPromised = require("chai-as-promised"); +// const { default: fetch } = require("cross-fetch"); +const path = require("path"); + +chai.use(chaiAsPromised); +chai.should(); + +const { expect } = chai; + +/** + * NOTE: These variables are NOT used! They are only declared here to avoid lint + * warnings. Instead, they should exist within the tested window scope at runtime + * @type {any} + */ +let FHIR, SMART_CLIENT, PRIVATE_KEY; + + + +const KEY_SET_URL = "https://client.example.org/.well-known/jwks.json" +const CLIENT_ID = "my_web_app" +const PATIENT_ID = "b2536dd3-bccd-4d22-8355-ab20acdf240b" +const ENCOUNTER_ID = "e3ec2d15-4c27-4607-a45c-2f84962b0700" +const USER_ID = "smart-Practitioner-71482713" +const USER_TYPE = "Practitioner" + + + + + +function navigate(url) { + return new Promise((resolve, reject) => { + browser.url(url, result => { + // @ts-ignore + result.error ? reject(result.error) : resolve(result.value) + }); + }) +} + +function execute(fn, ...args) { + return new Promise((resolve, reject) => { + browser.execute(fn, args, result => { + // @ts-ignore + result.error ? reject(result.error) : resolve(result.value) + }); + }) +} + +function executeAsync(fn, ...args) { + return new Promise(resolve => { + browser.executeAsyncScript(fn, args, resolve); + }).then(result => { + if (!result) { + throw new Error(`Calling ${fn} returned no result`) + } + + if (result.value?.error) { + throw new Error(result.value.error + "") + } + + return result.value + }); +} + +async function assertThrows(fn, e) { + try { + await fn(); + } catch (ex) { + if (typeof e == "string") { + expect(ex.toString(), "Invalid error message").to.contain(e) + } else if (e && e instanceof RegExp) { + expect(ex.toString(), "Invalid error message").to.match(e) + } + return + } + + throw new Error("Did not throw") +} + +function generateTokenResponse(state = {}) { + const resp = { + "need_patient_banner": true, + "smart_style_url": "https://launch.smarthealthit.org/smart-style.json", + "patient": PATIENT_ID, + "encounter": ENCOUNTER_ID, + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6I" + + "mh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYy" + + "NDBiIiwiZW5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5" + + "pZCBmaGlyVXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIj" + + "oiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTkwNjc0OTE0fQ.-Ey7wdFSlmfoQrm7HNxAgJ" + + "QBJPKdtfH7kL1Z91L60_8", + "token_type": "bearer", + "scope": "openid fhirUser offline_access user/*.* patient/*.* launch/encounter launch/patient profile", + "client_id": CLIENT_ID, + "expires_in": 3600, + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwcm9maWxlIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImZoaXJVc2" + + "VyIjoiUHJhY3RpdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImF1ZCI6Im15X3dlYl9hcHAiLCJzdWIiOiJkYjIzZDBkZTI1Njc4ZTY3MDk5YmM0M" + + "zQzMjNkYzBkOTY1MTNiNTUyMmQ0Yjc0MWNiYTM5ZjdjOTJkMGM0NmFlIiwiaXNzIjoiaHR0cDovL2xhdW5jaC5zbWFydGhlYWx0aGl0Lm9yZyIsImlhdCI6MTU1OTEz" + + "ODkxNCwiZXhwIjoxNTU5MTQyNTE0fQ.OtbIcs5nyEKaD2kAPasm1DYFixHvVbkC1wQys3oa3T-4Tf8wxW56hzUK0ZQeOK_gEIxiSFn9tLoUvKau_M1WRVD11FPyulvs" + + "1Q8EbG5PQ83MBudcpZQJ_uuFbVcGsDMy2xEa_8jAHkHPAVNjj8FRsQCRZC0Hfg0NbXli3yOhAFK1LqTUcrnjfwD-sak0UGQS1H6OgILnTYLrlTTIonfnWRdpWJjjIh3" + + "_GCk5k-8LU8AARaPcSE3ZhezoKTSfwQn1XO101g5h337pZleaIlFlhxPRFSKtpXz7BEezkUi5CJqN4d2qNoBK9kapljFYEVdPjRqaBnt4blmyFRXjhdMNwA", + "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZWVkX3BhdGllbnRfYmFubmVyIjp0cnVlLCJzbWFydF9zdHlsZV91cmwiOiJodHRwczovL2xhdW" + + "5jaC5zbWFydGhlYWx0aGl0Lm9yZy9zbWFydC1zdHlsZS5qc29uIiwicGF0aWVudCI6ImIyNTM2ZGQzLWJjY2QtNGQyMi04MzU1LWFiMjBhY2RmMjQwYiIsImVuY291b" + + "nRlciI6ImUzZWMyZDE1LTRjMjctNDYwNy1hNDVjLTJmODQ5NjJiMDcwMCIsInJlZnJlc2hfdG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5p" + + "SjkuZXlKamIyNTBaWGgwSWpwN0ltNWxaV1JmY0dGMGFXVnVkRjlpWVc1dVpYSWlPblJ5ZFdVc0luTnRZWEowWDNOMGVXeGxYM1Z5YkNJNkltaDBkSEJ6T2k4dmJHRjF" + + "ibU5vTG5OdFlYSjBhR1ZoYkhSb2FYUXViM0puTDNOdFlYSjBMWE4wZVd4bExtcHpiMjRpTENKd1lYUnBaVzUwSWpvaVlqSTFNelprWkRNdFltTmpaQzAwWkRJeUxUZ3" + + "pOVFV0WVdJeU1HRmpaR1l5TkRCaUlpd2laVzVqYjNWdWRHVnlJam9pWlRObFl6SmtNVFV0TkdNeU55MDBOakEzTFdFME5XTXRNbVk0TkRrMk1tSXdOekF3SW4wc0ltT" + + "nNhV1Z1ZEY5cFpDSTZJbTE1WDNkbFlsOWhjSEFpTENKelkyOXdaU0k2SW05d1pXNXBaQ0JtYUdseVZYTmxjaUJ2Wm1ac2FXNWxYMkZqWTJWemN5QjFjMlZ5THlvdUtp" + + "QndZWFJwWlc1MEx5b3VLaUJzWVhWdVkyZ3ZaVzVqYjNWdWRHVnlJR3hoZFc1amFDOXdZWFJwWlc1MElIQnliMlpwYkdVaUxDSjFjMlZ5SWpvaVVISmhZM1JwZEdsdmJ" + + "tVnlMM050WVhKMExWQnlZV04wYVhScGIyNWxjaTAzTVRRNE1qY3hNeUlzSW1saGRDSTZNVFUxT1RFek9Ea3hNeXdpWlhod0lqb3hOVGt3TmpjME9URTBmUS4tRXk3d2" + + "RGU2xtZm9Rcm03SE54QWdKUUJKUEtkdGZIN2tMMVo5MUw2MF84IiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoib3BlbmlkIGZoaXJVc2VyIG9mZmxpbmVfY" + + "WNjZXNzIHVzZXIvKi4qIHBhdGllbnQvKi4qIGxhdW5jaC9lbmNvdW50ZXIgbGF1bmNoL3BhdGllbnQgcHJvZmlsZSIsImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJl" + + "eHBpcmVzX2luIjozNjAwLCJpZF90b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp3Y205bWFXeGxJam9pVUhKaFkzUnBkR2x2Ym1" + + "WeUwzTnRZWEowTFZCeVlXTjBhWFJwYjI1bGNpMDNNVFE0TWpjeE15SXNJbVpvYVhKVmMyVnlJam9pVUhKaFkzUnBkR2x2Ym1WeUwzTnRZWEowTFZCeVlXTjBhWFJwYj" + + "I1bGNpMDNNVFE0TWpjeE15SXNJbUYxWkNJNkltMTVYM2RsWWw5aGNIQWlMQ0p6ZFdJaU9pSmtZakl6WkRCa1pUSTFOamM0WlRZM01EazVZbU0wTXpRek1qTmtZekJrT" + + "1RZMU1UTmlOVFV5TW1RMFlqYzBNV05pWVRNNVpqZGpPVEprTUdNME5tRmxJaXdpYVhOeklqb2lhSFIwY0RvdkwyeGhkVzVqYUM1emJXRnlkR2hsWVd4MGFHbDBMbTl5" + + "WnlJc0ltbGhkQ0k2TVRVMU9URXpPRGt4TkN3aVpYaHdJam94TlRVNU1UUXlOVEUwZlEuT3RiSWNzNW55RUthRDJrQVBhc20xRFlGaXhIdlZia0Mxd1F5czNvYTNULTR" + + "UZjh3eFc1Nmh6VUswWlFlT0tfZ0VJeGlTRm45dExvVXZLYXVfTTFXUlZEMTFGUHl1bHZzMVE4RWJHNVBRODNNQnVkY3BaUUpfdXVGYlZjR3NETXkyeEVhXzhqQUhrSF" + + "BBVk5qajhGUnNRQ1JaQzBIZmcwTmJYbGkzeU9oQUZLMUxxVFVjcm5qZndELXNhazBVR1FTMUg2T2dJTG5UWUxybFRUSW9uZm5XUmRwV0pqakloM19HQ2s1ay04TFU4Q" + + "UFSYVBjU0UzWmhlem9LVFNmd1FuMVhPMTAxZzVoMzM3cFpsZWFJbEZsaHhQUkZTS3RwWHo3QkVlemtVaTVDSnFONGQycU5vQks5a2FwbGpGWUVWZFBqUnFhQm50NGJs" + + "bXlGUlhqaGRNTndBIiwiaWF0IjoxNTU5MTM4OTE0LCJleHAiOjE1NTkxNDI1MTR9.lhfmhXYfoaI4QcJYvFnr2FMn_RHO8aXSzzkXzwNpc7w", + "code": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi" + + "8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24iLCJwYXRpZW50IjoiYjI1MzZkZDMtYmNjZC00ZDIyLTgzNTUtYWIyMGFjZGYyNDBiIiwiZ" + + "W5jb3VudGVyIjoiZTNlYzJkMTUtNGMyNy00NjA3LWE0NWMtMmY4NDk2MmIwNzAwIn0sImNsaWVudF9pZCI6Im15X3dlYl9hcHAiLCJzY29wZSI6Im9wZW5pZCBmaGly" + + "VXNlciBvZmZsaW5lX2FjY2VzcyB1c2VyLyouKiBwYXRpZW50LyouKiBsYXVuY2gvZW5jb3VudGVyIGxhdW5jaC9wYXRpZW50IHByb2ZpbGUiLCJ1c2VyIjoiUHJhY3R" + + "pdGlvbmVyL3NtYXJ0LVByYWN0aXRpb25lci03MTQ4MjcxMyIsImlhdCI6MTU1OTEzODkxMywiZXhwIjoxNTU5MTM5MjEzfQ.G2dLcSnjpwM_joWTxWLfL48vhdlj3zG" + + "V9Os5cKREYcY", + state + }; + + + return resp +} + +async function startFileServer(context) { + return new Promise(resolve => { + const app = express(); + app.use(cors()); + app.use((req, res, next) => { + res.set({ + "cache-control": "no-cache, no-store, must-revalidate", + "pragma" : "no-cache", + "expires" : "0" + }); + next(); + }); + app.use("/", express.static( + process.env.GITHUB_WORKSPACE || path.resolve(__dirname, "../../") + )); + + context.fileServer = app.listen(0, "127.0.0.1", () => { + const address = context.fileServer.address() + context.FILE_SERVER_BASE_URL = "http://127.0.0.1:" + address.port + context.LAUNCH_URL = context.FILE_SERVER_BASE_URL + "/test/specs/launch.html" + context.REDIRECT_URL = context.FILE_SERVER_BASE_URL + "/test/specs/" + console.log("File server listening on " + context.FILE_SERVER_BASE_URL); + resolve(context); + }) + }) +} + +async function stopFileServer(context) { + return new Promise((resolve, reject) => { + if (context.fileServer && context.fileServer.listening) { + context.fileServer.close((error) => { + if (error) { + console.log("Error shutting down the file server: ", error); + reject(error) + } else { + resolve(context); + } + }); + } else { + resolve(context); + } + }) +} + +async function startMockServer(context) { + return new Promise(resolve => { + context.mockDataServer = mockServer.listen(context.mockDataServer, "127.0.0.1", () => { + context.MOCK_PORT = context.mockDataServer.address().port + context.MOCK_BASE_URL = "http://127.0.0.1:" + context.MOCK_PORT + context.FHIR_URL = `${context.MOCK_BASE_URL}/fhir/` + context.AUTHORIZE_URL = `${context.MOCK_BASE_URL}/auth/authorize` + context.TOKEN_URL = `${context.MOCK_BASE_URL}/auth/token` + context.INTROSPECT_URL = `${context.MOCK_BASE_URL}/auth/introspect` + context.REGISTER_URL = `${context.MOCK_BASE_URL}/auth/register` + console.log("Mock server listening on " + context.MOCK_BASE_URL) + resolve(context); + }) + }); +} + +async function stopMockServer(context) { + return new Promise((resolve, reject) => { + if (context.mockDataServer && context.mockDataServer.listening) { + context.mockDataServer.close((error) => { + if (error) { + console.log("Error shutting down the mock server: ", error); + reject(error) + } else { + resolve(context); + } + }); + } else { + resolve(context); + } + }) +} + +function mockWellKnownJson(context) { + return { + registration_endpoint : context.REGISTER_URL, + authorization_endpoint: context.AUTHORIZE_URL, + token_endpoint : context.TOKEN_URL, + + // For PKCE + code_challenge_methods_supported: ["S256"], + + // Advertise support for SMART Confidential Clients with Asymmetric Keys + token_endpoint_auth_methods_supported: ["private_key_jwt"], + token_endpoint_auth_signing_alg_values_supported: ["RS384", "ES384"], + + scopes_supported: [ + "system/*.rs" // For asymmetric auth + ] + }; +} + +function mockCapabilityStatement(context) { + return { + resourceType: "CapabilityStatement", + rest: [ + { + mode: "server", + security: { + extension: [ + { + url: "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris", + extension: [ + { + url: "authorize", + valueUri: context.AUTHORIZE_URL + }, + { + url: "token", + valueUri: context.TOKEN_URL + }, + { + url: "introspect", + valueUri: context.INTROSPECT_URL + } + ] + } + ] + }, + resource: [] + } + ] + }; +} + +describe("authorization", () => { + + const ctx = {}; + + let MOCK_WELL_KNOWN_JSON, MOCK_CAPABILITY_STATEMENT; + + before(async () => { + await startFileServer(ctx) + await startMockServer(ctx) + + MOCK_WELL_KNOWN_JSON = mockWellKnownJson(ctx) + MOCK_CAPABILITY_STATEMENT = mockCapabilityStatement(ctx) + }); + + after(async () => { + await browser.end() + await stopFileServer(ctx) + await stopMockServer(ctx) + }); + + beforeEach(async () => mockServer.clear()); + + + + /** + * + * @param {import("../../src/types").fhirclient.AuthorizeParams} authorizeParams + * @param {*} wellKnownJson + * @param {*} capabilityStatement + * @returns + */ + async function authorize( + authorizeParams, + wellKnownJson = MOCK_WELL_KNOWN_JSON, + capabilityStatement = MOCK_CAPABILITY_STATEMENT + ) { + + // Open the browser (Ignores url params!!!) ---------------------------- + await navigate(ctx.LAUNCH_URL) + await execute( + `history.replaceState(null, "", "${ctx.LAUNCH_URL}?launch=123&iss=${ + encodeURIComponent(ctx.FHIR_URL)}")` + ); + + // Mock .well-known/smart-configuration -------------------------------- + let mockWellKnownJson; + if (wellKnownJson) { + mockWellKnownJson = mockServer.mock("/fhir/.well-known/smart-configuration", { + body: wellKnownJson, + status: 200, + headers: { + "content-type" : "application/json", + "cache-control": "no-cache, no-store, must-revalidate", + "pragma" : "no-cache", + "expires" : "0" + } + }); + } + + // Mock the metadata request ------------------------------------------- + let mockCapabilityStatement; + if (capabilityStatement) { + mockCapabilityStatement = mockServer.mock("/fhir/metadata", { + body: capabilityStatement, + status: 200, + headers: { + "content-type" : "application/json", + "cache-control": "no-cache, no-store, must-revalidate", + "pragma" : "no-cache", + "expires" : "0" + } + }) + } + + // Inject our authorize call into the page ----------------------------- + /** @type {any} */ + const result = await executeAsync(function(authorizeParams, done) { + FHIR.oauth2.authorize({ ...authorizeParams, noRedirect: true }).then( + function(url) { done(url) }, + function(err) { done({ error: err.toString() }) } + ); + }, authorizeParams); + + // Verify that .well-known/smart-configuration has been requested ------ + if (mockWellKnownJson) { + expect( + mockWellKnownJson._request?.url, + "/fhir/.well-known/smart-configuration should have been requested" + ).to.equal("/fhir/.well-known/smart-configuration"); + expect( + mockWellKnownJson._response.statusCode, + "/fhir/.well-known/smart-configuration should reply with status 200" + ).to.equal(200); + } + + // Verify that metadata has been requested (if needed) ----------------- + if (!wellKnownJson && capabilityStatement) { + expect( + mockCapabilityStatement._request?.url, + "/fhir/metadata should be requested" + ).to.equal("/fhir/metadata"); + expect( + mockCapabilityStatement._response.statusCode, + "/fhir/metadata should reply with status 200" + ).to.equal(200); + } + + // Return the URL to run assertions on it ------------------------------ + const url = new URL(result); + + expect(url.searchParams.get("response_type"), "The redirect url should contain 'response_type=code'").to.equal("code") + expect(url.searchParams.get("scope"), "The redirect url should contain 'launch' in its scope parameter").to.contain("launch") + expect(url.searchParams.get("redirect_uri"), "The redirect url contains invalid redirect_uri parameter").to.equal(ctx.REDIRECT_URL) + expect(url.searchParams.get("aud"), "The redirect url contains invalid aud parameter").to.equal(ctx.FHIR_URL) + expect(url.searchParams.get("state"), "The redirect url must contains a state parameter ").to.exist + expect(url.searchParams.get("launch"), "The redirect url contains invalid launch parameter").to.equal("123") + + return url + } + + async function ready(stateID, options = {}) { + const result = await executeAsync(function(options, done) { + FHIR.oauth2.ready(options).then( + function(client) { + SMART_CLIENT = client; + done(client.state ); + }, + function(e) { + done({ error: e + "" }); + } + ); + }, options); + + // console.log("result:", result) + + expect(result, "FHIR.oauth2.ready should resolve with valid client instance").to.exist + + if (result.error) { + throw new Error(result.error.replace(/^Error: /, "")) + } + + expect(await browser.getCurrentUrl(), "the browser url should be replaced").to.equal(ctx.REDIRECT_URL); + + const state = await execute(function(stateID) { + return JSON.parse(sessionStorage.getItem(stateID) || "null"); + }, stateID); + + expect(state, `State should exist in sessionStorage["${stateID}"]`).not.to.equal(null); + + expect( + await execute(function() { return SMART_CLIENT?.getPatientId(); }), + `client.getPatientId() should return "${PATIENT_ID}"` + ).to.equal(PATIENT_ID); + + expect( + await execute(function() { return SMART_CLIENT?.getEncounterId(); }), + `client.getEncounterId() should return "${ENCOUNTER_ID}"` + ).to.equal(ENCOUNTER_ID); + + expect( + await execute(function() { return SMART_CLIENT?.getUserId(); }), + `client.getUserId() should return "${USER_ID}"` + ).to.equal(USER_ID); + + expect( + await execute(function() { return SMART_CLIENT?.getUserType(); }), + `client.getUserType() should return "${USER_TYPE}"` + ).to.equal(USER_TYPE); + + return state + } + + // pkceMode = 'disabled' --------------------------------------------------- + + it("using pkceMode = 'disabled' does not include code_challenge, even if the server supports S256", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "disabled" + }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + it("using pkceMode = 'disabled' does not include code_challenge if server does not declare S256 support", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "disabled" + }, { ...MOCK_WELL_KNOWN_JSON, code_challenge_methods_supported: [] }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + it("using pkceMode = 'disabled' does not include code_challenge if server does not have a well-known statement", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "disabled" + }, null); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + // pkceMode = 'disabled' --------------------------------------------------- + + it("using pkceMode = 'disabled' does not include code_challenge, even if the server supports S256", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "disabled" + }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + it("using pkceMode = 'disabled' does not include code_challenge if server does not declare S256 support", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "disabled" + }, { ...MOCK_WELL_KNOWN_JSON, code_challenge_methods_supported: [] }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + it("using pkceMode = 'disabled' does not include code_challenge if server does not have a well-known statement", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "disabled" + }, null); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + // pkceMode = 'unsafeV1' --------------------------------------------------- + + it("using pkceMode = 'unsafeV1' includes code_challenge", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "unsafeV1" + }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should have a code_challenge parameter").to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should include code_challenge_method parameter=S256").to.equal("S256"); + }); + + it("using pkceMode = 'unsafeV1' includes code_challenge, even if the server does not advertise S256 support", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "unsafeV1" + }, { ...MOCK_WELL_KNOWN_JSON, code_challenge_methods_supported: [] }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should have a code_challenge parameter").to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should include code_challenge_method parameter=S256").to.equal("S256"); + }); + + it("using pkceMode = 'unsafeV1' includes code_challenge, even if the server does not have a well-known statement", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "unsafeV1" + }, null); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should have a code_challenge parameter").to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should include code_challenge_method parameter=S256").to.equal("S256"); + }); + + // pkceMode = 'required' --------------------------------------------------- + + it("using pkceMode = 'required' includes code_challenge", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode: "required" + }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should have a code_challenge parameter").to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should include code_challenge_method parameter=S256").to.equal("S256"); + }); + + it("using pkceMode = 'required' throws if the server does not declare S256 support", async () => { + await assertThrows(async () => await authorize({ + client_id : CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "required" + }, { ...MOCK_WELL_KNOWN_JSON, code_challenge_methods_supported: [] }), + /Required PKCE code challenge method \(`S256`\) was not found/ + ); + }); + + it("using pkceMode = 'required' throws if the server does not have a well-known statement", async () => { + await assertThrows( + async () => await authorize({ + client_id : CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "required" + }, null), + /Required PKCE code challenge method \(`S256`\) was not found/ + ); + }); + + // pkceMode = 'ifSupported' ------------------------------------------------ + + it("using pkceMode = 'ifSupported' includes code_challenge", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "ifSupported" + }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should have a code_challenge parameter").to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should include code_challenge_method parameter=S256").to.equal("S256"); + }); + + it("using pkceMode = 'ifSupported' does not include code_challenge if server does not declare S256 support", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "ifSupported" + }, { ...MOCK_WELL_KNOWN_JSON, code_challenge_methods_supported: [] }); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + it("using pkceMode = 'ifSupported' does not include code_challenge if the server does not have a well-known statement", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs", + pkceMode : "ifSupported" + }, null); + expect(redirectUrl.searchParams.get("code_challenge"), "The redirect url should NOT have a code_challenge parameter").not.to.exist; + expect(redirectUrl.searchParams.get("code_challenge_method"), "The redirect url should NOT have a code_challenge_method parameter").not.to.exist; + }); + + it("authorize options - clientId", async () => { + const redirectUrl = await authorize({ + clientId: CLIENT_ID, + scope : "patient/*.read" + }); + expect(redirectUrl.searchParams.get("client_id"), `The redirect url should include client_id=${CLIENT_ID}`).to.equal(CLIENT_ID) + }); + + it("authorize options - client_id", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read" + }); + expect(redirectUrl.searchParams.get("client_id"), `The redirect url should include client_id=${CLIENT_ID}`).to.equal(CLIENT_ID) + }); + + it("authorize options - v2 scope", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.rs" + }); + expect(redirectUrl.searchParams.get("scope"), `The redirect url should include patient/*.rs in its scope parameter`).to.contain("patient/*.rs") + }); + + it("authorize options - v1 scope", async () => { + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read" + }); + expect(redirectUrl.searchParams.get("scope"), `The redirect url should include patient/*.read in its scope parameter`).to.contain("patient/*.read") + }); + + it("code flow", async () => { + + // launch -------------------------------------------------------------- + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read" + }); + + // Get the state parameter from the URL -------------------------------- + const stateID = redirectUrl.searchParams.get("state"); + + // Get the state object from sessionStorage ---------------------------- + /** @type {any} */ + const state = await execute(function(stateID) { + return JSON.parse(sessionStorage.getItem(stateID) || "null"); + }, stateID); + + // Verify the state is properly initialized ---------------------------- + expect(state, `state should be stored at sessionStorage["${stateID}"]`).to.exist + expect(state.authorizeUri, `state.authorizeUri should be "${ctx.AUTHORIZE_URL}"`).to.equal(ctx.AUTHORIZE_URL) + expect(state.tokenUri, `state.tokenUri should be "${ctx.TOKEN_URL}"`).to.equal(ctx.TOKEN_URL) + expect(state.redirectUri, `state.redirectUri should be "${ctx.REDIRECT_URL}"`).to.equal(ctx.REDIRECT_URL) + expect(state.serverUrl, `state.serverUrl should be "${ctx.FHIR_URL}"`).to.equal(ctx.FHIR_URL) + expect(state.registrationUri, `state.registrationUri should be "${ctx.REGISTER_URL}"`).to.equal(ctx.REGISTER_URL) + expect(state.clientId, `state.clientId should be "${CLIENT_ID}"`).to.equal(CLIENT_ID) + expect(state.scope, `state.scope should be "patient/*.read launch"`).to.equal("patient/*.read launch") + expect(state.key, `state.key should be "${stateID}"`).to.equal(stateID) + expect(state.tokenResponse, `state.tokenResponse should be initialized as an empty object`).to.deep.equal({}) + + // Verify PKCE if supported -------------------------------------------- + if (MOCK_WELL_KNOWN_JSON.code_challenge_methods_supported.includes("S256")) { + expect(state.codeChallengeMethods, "code_challenge_methods_supported should be set in state").to.deep.equal(MOCK_WELL_KNOWN_JSON.code_challenge_methods_supported) + expect(state.codeChallenge, "codeChallenge should be set in state").to.exist + expect(state.codeVerifier, "codeVerifier should be set in state").to.exist + } + + // Redirect ------------------------------------------------------------ + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + + // Mock token response ------------------------------------------------- + mockServer.mock({ method: "post", path: "/auth/token" }, { + body: generateTokenResponse(), + status: 200, + headers: { + "content-type": "application/json" + } + }) + + await ready(stateID) + }); + + ["ES384", "RS384"].forEach(alg => { + it (alg + " asymmetric auth", async () => { + + const { publicKey, privateKey } = await jose.generateKeyPair(alg) + + const clientPrivateJwk = { ...await jose.exportJWK(privateKey), alg, key_ops: ["sign"] } + const clientPublicJwk = await jose.exportJWK(publicKey ) + + // console.log(clientPrivateJwk, clientPublicJwk) + + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read", + clientPublicKeySetUrl: KEY_SET_URL, + // @ts-ignore + clientPrivateJwk + }); + + // Get the state parameter from the URL ---------------------------- + const stateID = redirectUrl.searchParams.get("state"); + + // Get the state object from sessionStorage ------------------------ + /** @type {any} */ + const state = await execute(function(stateID) { + return JSON.parse(sessionStorage.getItem(stateID) || "null"); + }, stateID); + + // Verify the state is properly initialized ------------------------ + expect(state, `state should be stored at sessionStorage["${stateID}"]`).to.exist; + expect(state.authorizeUri, `state.authorizeUri should be "${ctx.AUTHORIZE_URL}"`).to.equal(ctx.AUTHORIZE_URL) + expect(state.tokenUri, `state.tokenUri should be "${ctx.TOKEN_URL}"`).to.equal(ctx.TOKEN_URL) + expect(state.redirectUri, `state.redirectUri should be "${ctx.REDIRECT_URL}"`).to.equal(ctx.REDIRECT_URL) + expect(state.serverUrl, `state.serverUrl should be "${ctx.FHIR_URL}"`).to.equal(ctx.FHIR_URL) + expect(state.registrationUri, `state.registrationUri should be "${ctx.REGISTER_URL}"`).to.equal(ctx.REGISTER_URL) + expect(state.clientId, `state.clientId should be "${CLIENT_ID}"`).to.equal(CLIENT_ID) + expect(state.scope, `state.scope should be "patient/*.read launch"`).to.equal("patient/*.read launch") + expect(state.key, `state.key should be "${stateID}"`).to.equal(stateID) + expect(state.tokenResponse, `state.tokenResponse should be initialized as an empty object`).to.deep.equal({}) + expect(state.clientPrivateJwk, `The clientPrivateJwk object should be stored in state`).to.deep.equal(clientPrivateJwk) + expect(state.clientPublicKeySetUrl, `The clientPublicKeySetUrl should be stored in state`).to.equal(KEY_SET_URL) + + + // Redirect -------------------------------------------------------- + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + + // Mock token response --------------------------------------------- + const tokenMock = mockServer.mock({ path: "/auth/token", method: "post" }, { + bodyParser: express.urlencoded({ extended: false }), + async handler(req, res) { + + const clientKey = await jose.importJWK(clientPublicJwk, alg); + + expect(req.body.client_assertion, "client_assertion should be sent in the POST body").to.exist; + expect(req.body.client_assertion_type, "proper client_assertion_type should be sent in the POST body").to.equal('urn:ietf:params:oauth:client-assertion-type:jwt-bearer'); + expect(req.body.code, "proper code should be sent in the POST body").to.equal('123'); + expect(req.body.grant_type, "proper grant_type should be sent in the POST body").to.equal('authorization_code'); + expect(req.body.redirect_uri, "proper redirect_uri should be sent in the POST body").to.equal(ctx.REDIRECT_URL); + expect(req.body.code_verifier, "proper code_verifier should be sent in the POST body").to.exist; + + let validated = await jose.compactVerify(req.body.client_assertion, clientKey) + expect(validated, "client_assertion must be valid").to.exist; + expect(validated.protectedHeader.jku, `client_assertion jku header must be ${KEY_SET_URL}`).to.equal(KEY_SET_URL); + expect(validated.protectedHeader.kid, `client_assertion jku header must be ${clientPublicJwk.kid}`).to.equal(clientPublicJwk.kid); + expect(validated.protectedHeader.typ, "client_assertion jku header must be JWT").to.equal("JWT"); + + let payload = JSON.parse(new TextDecoder().decode(validated.payload)); + expect(payload.aud, `The validated token payload aud property should be "${ctx.TOKEN_URL}"`).to.equal(ctx.TOKEN_URL); + expect(payload.iss, `The validated token payload iss property should be "${CLIENT_ID}"`).to.equal(CLIENT_ID); + expect(payload.sub, `The validated token payload sub property should be "${CLIENT_ID}"`).to.equal(CLIENT_ID); + expect(payload.exp, "The validated token payload exp property should exist").to.exist; + expect(payload.jti, "The validated token payload jti property should exist").to.exist; + + res.json(generateTokenResponse()); + } + }); + + await ready(stateID) + + expect(tokenMock._request, "Token endpoint should be called called").to.exist; + }); + + it (alg + " asymmetric auth with CryptoKey object", async () => { + + const kid = "my-kid"; + + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read", + clientPublicKeySetUrl: KEY_SET_URL + }); + + const stateID = redirectUrl.searchParams.get("state"); + + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + + // 1. Create a key pair within the tested window + // 2. Export the public key as JWK to be used for virification later + // 3. Re-import the private key to make it non-extractable + // 4. Save the private key and return the publik JWK + const publicJWK = await executeAsync(async (alg, done) => { + try { + const algorithm = alg === "RS384" ? { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: { + name: 'SHA-384' + } + } : { + name: "ECDSA", + namedCurve: "P-384" + }; + + const { publicKey, privateKey } = await crypto.subtle.generateKey( + algorithm, + true, + ["sign", "verify"] + ); + + const publicJWK = await crypto.subtle.exportKey("jwk", publicKey); + const privateJWK = await crypto.subtle.exportKey("jwk", privateKey); + + PRIVATE_KEY = await crypto.subtle.importKey("jwk", privateJWK, algorithm, false, ["sign"]) + + done(publicJWK) + } catch (e) { + done({ error: e + "" }) + } + }, alg); + + // Mock token response + const tokenMock = mockServer.mock({ path: "/auth/token", method: "post" }, { + bodyParser: express.urlencoded({ extended: false }), + async handler(req, res) { + + const clientKey = await jose.importJWK(publicJWK, alg); + + expect(req.body.client_assertion, "client_assertion should be sent in the POST body").to.exist; + expect(req.body.client_assertion_type, "proper client_assertion_type should be sent in the POST body").to.equal('urn:ietf:params:oauth:client-assertion-type:jwt-bearer'); + expect(req.body.code, "proper code should be sent in the POST body").to.equal('123'); + expect(req.body.grant_type, "proper grant_type should be sent in the POST body").to.equal('authorization_code'); + expect(req.body.redirect_uri, "proper redirect_uri should be sent in the POST body").to.equal(ctx.REDIRECT_URL); + expect(req.body.code_verifier, "proper code_verifier should be sent in the POST body").to.exist; + + let validated = await jose.compactVerify(req.body.client_assertion, clientKey) + expect(validated, "client_assertion must be valid").to.exist; + expect(validated.protectedHeader.jku, `client_assertion jku header must be ${KEY_SET_URL}`).to.equal(KEY_SET_URL); + expect(validated.protectedHeader.kid, `client_assertion kid header must be ${kid}`).to.equal(kid); + expect(validated.protectedHeader.typ, "client_assertion typ header must be JWT").to.equal("JWT"); + + let payload = JSON.parse(new TextDecoder().decode(validated.payload)); + expect(payload.aud, `The validated token payload aud property should be "${ctx.TOKEN_URL}"`).to.equal(ctx.TOKEN_URL); + expect(payload.iss, `The validated token payload iss property should be "${CLIENT_ID}"`).to.equal(CLIENT_ID); + expect(payload.sub, `The validated token payload sub property should be "${CLIENT_ID}"`).to.equal(CLIENT_ID); + expect(payload.exp, "The validated token payload exp property should exist").to.exist; + expect(payload.jti, "The validated token payload jti property should exist").to.exist; + + res.json(generateTokenResponse()); + } + }); + + await executeAsync(async (context, done) => { + + FHIR.oauth2.ready({ + clientPublicKeySetUrl: context.KEY_SET_URL, + privateKey: { + alg: context.alg, + kid: context.kid, + key: PRIVATE_KEY + } + }).then( + function(client) { + SMART_CLIENT = client; + done(client.state); + }, + function(e) { + done({ error: e + "" }); + } + ); + }, { + alg, + kid, + KEY_SET_URL + }); + + expect(tokenMock._request, "Token endpoint should be called called").to.exist; + }); + + it(`authorize fails with bad ${alg} key`, async () => { + const { privateKey } = await jose.generateKeyPair(alg) + const clientPrivateJwk = await jose.exportJWK(privateKey) + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read", + clientPublicKeySetUrl: KEY_SET_URL, + // @ts-ignore + clientPrivateJwk: { ...clientPrivateJwk, kty: "bad", alg } + }); + const stateID = redirectUrl.searchParams.get("state"); + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + await ready(stateID).should.eventually.be.rejected; + }); + + it(alg + " throws without JWK.alg", async () => { + + const { publicKey, privateKey } = await jose.generateKeyPair(alg) + + const clientPrivateJwk = { ...await jose.exportJWK(privateKey), key_ops: ["sign"] } + const clientPublicJwk = await jose.exportJWK(publicKey ) + + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read", + clientPublicKeySetUrl: KEY_SET_URL, + // @ts-ignore + clientPrivateJwk + }); + + // Get the state parameter from the URL ---------------------------- + const stateID = redirectUrl.searchParams.get("state"); + + // Redirect -------------------------------------------------------- + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + + // Mock token response --------------------------------------------- + mockServer.mock({ path: "/auth/token", method: "post" }, { + bodyParser: express.urlencoded({ extended: false }), + async handler(req, res) { + const clientKey = await jose.importJWK(clientPublicJwk, alg); + await jose.compactVerify(req.body.client_assertion, clientKey); + res.json(generateTokenResponse()); + } + }); + + await ready(stateID).should.eventually.be.rejectedWith('The "alg" property of the JWK must be set to "ES384" or "RS384"') + }) + + it(alg + " throws without 'sign' in key_ops", async () => { + + const { publicKey, privateKey } = await jose.generateKeyPair(alg) + + const clientPrivateJwk = { ...await jose.exportJWK(privateKey), alg, key_ops: ["verify"] } + const clientPublicJwk = await jose.exportJWK(publicKey ) + + const redirectUrl = await authorize({ + client_id: CLIENT_ID, + scope : "patient/*.read", + clientPublicKeySetUrl: KEY_SET_URL, + // @ts-ignore + clientPrivateJwk + }); + + // Get the state parameter from the URL ---------------------------- + const stateID = redirectUrl.searchParams.get("state"); + + // Redirect -------------------------------------------------------- + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + + // Mock token response --------------------------------------------- + mockServer.mock({ path: "/auth/token", method: "post" }, { + bodyParser: express.urlencoded({ extended: false }), + async handler(req, res) { + const clientKey = await jose.importJWK(clientPublicJwk, alg); + await jose.compactVerify(req.body.client_assertion, clientKey); + res.json(generateTokenResponse()); + } + }); + + await ready(stateID, { privateKey: clientPrivateJwk }).should.eventually.be.rejectedWith('The "key_ops" property of the JWK does not contain "sign"') + }) + }); + + it("uses state.clientSecret", async () => { + const redirectUrl = await authorize({ + clientId : CLIENT_ID, + scope : "patient/*.read", + clientSecret: "test-secret" + }); + + const stateID = redirectUrl.searchParams.get("state"); + + await navigate(`${ctx.REDIRECT_URL}?code=123&state=${stateID}`); + + const tokenMock = mockServer.mock({ path: "/auth/token", method: "post" }, { + body : generateTokenResponse(), + status: 200, + headers: { + "content-type" : "application/json", + "cache-control": "no-cache, no-store, must-revalidate", + "pragma" : "no-cache", + "expires" : "0" + } + }); + + await ready(stateID) + + const authz = tokenMock._request?.headers?.authorization; + expect(authz, "authorization header should exist").to.exist; + expect(authz, "authorization header should be string").to.be.a("string"); + expect(authz, "authorization header should start with 'Basic '").to.match(/^Basic\s/) + }); +}); diff --git a/test/test-compartment.js.txt b/test/test-compartment.js.txt new file mode 100644 index 00000000..6fdaa2f5 --- /dev/null +++ b/test/test-compartment.js.txt @@ -0,0 +1,167 @@ +const Request = require("request"); + +// baseUrl - the url of the FHIR server +// patient - the ID of some patient that exists on that server +const SERVERS = [ + { + baseUrl: "https://r2.smarthealthit.org", + patient: "57b85682-ce42-4187-a593-7864248a9484" + }, + { + baseUrl: "https://r3.smarthealthit.org", + patient: "d0d0cde0-4b21-42f6-9c1e-bfa447d72059" + }, + { + baseUrl: "https://r4.smarthealthit.org", + patient: "af0e5952-c2ac-44fc-a896-36e9e30c2097" + }, + { + baseUrl: "https://api.logicahealth.org/hspcdemo/open", + patient: "SMART-1288992" + } +]; + +const Compartment = [ + "Account", + "AdverseEvent", + "AllergyIntolerance", + "Appointment", + "AppointmentResponse", + "AuditEvent", + "Basic", + "BodySite", + "BodyStructure", + "CarePlan", + "CareTeam", + "ChargeItem", + "Claim", + "ClaimResponse", + "ClinicalImpression", + "Communication", + "CommunicationRequest", + "Composition", + "Condition", + "Consent", + "Coverage", + "CoverageEligibilityRequest", + "CoverageEligibilityResponse", + "DetectedIssue", + "DeviceRequest", + "DeviceUseRequest", + "DeviceUseStatement", + "DiagnosticOrder", + "DiagnosticReport", + "DocumentManifest", + "DocumentReference", + "EligibilityRequest", + "Encounter", + "EnrollmentRequest", + "EpisodeOfCare", + "ExplanationOfBenefit", + "FamilyMemberHistory", + "Flag", + "Goal", + "Group", + "ImagingManifest", + "ImagingObjectSelection", + "ImagingStudy", + "Immunization", + "ImmunizationEvaluation", + "ImmunizationRecommendation", + "Invoice", + "List", + "MeasureReport", + "Media", + "MedicationAdministration", + "MedicationDispense", + "MedicationOrder", + "MedicationRequest", + "MedicationStatement", + "MolecularSequence", + "NutritionOrder", + "Observation", + "Order", + "Patient", + "Person", + "Procedure", + "ProcedureRequest", + "Provenance", + "QuestionnaireResponse", + "ReferralRequest", + "RelatedPerson", + "RequestGroup", + "ResearchSubject", + "RiskAssessment", + "Schedule", + "ServiceRequest", + "Specimen", + "SupplyDelivery", + "SupplyRequest", + "VisionPrescription" +]; + +function request(url) +{ + return new Promise((resolve, reject) => { + console.log(`Requesting "${url}"`); + Request({ url, json: true }, (error, resp) => { + if (error) { + return reject(error); + } + + if (resp.statusCode >= 400) { + return reject(new Error( + `Requesting "${url}" returned ${resp.statusCode} status code. ${JSON.stringify(resp.body, null, 4)}` + )); + } + + resolve(resp); + }); + }); +} + +function fetchConformance(baseUrl) +{ + const url = String(baseUrl).replace(/\/*$/, "/") + "metadata"; + return request(url).then(res => res.body).catch(ex => { + throw new Error(`Failed to fetch the conformance statement from "${url}". ${ex}`); + }); +} + +function getPatientParam(conformance, resourceType) +{ + const PatientParams = [ + "requester", + "patient", + "subject", + "member", + "actor", + "beneficiary" + ]; + const meta = conformance.rest[0].resource.find(o => o.type === resourceType); + if (!meta) throw new Error("Resource not supported"); + if (resourceType == "Patient" && meta.searchParam.find(x => x.name == "_id")) return "_id"; + let out = PatientParams.find(p => meta.searchParam.find(x => x.name == p)); + + // if (!out) { + // throw new Error("I don't know what param to use for " + resourceType); + // } + return out; +} + +async function init() +{ + for (let { baseUrl, patient } of SERVERS) { + const conformance = await fetchConformance(baseUrl); + + for (let meta of conformance.rest[0].resource) { + if (Compartment.indexOf(meta.type) > -1) { + let paramName = getPatientParam(conformance, meta.type); + if (paramName) + await request(`${baseUrl}/${meta.type}?${paramName}=${patient}`); + } + } + } +} + +init(); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index aab1252a..00000000 --- a/test/test.js +++ /dev/null @@ -1,260 +0,0 @@ -var FhirClient = require('../client/client'); -var SearchSpecification = require('../client/search-specification.js')(); -var sinon = require('sinon'); -var window = require('jsdom').jsdom().createWindow(); -var ns = require('../client/namespace'); -var assert = require('assert'); - -var $ = jQuery = require('../client/jquery'); -var search = SearchSpecification; -var Condition = search.Condition, -Patient = search.Patient; - - -describe('Search Specification', function(){ - - var partial = Patient.given('John'); - - it('should have one clause for each term', function(){ - partial.__getClauses().should.have.lengthOf(1); - }); - - it('should do camelCase function names and dash-erized wire calls', function(){ - - var q = search.Observation .relatedTarget(search.Observation._id("123")); - q.__getClauses()[0].should.eql({ - name: 'related-target:Observation', - value: '123' - }); - - }); - - - it('should allow partial searches to be extended', function(){ - var extended = partial.family('Smith'); - extended.__getClauses().should.have.lengthOf(2); - }); - - it('should represent clauses as name:value dictionaries', function(){ - var first = partial.__getClauses()[0]; - first.should.have.properties({ - 'name': 'given', - 'value': 'John' - }) - }); - - it('should support FHIR disjunction parameters', function(){ - var first = Patient.givenIn('John', 'Bob', ['Paul', 'Fred']).__getClauses()[0]; - first.should.have.properties({ - 'name': 'given', - 'oneOf': ['John', 'Bob', 'Paul', 'Fred'] - }) - }); - - it('should support FHIR conjunction parameters', function(){ - var first = Patient.givenAll('John', 'Bob', ['Paul', 'Fred']).__getClauses(); - first.should.eql([{ - 'name': 'given', - 'value': 'John' - },{ - 'name': 'given', - 'value': 'Bob' - },{ - 'name': 'given', - 'value': 'Paul' - },{ - 'name': 'given', - 'value': 'Fred' - }]) - }); - - - it('should support the :missing modifer universally', function(){ - var q = Patient.familyMissing(true); - q.__getClauses().should.eql([{ - name: 'family:missing', - value: true - }]); - }); - - describe('searching on token params', function(){ - - it('should work via exact string', function(){ - var q = Patient.identifier('http://myhospital|123'); - q.__getClauses().should.eql([{ - name: 'identifier', - value: 'http://myhospital|123' - }]); - }); - - it('should work via two-argument ns + code', function(){ - var q = Patient.identifier(ns.rxnorm, '123'); - q.__getClauses().should.eql([{ - name: 'identifier', - value: 'http://rxnav.nlm.nih.gov/REST/rxcui|123' - }]); - }); - - it('should allow searching with wildcard namespace', function(){ - var q = Patient.identifier(ns.any, '123'); - q.__getClauses().should.eql([{ - name: 'identifier', - value: '123' - }]); - }); - - it('should allow searching with null namespace specified', function(){ - var q = Patient.identifier(ns.none, '123'); - q.__getClauses().should.eql([{ - name: 'identifier', - value: '|123' - }]); - }); - - - }); - - describe('Nesting search params', function(){ - - it('should produce chained queries', function(){ - var q = Condition.onset('>=2010') - .subject( - Patient.given('John').family('Smith') - ); - - - var clauses = q.__getClauses(); - clauses.should.eql([{ - 'name': 'onset', - 'value': '>=2010' - },{ - name:'subject:Patient.given', - value:'John' - },{ - name:'subject:Patient.family', - value:'Smith' - }]); - }); - - it('should optimize _id references to avoid unnecessary chaining', function(){ - var q = Condition.subject( Patient._id("123") ); - var clauses = q.__getClauses(); - clauses.should.eql([{ - 'name': 'subject:Patient', - 'value': '123' - }]); - }); - - it('should work with "or clauses"', function(){ - var q = Condition.subject( Patient._id("123").nameIn("john", "smith") ); - var clauses = q.__getClauses(); - clauses.should.eql([{ - 'name': 'subject:Patient', - 'value': '123' - },{ - 'name': 'subject:Patient.name', - 'oneOf': ["john", "smith"] - }]); - }); - - }); - - -}); - - -describe('client', function(){ - var sandbox; - - beforeEach(function(){ - sandbox = sinon.sandbox.create(); - }); - - afterEach(function(){ - sandbox = sinon.sandbox.restore(); - }); - - - describe('Initialization', function(){ - - it('should require a well-formatted serviceUrl', function(){ - - (function(){ - var client = FhirClient({serviceUrl: 'https://myservice.com/fhir'}); - }).should.not.throw; - - (function(){ - var client = FhirClient({}); - }).should.throw; - - (function(){ - var client = FhirClient({serviceUrl: 'myserver.com/badness'}); - }).should.throw; - - (function(){ - var client = FhirClient({serviceUrl: 'https://myservice.com/fhir/'}); - }).should.throw; - - - }); - - }) - - function stubAjax(req, doneArgs, failArgs) { - sandbox.stub($, 'ajax', function(){ - req.apply(this, arguments); - return { - done: function(cb){ - process.nextTick(function(){ - cb.apply(this, doneArgs); - }); - return this; - }, - fail: function(cb){ - process.nextTick(function(){ - cb.apply(this, failArgs); - }); - return this; - } - }; - }); - } - describe('Search Operation', function(){ - - var client = FhirClient({serviceUrl: 'http://localhost'}); - - it('should issue a search command', function(done){ - stubAjax(function(p){ - p.type.should.equal('GET'); - p.url.should.match(/\/_search$/); - }, [ - require('./fixtures/patient.search.json'), 200 - ]); - - client.search(Patient._idIn("123", "456")).done(function(results, s){ - results.should.have.lengthOf(2); - done() - }); - - }) - }); - - describe('A client with patient context', function(){ - - var client = FhirClient({serviceUrl: 'http://localhost', patientId:'123'}); - - it('should have a patient-specific Conditions api object', function(){ - client.context.patient.Condition.should.be.ok; - }); - it('should not have a patient-specific Practitioner api object', function(){ - assert(undefined === client.context.patient.Practitioner); - }); - it('should have generic Practitioner api object', function(){ - client.api.Practitioner.should.be.ok; - }); - - }); - - -}); - diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..0ecaff57 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + + // Generate source maps for the original TS files. + "sourceMap": true, + + // We want strict validation + "strict" : true, + "noImplicitAny": true, + "alwaysStrict" : true, + + // Just transpile TS to modern JS. Babel will take over from there and + // compile depending on the target environments. + "module" : "CommonJS", + "target" : "ES2019", + "importHelpers": false, + "noEmitHelpers": true, + "types" : ["mocha"] + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules" + ], +} \ No newline at end of file diff --git a/tsconfig.module.json b/tsconfig.module.json new file mode 100644 index 00000000..78dfe2b7 --- /dev/null +++ b/tsconfig.module.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "sourceMap": false, + "noImplicitAny": true, + "module": "CommonJS", + "target": "ES2017", + "importHelpers": false, + "outDir": "dist/lib", + "listEmittedFiles": false, + "declaration": true, + "typeRoots": [] + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules" + ], +} \ No newline at end of file diff --git a/typedoc.js b/typedoc.js new file mode 100644 index 00000000..853dee76 --- /dev/null +++ b/typedoc.js @@ -0,0 +1,74 @@ +module.exports = { + + entryPoints: [ "./src" ], + + // resolve | expand | packages + entryPointStrategy: "expand", + + // Set the name of the project that will be used in the header of the + // template. + name: "FHIRClient", + + // Specifies the location the documentation should be written to. + out: "docs/typedoc", + + // Define patterns for excluded files when specifying paths. + // exclude: ["node_modules"], + + // Define patterns for files that should be considered being external. + // externalPattern: "node_modules", + + // Prevent externally resolved TypeScript files from being documented. + // excludeExternals: true, + + logLevel: "Warn", + + // Ignores private variables and methods + // excludePrivate: false, + + // Ignores protected variables and methods + // excludeProtected: false, + + // Specifies whether categorization will be done at the group level. + // categorizeByGroup: true, + + // Specifies the order in which categories appear. * indicates the relative + // order for categories not in the list. + // categoryOrder: "*", + + // --defaultCategory Specifies the default category for reflections without a category. + // defaultCategory: "fhirclient", + // --disableOutputCheck Should TypeDoc disable the testing and cleaning of the output directory? + // --entryPoint Specifies the fully qualified name of the root symbol. Defaults to global namespace. + // entryPoint: "FHIR", + // --gaID Set the Google Analytics tracking ID and activate tracking code. + // --gaSite Set the site name for Google Analytics. Defaults to `auto`. + // --gitRevision Use specified revision instead of the last revision for linking to GitHub source files. + // --hideGenerator Do not print the TypeDoc link at the end of the page. + // --includes DIRECTORY Specifies the location to look for included documents (use [[include:FILENAME]] in comments). + // --json Specifies the location and file name a json file describing the project is written to. + // --logger Specify the logger that should be used, 'none' or 'console' + // --media DIRECTORY Specifies the location with media files that should be copied to the output directory. + // --options Specify a js option file that should be loaded. If not specified TypeDoc will look for 'typedoc.js' in the current directory. + // --plugin Specify the npm plugins that should be loaded. Omit to load all installed plugins, set to 'none' to load no plugins. + // --readme Path to the readme file that should be displayed on the index page. Pass `none` to disable the index page and start the documentation on the globals page. + readme: "../README.md", + // --theme Specify the path to the theme that should be used or 'default' or 'minimal' to use built-in themes. + // theme: "docs/typedoc-theme" + // --toc Specifies the top level table of contents. + // --tsconfig Specify a typescript config file that should be loaded. If not specified TypeDoc will look for 'tsconfig.json' in the current directory. + + // customCss: "docs/typedoc-theme/assets/css/main.css" + + validation: { + notExported : false, + invalidLink : true, + notDocumented: false + }, + + // intentionallyNotExported: ["InternalClass", "src/other.ts:OtherInternal"], + // requiredToBeDocumented: ["Enum", "Class"], + + includeVersion: true, + +}; diff --git a/vendor/conformance.json b/vendor/conformance.json deleted file mode 100644 index b04c38ef..00000000 --- a/vendor/conformance.json +++ /dev/null @@ -1,5072 +0,0 @@ -{ - "resourceType": "Conformance", - "text": { - "status": "generated", - "div": "

      Base FHIR Conformance Statement (Full)

      This is the base conformance statement for FHIR. It represents a server that provides the full set of functionality defined by FHIR. It is provided to use as a template for system designers to build their own conformance statements from

      Modeserver
      DescriptionAll the functionality defined in FHIR
      Transactiony
      System Historyy
      System Searchy
      Resource TypeProfileReadV-ReadSearchUpdateUpdatesCreateDeleteHistory
      AdverseReactionhttp://hl7.org/fhir/AdverseReactionyyyyyyyy
      Alerthttp://hl7.org/fhir/Alertyyyyyyyy
      AllergyIntolerancehttp://hl7.org/fhir/AllergyIntoleranceyyyyyyyy
      Appointmenthttp://hl7.org/fhir/Appointmentyyyyyyyy
      AppointmentResponsehttp://hl7.org/fhir/AppointmentResponseyyyyyyyy
      Availabilityhttp://hl7.org/fhir/Availabilityyyyyyyyy
      CarePlanhttp://hl7.org/fhir/CarePlanyyyyyyyy
      Compositionhttp://hl7.org/fhir/Compositionyyyyyyyy
      ConceptMaphttp://hl7.org/fhir/ConceptMapyyyyyyyy
      Conditionhttp://hl7.org/fhir/Conditionyyyyyyyy
      Conformancehttp://hl7.org/fhir/Conformanceyyyyyyyy
      Devicehttp://hl7.org/fhir/Deviceyyyyyyyy
      DeviceObservationReporthttp://hl7.org/fhir/DeviceObservationReportyyyyyyyy
      DiagnosticOrderhttp://hl7.org/fhir/DiagnosticOrderyyyyyyyy
      DiagnosticReporthttp://hl7.org/fhir/DiagnosticReportyyyyyyyy
      DocumentManifesthttp://hl7.org/fhir/DocumentManifestyyyyyyyy
      DocumentReferencehttp://hl7.org/fhir/DocumentReferenceyyyyyyyy
      Encounterhttp://hl7.org/fhir/Encounteryyyyyyyy
      FamilyHistoryhttp://hl7.org/fhir/FamilyHistoryyyyyyyyy
      Grouphttp://hl7.org/fhir/Groupyyyyyyyy
      ImagingStudyhttp://hl7.org/fhir/ImagingStudyyyyyyyyy
      Immunizationhttp://hl7.org/fhir/Immunizationyyyyyyyy
      ImmunizationRecommendationhttp://hl7.org/fhir/ImmunizationRecommendationyyyyyyyy
      Listhttp://hl7.org/fhir/Listyyyyyyyy
      Locationhttp://hl7.org/fhir/Locationyyyyyyyy
      Mediahttp://hl7.org/fhir/Mediayyyyyyyy
      Medicationhttp://hl7.org/fhir/Medicationyyyyyyyy
      MedicationAdministrationhttp://hl7.org/fhir/MedicationAdministrationyyyyyyyy
      MedicationDispensehttp://hl7.org/fhir/MedicationDispenseyyyyyyyy
      MedicationPrescriptionhttp://hl7.org/fhir/MedicationPrescriptionyyyyyyyy
      MedicationStatementhttp://hl7.org/fhir/MedicationStatementyyyyyyyy
      MessageHeaderhttp://hl7.org/fhir/MessageHeaderyyyyyyyy
      Namespacehttp://hl7.org/fhir/Namespaceyyyyyyyy
      Observationhttp://hl7.org/fhir/Observationyyyyyyyy
      OperationOutcomehttp://hl7.org/fhir/OperationOutcomeyyyyyyyy
      Orderhttp://hl7.org/fhir/Orderyyyyyyyy
      OrderResponsehttp://hl7.org/fhir/OrderResponseyyyyyyyy
      Organizationhttp://hl7.org/fhir/Organizationyyyyyyyy
      Otherhttp://hl7.org/fhir/Otheryyyyyyyy
      Patienthttp://hl7.org/fhir/Patientyyyyyyyy
      Practitionerhttp://hl7.org/fhir/Practitioneryyyyyyyy
      Procedurehttp://hl7.org/fhir/Procedureyyyyyyyy
      Profilehttp://hl7.org/fhir/Profileyyyyyyyy
      Provenancehttp://hl7.org/fhir/Provenanceyyyyyyyy
      Queryhttp://hl7.org/fhir/Queryyyyyyyyy
      Questionnairehttp://hl7.org/fhir/Questionnaireyyyyyyyy
      RelatedPersonhttp://hl7.org/fhir/RelatedPersonyyyyyyyy
      SecurityEventhttp://hl7.org/fhir/SecurityEventyyyyyyyy
      Slothttp://hl7.org/fhir/Slotyyyyyyyy
      Specimenhttp://hl7.org/fhir/Specimenyyyyyyyy
      Substancehttp://hl7.org/fhir/Substanceyyyyyyyy
      Supplyhttp://hl7.org/fhir/Supplyyyyyyyyy
      ValueSethttp://hl7.org/fhir/ValueSetyyyyyyyy
      " - }, - "identifier": "http://hl7.org/fhir/conformance-base", - "version": "0.1.0-????", - "name": "Base FHIR Conformance Statement (Full)", - "publisher": "FHIR Project Team", - "telecom": [ - { - "system": "url", - "value": "http://hl7.org/fhir" - } - ], - "description": "This is the base conformance statement for FHIR. It represents a server that provides the full set of functionality defined by FHIR. It is provided to use as a template for system designers to build their own conformance statements from", - "status": "draft", - "date": "2014-04-28T17:37:56.075-00:00", - "fhirVersion": "0.1.0", - "acceptUnknown": false, - "format": [ - "xml", - "json" - ], - "rest": [ - { - "mode": "server", - "documentation": "All the functionality defined in FHIR", - "resource": [ - { - "type": "AdverseReaction", - "profile": { - "reference": "http://hl7.org/fhir/AdverseReaction" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "substance", - "definition": "http://hl7.org/fhir/profiles/AdverseReaction", - "type": "reference", - "documentation": "The name or code of the substance that produces the sensitivity" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/AdverseReaction", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/AdverseReaction", - "type": "reference", - "documentation": "The subject that the sensitivity is about" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/AdverseReaction", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/AdverseReaction", - "type": "date", - "documentation": "The date of the reaction" - }, - { - "name": "symptom", - "definition": "http://hl7.org/fhir/profiles/AdverseReaction", - "type": "token", - "documentation": "One of the symptoms of the reaction" - } - ] - }, - { - "type": "Alert", - "profile": { - "reference": "http://hl7.org/fhir/Alert" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Alert", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Alert", - "type": "reference", - "documentation": "The identity of a subject to list alerts for" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Alert", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "AllergyIntolerance", - "profile": { - "reference": "http://hl7.org/fhir/AllergyIntolerance" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "substance", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "reference", - "documentation": "The name or code of the substance that produces the sensitivity" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "token", - "documentation": "The status of the sensitivity" - }, - { - "name": "recorder", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "reference", - "documentation": "Who recorded the sensitivity" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "reference", - "documentation": "The subject that the sensitivity is about" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "date", - "documentation": "Recorded date/time." - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/AllergyIntolerance", - "type": "token", - "documentation": "The type of sensitivity" - } - ] - }, - { - "type": "Appointment", - "profile": { - "reference": "http://hl7.org/fhir/Appointment" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "partstatus", - "definition": "http://hl7.org/fhir/profiles/Appointment", - "type": "token", - "documentation": "The Participation status of the subject, or other participant on the appointment" - }, - { - "name": "individual", - "definition": "http://hl7.org/fhir/profiles/Appointment", - "type": "reference", - "documentation": "Any one of the individuals participating in the appointment" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Appointment", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Appointment", - "type": "string", - "documentation": "The overall status of the appointment" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Appointment", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Appointment", - "type": "date", - "documentation": "Appointment date/time." - } - ] - }, - { - "type": "AppointmentResponse", - "profile": { - "reference": "http://hl7.org/fhir/AppointmentResponse" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "partstatus", - "definition": "http://hl7.org/fhir/profiles/AppointmentResponse", - "type": "string", - "documentation": "The overall status of the appointment" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/AppointmentResponse", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/AppointmentResponse", - "type": "reference", - "documentation": "The subject that the appointment response replies for" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/AppointmentResponse", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "appointment", - "definition": "http://hl7.org/fhir/profiles/AppointmentResponse", - "type": "reference", - "documentation": "The appointment that the response is attached to" - } - ] - }, - { - "type": "Availability", - "profile": { - "reference": "http://hl7.org/fhir/Availability" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "individual", - "definition": "http://hl7.org/fhir/profiles/Availability", - "type": "reference", - "documentation": "The individual to find an availability for" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Availability", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Availability", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Availability", - "type": "date", - "documentation": "Search for availability resources that have a period that contains this date specified" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Availability", - "type": "token", - "documentation": "The type of appointments that can be booked into associated slot(s)" - } - ] - }, - { - "type": "CarePlan", - "profile": { - "reference": "http://hl7.org/fhir/CarePlan" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "activitycode", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "token", - "documentation": "Detail type of activity" - }, - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "reference", - "documentation": "Who care plan is for" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "condition", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "reference", - "documentation": "Health issues this plan addresses" - }, - { - "name": "activitydetail", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "reference", - "documentation": "Activity details defined in specific resource" - }, - { - "name": "activitydate", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "date", - "documentation": "Specified date occurs within period specified by CarePlan.activity.timingSchedule" - }, - { - "name": "participant", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "reference", - "documentation": "Who is involved" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/CarePlan", - "type": "date", - "documentation": "Time period plan covers" - } - ] - }, - { - "type": "Composition", - "profile": { - "reference": "http://hl7.org/fhir/Composition" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "author", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "reference", - "documentation": "Who and/or what authored the composition" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "attester", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "reference", - "documentation": "Who attested the composition" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "reference", - "documentation": "Who and/or what the composition is about" - }, - { - "name": "section-content", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "reference", - "documentation": "The actual data for the section" - }, - { - "name": "context", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "Code(s) that apply to the event being documented" - }, - { - "name": "class", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "Categorization of Composition" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "section-type", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "Classification of section (recommended)" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "date", - "documentation": "Composition editing time" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "Kind of composition (LOINC if possible)" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Composition", - "type": "token", - "documentation": "Logical identifier of composition (version-independent)" - } - ] - }, - { - "type": "ConceptMap", - "profile": { - "reference": "http://hl7.org/fhir/ConceptMap" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "dependson", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "Reference to element/field/valueset provides the context" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "Status of the concept map" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "date", - "documentation": "The concept map publication date" - }, - { - "name": "version", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "The version identifier of the concept map" - }, - { - "name": "publisher", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "string", - "documentation": "Name of the publisher of the concept map" - }, - { - "name": "product", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "Reference to element/field/valueset provides the context" - }, - { - "name": "system", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "The system for any destination concepts mapped by this map" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "source", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "reference", - "documentation": "The system for any concepts mapped by this concept map" - }, - { - "name": "description", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "string", - "documentation": "Text search in the description of the concept map" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "string", - "documentation": "Name of the concept map" - }, - { - "name": "target", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "reference", - "documentation": "Provides context to the mappings" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/ConceptMap", - "type": "token", - "documentation": "The identifier of the concept map" - } - ] - }, - { - "type": "Condition", - "profile": { - "reference": "http://hl7.org/fhir/Condition" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "asserter", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "reference", - "documentation": "Person who asserts this condition" - }, - { - "name": "location", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "Location - may include laterality" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "The status of the condition" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "reference", - "documentation": "Who has the condition?" - }, - { - "name": "onset", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "date", - "documentation": "When the Condition started (if started on a date)" - }, - { - "name": "evidence", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "Manifestation/symptom" - }, - { - "name": "severity", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "The severity of the condition" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "Code for the condition" - }, - { - "name": "encounter", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "reference", - "documentation": "Encounter when condition first asserted" - }, - { - "name": "date-asserted", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "date", - "documentation": "When first detected/suspected/entered" - }, - { - "name": "stage", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "Simple summary (disease specific)" - }, - { - "name": "related-code", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "Relationship target by means of a predefined code" - }, - { - "name": "category", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "The category of the condition" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "related-item", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "reference", - "documentation": "Relationship target resource" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Condition", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "Conformance", - "profile": { - "reference": "http://hl7.org/fhir/Conformance" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "The current status of the conformance statement" - }, - { - "name": "resource", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "Name of a resource mentioned in a conformance statement" - }, - { - "name": "security", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "Information about security of implementation" - }, - { - "name": "format", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "formats supported (xml | json | mime type)" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "date", - "documentation": "The conformance statement publication date" - }, - { - "name": "mode", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "Mode - restful (server/client) or messaging (sender/receiver)" - }, - { - "name": "version", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "The version identifier of the conformance statement" - }, - { - "name": "publisher", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "string", - "documentation": "Name of the publisher of the conformance statement" - }, - { - "name": "software", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "string", - "documentation": "Part of a the name of a software application" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "event", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "Event code in a conformance statement" - }, - { - "name": "description", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "string", - "documentation": "Text search in the description of the conformance statement" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "string", - "documentation": "Name of the conformance statement" - }, - { - "name": "supported-profile", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "reference", - "documentation": "Profiles supported by the system" - }, - { - "name": "fhirversion", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "The version of FHIR" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "token", - "documentation": "The identifier of the conformance statement" - }, - { - "name": "profile", - "definition": "http://hl7.org/fhir/profiles/Conformance", - "type": "reference", - "documentation": "A profile id invoked in a conformance statement" - } - ] - }, - { - "type": "Device", - "profile": { - "reference": "http://hl7.org/fhir/Device" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "organization", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "reference", - "documentation": "The organization responsible for the device" - }, - { - "name": "model", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "string", - "documentation": "The model of the device" - }, - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "reference", - "documentation": "Patient information, if the resource is affixed to a person" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "location", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "reference", - "documentation": "A location, where the resource is found" - }, - { - "name": "manufacturer", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "string", - "documentation": "The manufacturer of the device" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "udi", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "string", - "documentation": "FDA Mandated Unique Device Identifier" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "token", - "documentation": "The type of the device" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Device", - "type": "token", - "documentation": "Instance id from manufacturer, owner and others" - } - ] - }, - { - "type": "DeviceObservationReport", - "profile": { - "reference": "http://hl7.org/fhir/DeviceObservationReport" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "observation", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "reference", - "documentation": "The data for the metric" - }, - { - "name": "source", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "reference", - "documentation": "Identifies/describes where the data came from" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "reference", - "documentation": "Subject of the measurement" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "token", - "documentation": "The compatment code" - }, - { - "name": "channel", - "definition": "http://hl7.org/fhir/profiles/DeviceObservationReport", - "type": "token", - "documentation": "The channel code" - } - ] - }, - { - "type": "DiagnosticOrder", - "profile": { - "reference": "http://hl7.org/fhir/DiagnosticOrder" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "orderer", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "reference", - "documentation": "Who ordered the test" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "requested | received | accepted | in progress | review | completed | suspended | rejected | failed" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "reference", - "documentation": "Who and/or what test is about" - }, - { - "name": "item-status", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "requested | received | accepted | in progress | review | completed | suspended | rejected | failed" - }, - { - "name": "event-status", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "requested | received | accepted | in progress | review | completed | suspended | rejected | failed" - }, - { - "name": "actor", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "reference", - "documentation": "Who recorded or did this" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "Code to indicate the item (test or panel) being ordered" - }, - { - "name": "encounter", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "reference", - "documentation": "The encounter that this diagnostic order is associated with" - }, - { - "name": "item-past-status", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "requested | received | accepted | in progress | review | completed | suspended | rejected | failed" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "bodysite", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "Location of requested test (if applicable)" - }, - { - "name": "item-date", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "date", - "documentation": "The date at which the event happened" - }, - { - "name": "specimen", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "reference", - "documentation": "If the whole order relates to specific specimens" - }, - { - "name": "event-status-date", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "composite", - "documentation": "A combination of past-status and date" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "event-date", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "date", - "documentation": "The date at which the event happened" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "token", - "documentation": "Identifiers assigned to this order" - }, - { - "name": "item-status-date", - "definition": "http://hl7.org/fhir/profiles/DiagnosticOrder", - "type": "composite", - "documentation": "A combination of item-past-status and item-date" - } - ] - }, - { - "type": "DiagnosticReport", - "profile": { - "reference": "http://hl7.org/fhir/DiagnosticReport" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "result", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "reference", - "documentation": "Link to an atomic result (observation resource)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "The status of the report" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "reference", - "documentation": "The subject of the report" - }, - { - "name": "issued", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "date", - "documentation": "When the report was issued" - }, - { - "name": "diagnosis", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "A coded diagnosis on the report" - }, - { - "name": "image", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "reference", - "documentation": "Reference to the image source" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "date", - "documentation": "The clinically relevant time of the report" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "request", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "reference", - "documentation": "What was requested" - }, - { - "name": "specimen", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "reference", - "documentation": "The specimen details" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "The name of the report (e.g. the code for the report as a whole, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result)" - }, - { - "name": "service", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "Which diagnostic discipline/department created the report" - }, - { - "name": "performer", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "reference", - "documentation": "Who was the source of the report (organization)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/DiagnosticReport", - "type": "token", - "documentation": "An identifier for the report" - } - ] - }, - { - "type": "DocumentManifest", - "profile": { - "reference": "http://hl7.org/fhir/DocumentManifest" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "content", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "reference", - "documentation": "Contents of this set of documents" - }, - { - "name": "author", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "reference", - "documentation": "Who and/or what authored the document" - }, - { - "name": "supersedes", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "reference", - "documentation": "If this document manifest replaces another" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "token", - "documentation": "current | superceded | entered in error" - }, - { - "name": "created", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "date", - "documentation": "When this document manifest created" - }, - { - "name": "confidentiality", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "token", - "documentation": "Sensitivity of set of documents" - }, - { - "name": "description", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "string", - "documentation": "Human-readable description (title)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "reference", - "documentation": "The subject of the set of documents" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "token", - "documentation": "What kind of document set this is" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "token", - "documentation": "Unique Identifier for the set of documents" - }, - { - "name": "recipient", - "definition": "http://hl7.org/fhir/profiles/DocumentManifest", - "type": "reference", - "documentation": "Intended to get notified about this set of documents" - } - ] - }, - { - "type": "DocumentReference", - "profile": { - "reference": "http://hl7.org/fhir/DocumentReference" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "location", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "string", - "documentation": "Where to access the document" - }, - { - "name": "indexed", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "date", - "documentation": "When this document reference created" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "current | superceded | entered in error" - }, - { - "name": "relatesto", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "reference", - "documentation": "Target of the relationship" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "reference", - "documentation": "Who|what is the subject of the document" - }, - { - "name": "relation", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "replaces | transforms | signs | appends" - }, - { - "name": "class", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "Categorization of Document" - }, - { - "name": "format", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "Format/content rules for the document" - }, - { - "name": "period", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "date", - "documentation": "Time of service that is being documented" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "What kind of document this is (LOINC if possible)" - }, - { - "name": "authenticator", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "reference", - "documentation": "Who/What authenticated the document" - }, - { - "name": "size", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "number", - "documentation": "Size of the document in bytes" - }, - { - "name": "relationship", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "composite", - "documentation": "Combination of relation and relatesTo" - }, - { - "name": "author", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "reference", - "documentation": "Who and/or what authored the document" - }, - { - "name": "custodian", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "reference", - "documentation": "Org which maintains the document" - }, - { - "name": "facility", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "Kind of facility where patient was seen" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "created", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "date", - "documentation": "Document creation time" - }, - { - "name": "event", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "Main Clinical Acts Documented" - }, - { - "name": "confidentiality", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "Sensitivity of source document" - }, - { - "name": "description", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "string", - "documentation": "Human-readable description (title)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "language", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "The marked primary language for the document" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/DocumentReference", - "type": "token", - "documentation": "Master Version Specific Identifier" - } - ] - }, - { - "type": "Encounter", - "profile": { - "reference": "http://hl7.org/fhir/Encounter" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "location", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "reference", - "documentation": "Location the encounter takes place" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "token", - "documentation": "planned | in progress | onleave | finished | cancelled" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "reference", - "documentation": "The patient present at the encounter" - }, - { - "name": "indication", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "reference", - "documentation": "Reason the encounter takes place (resource)" - }, - { - "name": "length", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "number", - "documentation": "Length of encounter in days" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "date", - "documentation": "A date within the period the Encounter lasted" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "token", - "documentation": "Identifier(s) by which this encounter is known" - }, - { - "name": "location-period", - "definition": "http://hl7.org/fhir/profiles/Encounter", - "type": "date", - "documentation": "Time period during which the patient was present at the location" - } - ] - }, - { - "type": "FamilyHistory", - "profile": { - "reference": "http://hl7.org/fhir/FamilyHistory" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/FamilyHistory", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/FamilyHistory", - "type": "reference", - "documentation": "The identity of a subject to list family history items for" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/FamilyHistory", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "Group", - "profile": { - "reference": "http://hl7.org/fhir/Group" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "member", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "reference", - "documentation": "Who is in group" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "characteristic-value", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "composite", - "documentation": "A composite of both characteristic and value" - }, - { - "name": "value", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "Value held by characteristic" - }, - { - "name": "actual", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "Descriptive or actual" - }, - { - "name": "exclude", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "Group includes or excludes" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "The kind of resources contained" - }, - { - "name": "characteristic", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "Kind of characteristic" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "The type of resources the group contains" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Group", - "type": "token", - "documentation": "Unique id" - } - ] - }, - { - "type": "ImagingStudy", - "profile": { - "reference": "http://hl7.org/fhir/ImagingStudy" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "uid", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "Formal identifier for this instance (0008,0018)" - }, - { - "name": "series", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "The series id for the image" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "bodysite", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "Body part examined (Map from 0018,0015)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "reference", - "documentation": "Who the study is about" - }, - { - "name": "accession", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "The accession id for the image" - }, - { - "name": "study", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "The study id for the image" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "modality", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "The modality of the image" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "date", - "documentation": "The date the study was done was taken" - }, - { - "name": "dicom-class", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "token", - "documentation": "DICOM class type (0008,0016)" - }, - { - "name": "size", - "definition": "http://hl7.org/fhir/profiles/ImagingStudy", - "type": "number", - "documentation": "The size of the image in MB - may include > or < in the value" - } - ] - }, - { - "type": "Immunization", - "profile": { - "reference": "http://hl7.org/fhir/Immunization" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "reaction", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "reference", - "documentation": "Additional information on reaction" - }, - { - "name": "requester", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "reference", - "documentation": "The practitioner who ordered the vaccination" - }, - { - "name": "dose-sequence", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "number", - "documentation": "What dose number within series?" - }, - { - "name": "vaccine-type", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "Vaccine Product Type Administered" - }, - { - "name": "location", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "reference", - "documentation": "The service delivery location or facility in which the vaccine was / was to be administered" - }, - { - "name": "reason", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "Why immunization occurred" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "reference", - "documentation": "The subject of the vaccination event / refusal" - }, - { - "name": "reaction-date", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "date", - "documentation": "When did reaction start?" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "date", - "documentation": "Vaccination Administration / Refusal Date" - }, - { - "name": "lot-number", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "string", - "documentation": "Vaccine Lot Number" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "manufacturer", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "reference", - "documentation": "Vaccine Manufacturer" - }, - { - "name": "performer", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "reference", - "documentation": "The practitioner who administered the vaccination" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "refused", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "Was immunization refused?" - }, - { - "name": "refusal-reason", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "Explanation of refusal / exemption" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Immunization", - "type": "token", - "documentation": "Business identifier" - } - ] - }, - { - "type": "ImmunizationRecommendation", - "profile": { - "reference": "http://hl7.org/fhir/ImmunizationRecommendation" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "information", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "reference", - "documentation": "Patient observations supporting recommendation" - }, - { - "name": "dose-sequence", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "token", - "documentation": "Number of dose within sequence" - }, - { - "name": "support", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "reference", - "documentation": "Past immunizations supporting recommendation" - }, - { - "name": "vaccine-type", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "token", - "documentation": "Vaccine recommendation applies to" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "token", - "documentation": "Vaccine administration status" - }, - { - "name": "dose-number", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "number", - "documentation": "Recommended dose number" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "reference", - "documentation": "Who this profile is for" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "date", - "documentation": "Date recommendation created" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/ImmunizationRecommendation", - "type": "token", - "documentation": "Business identifier" - } - ] - }, - { - "type": "List", - "profile": { - "reference": "http://hl7.org/fhir/List" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "source", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "reference", - "documentation": "Who and/or what defined the list contents" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "reference", - "documentation": "If all resources have the same subject" - }, - { - "name": "item", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "reference", - "documentation": "Actual entry" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "token", - "documentation": "What the purpose of this list is" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "date", - "documentation": "When the list was prepared" - }, - { - "name": "empty-reason", - "definition": "http://hl7.org/fhir/profiles/List", - "type": "token", - "documentation": "Why list is empty" - } - ] - }, - { - "type": "Location", - "profile": { - "reference": "http://hl7.org/fhir/Location" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "near", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "The coordinates expressed as [lat],[long] (using KML, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)" - }, - { - "name": "partof", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "reference", - "documentation": "The location of which this location is a part" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "Searches for locations with a specific kind of status" - }, - { - "name": "address", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "string", - "documentation": "A (part of the) address of the location" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "string", - "documentation": "A (portion of the) name of the location" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "near-distance", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "A distance quantity to limit the near search to locations within a specific distance" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "A code for the type of location" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Location", - "type": "token", - "documentation": "Unique code or number identifying the location to its users" - } - ] - }, - { - "type": "Media", - "profile": { - "reference": "http://hl7.org/fhir/Media" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "reference", - "documentation": "Who/What this Media is a record of" - }, - { - "name": "subtype", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "token", - "documentation": "The type of acquisition equipment/process" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "view", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "token", - "documentation": "Imaging view e.g Lateral or Antero-posterior" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "date", - "documentation": "When the media was taken/recorded (end)" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "token", - "documentation": "photo | video | audio" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "token", - "documentation": "Identifier(s) for the image" - }, - { - "name": "operator", - "definition": "http://hl7.org/fhir/profiles/Media", - "type": "reference", - "documentation": "The person who generated the image" - } - ] - }, - { - "type": "Medication", - "profile": { - "reference": "http://hl7.org/fhir/Medication" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "content", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "reference", - "documentation": "A product in the package" - }, - { - "name": "form", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "token", - "documentation": "powder | tablets | carton +" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "container", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "token", - "documentation": "E.g. box, vial, blister-pack" - }, - { - "name": "manufacturer", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "reference", - "documentation": "Manufacturer of the item" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "string", - "documentation": "Common / Commercial name" - }, - { - "name": "ingredient", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "reference", - "documentation": "The product contained" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/Medication", - "type": "token", - "documentation": "Codes that identify this medication" - } - ] - }, - { - "type": "MedicationAdministration", - "profile": { - "reference": "http://hl7.org/fhir/MedicationAdministration" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "medication", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "reference", - "documentation": "Return administrations of this medication" - }, - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "reference", - "documentation": "The identity of a patient to list administrations for" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "token", - "documentation": "MedicationAdministration event status (for example one of active/paused/completed/nullified)" - }, - { - "name": "prescription", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "reference", - "documentation": "The identity of a prescription to list administrations from" - }, - { - "name": "device", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "reference", - "documentation": "Return administrations with this administration device identity" - }, - { - "name": "notgiven", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "token", - "documentation": "Administrations that were not made" - }, - { - "name": "whengiven", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "date", - "documentation": "Date of administration" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "encounter", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "reference", - "documentation": "Return administrations that share this encounter" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/MedicationAdministration", - "type": "token", - "documentation": "Return administrations with this external identity" - } - ] - }, - { - "type": "MedicationDispense", - "profile": { - "reference": "http://hl7.org/fhir/MedicationDispense" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "medication", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "reference", - "documentation": "Returns dispenses of this medicine" - }, - { - "name": "prescription", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "reference", - "documentation": "The identity of a prescription to list dispenses from" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "token", - "documentation": "Status of the dispense" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "token", - "documentation": "Return all dispenses of a specific type" - }, - { - "name": "destination", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "reference", - "documentation": "Return dispenses that should be sent to a secific destination" - }, - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "reference", - "documentation": "The identity of a patient to list dispenses for" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "responsibleparty", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "reference", - "documentation": "Return all dispenses with the specified responsible party" - }, - { - "name": "dispenser", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "reference", - "documentation": "Return all dispenses performed by a specific indiividual" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "token", - "documentation": "Return dispenses with this external identity" - }, - { - "name": "whenprepared", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "date", - "documentation": "Date when medication prepared" - }, - { - "name": "whenhandedover", - "definition": "http://hl7.org/fhir/profiles/MedicationDispense", - "type": "date", - "documentation": "Date when medication handed over to patient (outpatient setting), or supplied to ward or clinic (inpatient setting)" - } - ] - }, - { - "type": "MedicationPrescription", - "profile": { - "reference": "http://hl7.org/fhir/MedicationPrescription" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "medication", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "reference", - "documentation": "Code for medicine or text in medicine name" - }, - { - "name": "datewritten", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "date", - "documentation": "Return prescriptions written on this date" - }, - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "reference", - "documentation": "The identity of a patient to list dispenses for" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "token", - "documentation": "Status of the prescription" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "encounter", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "reference", - "documentation": "Return prescriptions with this encounter identity" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/MedicationPrescription", - "type": "token", - "documentation": "Return prescriptions with this external identity" - } - ] - }, - { - "type": "MedicationStatement", - "profile": { - "reference": "http://hl7.org/fhir/MedicationStatement" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "medication", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "reference", - "documentation": "Code for medicine or text in medicine name" - }, - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "reference", - "documentation": "The identity of a patient to list administrations for" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "device", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "reference", - "documentation": "Return administrations with this administration device identity" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "when-given", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "date", - "documentation": "Date of administration" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/MedicationStatement", - "type": "token", - "documentation": "Return administrations with this external identity" - } - ] - }, - { - "type": "MessageHeader", - "profile": { - "reference": "http://hl7.org/fhir/MessageHeader" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/MessageHeader", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/MessageHeader", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "Namespace", - "profile": { - "reference": "http://hl7.org/fhir/Namespace" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Namespace", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Namespace", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "Observation", - "profile": { - "reference": "http://hl7.org/fhir/Observation" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "value-string", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "string", - "documentation": "The value of the observation, if the value is a string, and also searches in CodeableConcept.text" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "The status of the observation" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "reference", - "documentation": "The subject that the observation is about" - }, - { - "name": "value-concept", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "The value of the observation, if the value is a CodeableConcept" - }, - { - "name": "reliability", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "The reliability of the observation" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "date", - "documentation": "Obtained date/time. If the obtained element is a period, a date that falls in the period" - }, - { - "name": "name-value-[x]", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "composite", - "documentation": "Both name and one of the value parameters" - }, - { - "name": "related-target", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "reference", - "documentation": "Observation that is related to this one" - }, - { - "name": "related", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "composite", - "documentation": "Related Observations - search on related-type and related-target together" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "specimen", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "reference", - "documentation": "Specimen used for this observation" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "The name of the observation type" - }, - { - "name": "related-type", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "has-component | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by" - }, - { - "name": "performer", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "reference", - "documentation": "Who and/or what performed the observation" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "value-quantity", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "quantity", - "documentation": "The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)" - }, - { - "name": "value-date", - "definition": "http://hl7.org/fhir/profiles/Observation", - "type": "date", - "documentation": "The value of the observation, if the value is a Period" - } - ] - }, - { - "type": "OperationOutcome", - "profile": { - "reference": "http://hl7.org/fhir/OperationOutcome" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/OperationOutcome", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/OperationOutcome", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "Order", - "profile": { - "reference": "http://hl7.org/fhir/Order" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "authority", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "reference", - "documentation": "If required by policy" - }, - { - "name": "detail", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "reference", - "documentation": "What action is being ordered" - }, - { - "name": "source", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "reference", - "documentation": "Who initiated the order" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "reference", - "documentation": "Patient this order is about" - }, - { - "name": "when", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "date", - "documentation": "A formal schedule" - }, - { - "name": "target", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "reference", - "documentation": "Who is intended to fulfill the order" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "when_code", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "token", - "documentation": "Code specifies when request should be done. The code may simply be a priority code" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Order", - "type": "date", - "documentation": "When the order was made" - } - ] - }, - { - "type": "OrderResponse", - "profile": { - "reference": "http://hl7.org/fhir/OrderResponse" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "fulfillment", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "reference", - "documentation": "Details of the outcome of performing the order" - }, - { - "name": "request", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "reference", - "documentation": "The order that this is a response to" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "token", - "documentation": "pending | review | rejected | error | accepted | cancelled | replaced | aborted | complete" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "date", - "documentation": "When the response was made" - }, - { - "name": "who", - "definition": "http://hl7.org/fhir/profiles/OrderResponse", - "type": "reference", - "documentation": "Who made the response" - } - ] - }, - { - "type": "Organization", - "profile": { - "reference": "http://hl7.org/fhir/Organization" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "phonetic", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "string", - "documentation": "A portion of the organization's name using some kind of phonetic matching algorithm" - }, - { - "name": "partof", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "reference", - "documentation": "Search all organizations that are part of the given organization" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "string", - "documentation": "A portion of the organization's name" - }, - { - "name": "active", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "token", - "documentation": "Whether the organization's record is active" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "token", - "documentation": "A code for the type of organization" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Organization", - "type": "token", - "documentation": "Any identifier for the organization (not the accreditation issuer's identifier)" - } - ] - }, - { - "type": "Other", - "profile": { - "reference": "http://hl7.org/fhir/Other" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Other", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "created", - "definition": "http://hl7.org/fhir/profiles/Other", - "type": "date", - "documentation": "When created" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Other", - "type": "reference", - "documentation": "Identifies the" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Other", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/Other", - "type": "token", - "documentation": "Kind of Resource" - } - ] - }, - { - "type": "Patient", - "profile": { - "reference": "http://hl7.org/fhir/Patient" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "animal-breed", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "The breed for animal patients" - }, - { - "name": "phonetic", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "string", - "documentation": "A portion of either family or given name using some kind of phonetic matching algorithm" - }, - { - "name": "link", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "reference", - "documentation": "All patients linked to the given patient" - }, - { - "name": "provider", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "reference", - "documentation": "The organization at which this person is a patient" - }, - { - "name": "animal-species", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "The species for animal patients" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "given", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "string", - "documentation": "A portion of the given name of the patient" - }, - { - "name": "address", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "string", - "documentation": "An address in any kind of address/part of the patient" - }, - { - "name": "family", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "string", - "documentation": "A portion of the family name of the patient" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "string", - "documentation": "A portion of either family or given name of the patient" - }, - { - "name": "telecom", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "string", - "documentation": "The value in any kind of telecom details of the patient" - }, - { - "name": "birthdate", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "date", - "documentation": "The patient's date of birth" - }, - { - "name": "active", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "Whether the patient record is active" - }, - { - "name": "gender", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "Gender of the patient" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "language", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "Language code (irrespective of use value)" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Patient", - "type": "token", - "documentation": "A patient identifier" - } - ] - }, - { - "type": "Practitioner", - "profile": { - "reference": "http://hl7.org/fhir/Practitioner" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "organization", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "reference", - "documentation": "The identity of the organization the practitioner represents / acts on behalf of" - }, - { - "name": "phonetic", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "string", - "documentation": "A portion of either family or given name using some kind of phonetic matching algorithm" - }, - { - "name": "given", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "string", - "documentation": "A portion of the given name" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "address", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "string", - "documentation": "An address in any kind of address/part" - }, - { - "name": "family", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "string", - "documentation": "A portion of the family name" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "string", - "documentation": "A portion of either family or given name" - }, - { - "name": "telecom", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "string", - "documentation": "The value in any kind of contact" - }, - { - "name": "gender", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "token", - "documentation": "Gender of the practitioner" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Practitioner", - "type": "token", - "documentation": "A practitioner's Identifier" - } - ] - }, - { - "type": "Procedure", - "profile": { - "reference": "http://hl7.org/fhir/Procedure" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Procedure", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Procedure", - "type": "reference", - "documentation": "The identity of a patient to list procedures for" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Procedure", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Procedure", - "type": "date", - "documentation": "The date the procedure was performed on" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Procedure", - "type": "token", - "documentation": "Type of procedure" - } - ] - }, - { - "type": "Profile", - "profile": { - "reference": "http://hl7.org/fhir/Profile" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "The current status of the profile" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "A code for the profile in the format uri::code (server may choose to do subsumption)" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "Type of resource that is constrained in the profile" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "date", - "documentation": "The profile publication date" - }, - { - "name": "version", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "The version identifier of the profile" - }, - { - "name": "publisher", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "string", - "documentation": "Name of the publisher of the profile" - }, - { - "name": "extension", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "An extension code (use or definition)" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "valueset", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "reference", - "documentation": "A vocabulary binding code" - }, - { - "name": "description", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "string", - "documentation": "Text search in the description of the profile" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "string", - "documentation": "Name of the profile" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Profile", - "type": "token", - "documentation": "The identifier of the profile" - } - ] - }, - { - "type": "Provenance", - "profile": { - "reference": "http://hl7.org/fhir/Provenance" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "location", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "reference", - "documentation": "Where the activity occurred, if relevant" - }, - { - "name": "start", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "date", - "documentation": "Starting time with inclusive boundary" - }, - { - "name": "partytype", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "token", - "documentation": "e.g. Resource | Person | Application | Record | Document +" - }, - { - "name": "target", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "reference", - "documentation": "Target resource(s) (usually version specific)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "party", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "token", - "documentation": "Identity of agent (urn or url)" - }, - { - "name": "end", - "definition": "http://hl7.org/fhir/profiles/Provenance", - "type": "date", - "documentation": "End time with inclusive boundary, if not ongoing" - } - ] - }, - { - "type": "Query", - "profile": { - "reference": "http://hl7.org/fhir/Query" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "response", - "definition": "http://hl7.org/fhir/profiles/Query", - "type": "token", - "documentation": "Links response to source query" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Query", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Query", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Query", - "type": "token", - "documentation": "Links query and its response(s)" - } - ] - }, - { - "type": "Questionnaire", - "profile": { - "reference": "http://hl7.org/fhir/Questionnaire" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "author", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "reference", - "documentation": "The author of the questionnaire" - }, - { - "name": "authored", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "date", - "documentation": "When the questionnaire was authored" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "token", - "documentation": "The status of the questionnaire" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "reference", - "documentation": "The subject of the questionnaire" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "token", - "documentation": "Name of the questionnaire" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "encounter", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "reference", - "documentation": "Encounter during which questionnaire was authored" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Questionnaire", - "type": "token", - "documentation": "An identifier for the questionnaire" - } - ] - }, - { - "type": "RelatedPerson", - "profile": { - "reference": "http://hl7.org/fhir/RelatedPerson" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "reference", - "documentation": "The patient this person is related to" - }, - { - "name": "phonetic", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "string", - "documentation": "A portion of name using some kind of phonetic matching algorithm" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "address", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "string", - "documentation": "An address in any kind of address/part" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "string", - "documentation": "A portion of name in any name part" - }, - { - "name": "telecom", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "string", - "documentation": "The value in any kind of contact" - }, - { - "name": "gender", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "token", - "documentation": "Gender of the person" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/RelatedPerson", - "type": "token", - "documentation": "A patient Identifier" - } - ] - }, - { - "type": "SecurityEvent", - "profile": { - "reference": "http://hl7.org/fhir/SecurityEvent" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "site", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Logical source location within the enterprise" - }, - { - "name": "desc", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "string", - "documentation": "Instance-specific descriptor for Object" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Type/identifier of event" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "date", - "documentation": "Time when the event occurred on source" - }, - { - "name": "reference", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "reference", - "documentation": "Specific instance of resource (e.g. versioned)" - }, - { - "name": "identity", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Specific instance of object (e.g. versioned)" - }, - { - "name": "altid", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Alternative User id e.g. authentication" - }, - { - "name": "patientid", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "The id of the patient (one of multiple kinds of participations)" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "source", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "The id of source where event originated" - }, - { - "name": "address", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Identifier for the network access point of the user device" - }, - { - "name": "subtype", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "More specific type/id for the event" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "string", - "documentation": "Human-meaningful name for the user" - }, - { - "name": "action", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Type of action performed during the event" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "object-type", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Object type being audited" - }, - { - "name": "user", - "definition": "http://hl7.org/fhir/profiles/SecurityEvent", - "type": "token", - "documentation": "Unique identifier for the user" - } - ] - }, - { - "type": "Slot", - "profile": { - "reference": "http://hl7.org/fhir/Slot" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Slot", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "start", - "definition": "http://hl7.org/fhir/profiles/Slot", - "type": "date", - "documentation": "Appointment date/time." - }, - { - "name": "slottype", - "definition": "http://hl7.org/fhir/profiles/Slot", - "type": "token", - "documentation": "The type of appointments that can be booked into the slot" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Slot", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "fbtype", - "definition": "http://hl7.org/fhir/profiles/Slot", - "type": "token", - "documentation": "The free/busy status of the appointment" - }, - { - "name": "availability", - "definition": "http://hl7.org/fhir/profiles/Slot", - "type": "reference", - "documentation": "The Availability Resource that we are seeking a slot within" - } - ] - }, - { - "type": "Specimen", - "profile": { - "reference": "http://hl7.org/fhir/Specimen" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Specimen", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "subject", - "definition": "http://hl7.org/fhir/profiles/Specimen", - "type": "reference", - "documentation": "The subject of the specimen" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Specimen", - "type": "token", - "documentation": "The stated language of the resource" - } - ] - }, - { - "type": "Substance", - "profile": { - "reference": "http://hl7.org/fhir/Substance" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "substance", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "reference", - "documentation": "A component of the substance" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "quantity", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "number", - "documentation": "Amount of substance in the package" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "type", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "token", - "documentation": "The type of the substance" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "token", - "documentation": "Identifier of the package/container" - }, - { - "name": "expiry", - "definition": "http://hl7.org/fhir/profiles/Substance", - "type": "date", - "documentation": "When no longer valid to use" - } - ] - }, - { - "type": "Supply", - "profile": { - "reference": "http://hl7.org/fhir/Supply" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "patient", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "reference", - "documentation": "Patient for whom the item is supplied" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "requested | dispensed | received | failed | cancelled" - }, - { - "name": "dispenseid", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "External identifier" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "Unique identifier" - }, - { - "name": "supplier", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "reference", - "documentation": "Dispenser" - }, - { - "name": "kind", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "The kind of supply (central, non-stock, etc)" - }, - { - "name": "dispensestatus", - "definition": "http://hl7.org/fhir/profiles/Supply", - "type": "token", - "documentation": "in progress | dispensed | abandoned" - } - ] - }, - { - "type": "ValueSet", - "profile": { - "reference": "http://hl7.org/fhir/ValueSet" - }, - "operation": [ - { - "code": "read" - }, - { - "code": "vread" - }, - { - "code": "update" - }, - { - "code": "delete" - }, - { - "code": "history-instance" - }, - { - "code": "validate" - }, - { - "code": "history-type" - }, - { - "code": "create" - }, - { - "code": "search-type" - } - ], - "searchParam": [ - { - "name": "system", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "The system for any codes defined by this value set" - }, - { - "name": "_id", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "The logical resource id associated with the resource (must be supported by all servers)" - }, - { - "name": "status", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "The status of the value set" - }, - { - "name": "description", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "string", - "documentation": "Text search in the description of the value set" - }, - { - "name": "name", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "string", - "documentation": "The name of the value set" - }, - { - "name": "_language", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "The stated language of the resource" - }, - { - "name": "code", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "A code defined in the value set" - }, - { - "name": "date", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "date", - "documentation": "The value set publication date" - }, - { - "name": "identifier", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "The identifier of the value set" - }, - { - "name": "reference", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "A code system included or excluded in the value set or an imported value set" - }, - { - "name": "publisher", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "string", - "documentation": "Name of the publisher of the value set" - }, - { - "name": "version", - "definition": "http://hl7.org/fhir/profiles/ValueSet", - "type": "token", - "documentation": "The version identifier of the value set" - } - ] - } - ], - "operation": [ - { - "code": "transaction" - }, - { - "code": "history-system" - }, - { - "code": "search-system" - } - ] - } - ] -} \ No newline at end of file diff --git a/vendor/jQuery.js b/vendor/jQuery.js deleted file mode 100644 index ebc6c187..00000000 --- a/vendor/jQuery.js +++ /dev/null @@ -1,8829 +0,0 @@ -/*! - * jQuery JavaScript Library v2.0.3 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-07-03T13:30Z - */ -(function( window, undefined ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -//"use strict"; -var - // A central reference to the root jQuery(document) - rootjQuery, - - // The deferred used on DOM ready - readyList, - - // Support: IE9 - // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` - core_strundefined = typeof undefined, - - // Use the correct document accordingly with window argument (sandbox) - location = window.location, - document = window.document, - docElem = document.documentElement, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // [[Class]] -> type pairs - class2type = {}, - - // List of deleted data cache ids, so we can reuse them - core_deletedIds = [], - - core_version = "2.0.3", - - // Save a reference to some core methods - core_concat = core_deletedIds.concat, - core_push = core_deletedIds.push, - core_slice = core_deletedIds.slice, - core_indexOf = core_deletedIds.indexOf, - core_toString = class2type.toString, - core_hasOwn = class2type.hasOwnProperty, - core_trim = core_version.trim, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Used for matching numbers - core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, - - // Used for splitting on whitespace - core_rnotwhite = /\S+/g, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // The ready event handler and self cleanup method - completed = function() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: core_version, - - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return core_slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; - }, - - slice: function() { - return this.pushStack( core_slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: core_push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), - - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger("ready").off("ready"); - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - if ( obj == null ) { - return String( obj ); - } - // Support: Safari <= 5.1 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ core_toString.call(obj) ] || "object" : - typeof obj; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Support: Firefox <20 - // The try/catch suppresses exceptions thrown when attempting to access - // the "constructor" property of certain host objects, ie. |window.location| - // https://bugzilla.mozilla.org/show_bug.cgi?id=814622 - try { - if ( obj.constructor && - !core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - // data: string of html - // context (optional): If specified, the fragment will be created in this context, defaults to document - // keepScripts (optional): If true, will include scripts passed in the html string - parseHTML: function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - - if ( scripts ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); - }, - - parseJSON: JSON.parse, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - trim: function( text ) { - return text == null ? "" : core_trim.call( text ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - core_push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : core_indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var l = second.length, - i = first.length, - j = 0; - - if ( typeof l === "number" ) { - for ( ; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var retVal, - ret = [], - i = 0, - length = elems.length; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return core_concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = core_slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - access: function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; - }, - - now: Date.now, - - // A method for quickly swapping in/out CSS properties to get correct calculations. - // Note: this method belongs to the css module but it's needed here for the support module. - // If support gets modularized, this method should be moved back to the css module. - swap: function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; - } -}); - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || type !== "function" && - ( length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj ); -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); -/*! - * Sizzle CSS Selector Engine v1.9.4-pre - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-06-03 - */ -(function( window, undefined ) { - -var i, - support, - cachedruns, - Expr, - getText, - isXML, - compile, - outermostContext, - sortInput, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - hasDuplicate = false, - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + - "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", - - // Prefer arguments quoted, - // then not containing pseudos/brackets, - // then attribute selectors/non-parenthetical expressions, - // then anything else - // These preferences are here to reduce the number of selectors - // needing tokenize in the PSEUDO preFilter - pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rsibling = new RegExp( whitespace + "*[+~]" ), - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - // BMP codepoint - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && context.parentNode || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key += " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Detect xml - * @param {Element|Object} elem An element or a document - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent.attachEvent && parent !== parent.top ) { - parent.attachEvent( "onbeforeunload", function() { - setDocument(); - }); - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = assert(function( div ) { - div.innerHTML = "
      "; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - - // Support: Opera 10-12/IE8 - // ^= $= *= and empty values - // Should not select anything - // Support: Windows 8 Native Apps - // The type attribute is restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "t", "" ); - - if ( div.querySelectorAll("[t^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = docElem.compareDocumentPosition ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); - - if ( compare ) { - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } - - // Not directly comparable, sort on existence of method - return a.compareDocumentPosition ? -1 : 1; - } : - function( a, b ) { - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Parentless nodes are either documents or disconnected - } else if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [elem] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val === undefined ? - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null : - val; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - for ( ; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (see #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[5] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] && match[4] !== undefined ) { - match[2] = match[4]; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), - // not comment, processing instructions, or others - // Thanks to Diego Perini for the nodeName shortcut - // Greater than "@" means alpha characters (specifically not starting with "#" or "?") - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( tokens = [] ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var data, cache, outerCache, - dirkey = dirruns + " " + doneName; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { - if ( (data = cache[1]) === true || data === cachedruns ) { - return data === true; - } - } else { - cache = outerCache[ dir ] = [ dirkey ]; - cache[1] = matcher( elem, context, xml ) || cachedruns; - if ( cache[1] === true ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - // A counter to specify which element is currently being matched - var matcherCachedRuns = 0, - bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, expandContext ) { - var elem, j, matcher, - setMatched = [], - matchedCount = 0, - i = "0", - unmatched = seed && [], - outermost = expandContext != null, - contextBackup = outermostContext, - // We must always have either seed elements or context - elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); - - if ( outermost ) { - outermostContext = context !== document && context; - cachedruns = matcherCachedRuns; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - for ( ; (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - cachedruns = ++matcherCachedRuns; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !group ) { - group = tokenize( selector ); - } - i = group.length; - while ( i-- ) { - cached = matcherFromTokens( group[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - } - return cached; -}; - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - match = tokenize( selector ); - - if ( !seed ) { - // Try to minimize operations if there is only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - } - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && context.parentNode || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - } - - // Compile and execute a filtering function - // Provide `match` to avoid retokenization if we modified the selector above - compile( selector, match )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) - ); - return results; -} - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - elem[ name ] === true ? name.toLowerCase() : null; - } - }); -} - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})( window ); -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var action = tuple[ 0 ], - fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = core_slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; - if( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); -jQuery.support = (function( support ) { - var input = document.createElement("input"), - fragment = document.createDocumentFragment(), - div = document.createElement("div"), - select = document.createElement("select"), - opt = select.appendChild( document.createElement("option") ); - - // Finish early in limited environments - if ( !input.type ) { - return support; - } - - input.type = "checkbox"; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) - support.checkOn = input.value !== ""; - - // Must access the parent to make an option select properly - // Support: IE9, IE10 - support.optSelected = opt.selected; - - // Will be defined later - support.reliableMarginRight = true; - support.boxSizingReliable = true; - support.pixelPosition = false; - - // Make sure checked status is properly cloned - // Support: IE9, IE10 - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Check if an input maintains its value after becoming a radio - // Support: IE9, IE10 - input = document.createElement("input"); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; - - // #11217 - WebKit loses check when the name is after the checked attribute - input.setAttribute( "checked", "t" ); - input.setAttribute( "name", "t" ); - - fragment.appendChild( input ); - - // Support: Safari 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: Firefox, Chrome, Safari - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - support.focusinBubbles = "onfocusin" in window; - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, marginDiv, - // Support: Firefox, Android 2.3 (Prefixed box-sizing versions). - divReset = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box", - body = document.getElementsByTagName("body")[ 0 ]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - container = document.createElement("div"); - container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; - - // Check box-sizing and margin behavior. - body.appendChild( container ).appendChild( div ); - div.innerHTML = ""; - // Support: Firefox, Android 2.3 (Prefixed box-sizing versions). - div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%"; - - // Workaround failing boxSizing test due to offsetWidth returning wrong value - // with some non-1 values of body zoom, ticket #13543 - jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { - support.boxSizing = div.offsetWidth === 4; - }); - - // Use window.getComputedStyle because jsdom on node.js will break without it. - if ( window.getComputedStyle ) { - support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; - support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; - - // Support: Android 2.3 - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - marginDiv = div.appendChild( document.createElement("div") ); - marginDiv.style.cssText = div.style.cssText = divReset; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - - support.reliableMarginRight = - !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); - } - - body.removeChild( container ); - }); - - return support; -})( {} ); - -/* - Implementation Summary - - 1. Enforce API surface and semantic compatibility with 1.9.x branch - 2. Improve the module's maintainability by reducing the storage - paths to a single mechanism. - 3. Use the same single mechanism to support "private" and "user" data. - 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) - 5. Avoid exposing implementation details on user objects (eg. expando properties) - 6. Provide a clear path for implementation upgrade to WeakMap in 2014 -*/ -var data_user, data_priv, - rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rmultiDash = /([A-Z])/g; - -function Data() { - // Support: Android < 4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Math.random(); -} - -Data.uid = 1; - -Data.accepts = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType ? - owner.nodeType === 1 || owner.nodeType === 9 : true; -}; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android < 4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( core_rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; - -// These may be used throughout the jQuery core codebase -data_user = new Data(); -data_priv = new Data(); - - -jQuery.extend({ - acceptData: Data.accepts, - - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var attrs, name, - elem = this[ 0 ], - i = 0, - data = null; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - attrs = elem.attributes; - for ( ; i < attrs.length; i++ ) { - name = attrs[ i ].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return jQuery.access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? JSON.parse( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var nodeHook, boolHook, - rclass = /[\t\r\n\f]/g, - rreturn = /\r/g, - rfocusable = /^(?:input|select|textarea|button)$/i; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each(function() { - delete this[ jQuery.propFix[ name ] || name ]; - }); - }, - - addClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - elem.className = jQuery.trim( cur ); - - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - elem.className = value ? jQuery.trim( cur ) : ""; - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - classNames = value.match( core_rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( type === core_strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - data_priv.set( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // IE6-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { - optionSet = true; - } - } - - // force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attr: function( elem, name, value ) { - var hooks, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === core_strundefined ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( core_rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - // Set corresponding property to false - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? - ret : - ( elem[ name ] = value ); - - } else { - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? - ret : - elem[ name ]; - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? - elem.tabIndex : - -1; - } - } - } -}); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; - - jQuery.expr.attrHandle[ name ] = function( elem, name, isXML ) { - var fn = jQuery.expr.attrHandle[ name ], - ret = isXML ? - undefined : - /* jshint eqeqeq: false */ - // Temporarily disable this handler to check existence - (jQuery.expr.attrHandle[ name ] = undefined) != - getter( elem, name, isXML ) ? - - name.toLowerCase() : - null; - - // Restore handler - jQuery.expr.attrHandle[ name ] = fn; - - return ret; - }; -}); - -// Support: IE9+ -// Selectedness for an option in an optgroup can be inaccurate -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - } - }; -} - -jQuery.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -}); - -// Radios and checkboxes getter/setter -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }; - if ( !jQuery.support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - // Support: Webkit - // "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } -}); -var rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = core_hasOwn.call( event, "type" ) ? event.type : event, - namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = core_slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome < 28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Create "bubbling" focus and blur events -// Support: Firefox, Chrome, Safari -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); -var isSimple = /^.[^:#\[\.,]*$/, - rparentsprev = /^(?:parents|prev(?:Until|All))/, - rneedsContext = jQuery.expr.match.needsContext, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = ( rneedsContext.test( selectors ) || typeof selectors !== "string" ) ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - cur = matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return core_indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return core_indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( jQuery.unique(all) ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); - }, - - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( isSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( core_indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} -var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - manipulation_rcheckableType = /^(?:checkbox|radio)$/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE 9 - option: [ 1, "" ], - - thead: [ 1, "", "
      " ], - col: [ 2, "", "
      " ], - tr: [ 2, "", "
      " ], - td: [ 3, "", "
      " ], - - _default: [ 0, "", "" ] - }; - -// Support: IE 9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -jQuery.fn.extend({ - text: function( value ) { - return jQuery.access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - // keepData is for internal use only--do not document - remove: function( selector, keepData ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function () { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return jQuery.access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var - // Snapshot the DOM in case .domManip sweeps something relevant into its fragment - args = jQuery.map( this, function( elem ) { - return [ elem.nextSibling, elem.parentNode ]; - }), - i = 0; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - var next = args[ i++ ], - parent = args[ i++ ]; - - if ( parent ) { - // Don't use the snapshot next if it has moved (#13810) - if ( next && next.parentNode !== parent ) { - next = this.nextSibling; - } - jQuery( this ).remove(); - parent.insertBefore( elem, next ); - } - // Allow new content to include elements from the context set - }, true ); - - // Force removal if there was no new content (e.g., from empty arguments) - return i ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback, allowIntersection ) { - - // Flatten any nested arrays - args = core_concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback, allowIntersection ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because core_push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Hope ajax is available... - jQuery._evalUrl( node.src ); - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because core_push.apply(_, arraylike) throws - core_push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Support: IE >= 9 - // Fix Cloning issues - if ( !jQuery.support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - i = 0, - l = elems.length, - fragment = context.createDocumentFragment(), - nodes = []; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit - // jQuery.merge because core_push.apply(_, arraylike) throws - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || ["", ""] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit - // jQuery.merge because core_push.apply(_, arraylike) throws - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Fixes #12346 - // Support: Webkit, IE - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, events, type, key, j, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( Data.accepts( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - events = Object.keys( data.events || {} ); - if ( events.length ) { - for ( j = 0; (type = events[j]) !== undefined; j++ ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - }, - - _evalUrl: function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); - } -}); - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var l = elems.length, - i = 0; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Support: IE >= 9 -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} -jQuery.fn.extend({ - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapAll( html.call(this, i) ); - }); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - } -}); -var curCSS, iframe, - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rmargin = /^margin/, - rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), - rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), - elemdisplay = { BODY: "block" }, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: 0, - fontWeight: 400 - }, - - cssExpand = [ "Top", "Right", "Bottom", "Left" ], - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt(0).toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function isHidden( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); -} - -// NOTE: we've included the "window" in window.getComputedStyle -// because jsdom on node.js will break without it. -function getStyles( elem ) { - return window.getComputedStyle( elem, null ); -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = data_priv.get( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = data_priv.access( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); - } - } else { - - if ( !values[ index ] ) { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") ); - } - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.fn.extend({ - css: function( name, value ) { - return jQuery.access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each(function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that NaN and null values aren't set. See: #7116 - if ( value == null || type === "number" && isNaN( value ) ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - style[ name ] = value; - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - } -}); - -curCSS = function( elem, name, _computed ) { - var width, minWidth, maxWidth, - computed = _computed || getStyles( elem ), - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, - style = elem.style; - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: Safari 5.1 - // A tribute to the "awesome hack by Dean Edwards" - // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret; -}; - - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -// Try to determine the default display value of an element -function css_defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - // Use the already-created iframe if possible - iframe = ( iframe || - jQuery("