Index: frontend/node_modules/object.fromentries/.editorconfig
===================================================================
--- frontend/node_modules/object.fromentries/.editorconfig	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/.editorconfig	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 150
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[*.json]
+max_line_length = off
+
+[Makefile]
+max_line_length = off
Index: frontend/node_modules/object.fromentries/.eslintrc
===================================================================
--- frontend/node_modules/object.fromentries/.eslintrc	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/.eslintrc	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,34 @@
+{
+	"root": true,
+
+	"extends": "@ljharb",
+
+	"rules": {
+		"id-length": 0,
+		"new-cap": [2, {
+			"capIsNewExceptions": [
+				"AddEntriesFromIterable",
+				"CreateDataPropertyOrThrow",
+				"Get",
+				"GetIterator",
+				"IsArray",
+				"IteratorStep",
+				"IteratorClose",
+				"IteratorValue",
+				"ThrowCompletion",
+				"ToPropertyKey",
+				"Type",
+				"RequireObjectCoercible",
+			],
+		}],
+	},
+
+	"overrides": [
+		{
+			"files": "test/**",
+			"rules": {
+				"no-invalid-this": 1,
+			},
+		},
+	],
+}
Index: frontend/node_modules/object.fromentries/.nycrc
===================================================================
--- frontend/node_modules/object.fromentries/.nycrc	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/.nycrc	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,9 @@
+{
+	"all": true,
+	"check-coverage": false,
+	"reporter": ["text-summary", "text", "html", "json"],
+	"exclude": [
+		"coverage",
+		"test"
+	]
+}
Index: frontend/node_modules/object.fromentries/CHANGELOG.md
===================================================================
--- frontend/node_modules/object.fromentries/CHANGELOG.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/CHANGELOG.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,92 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v2.0.8](https://github.com/es-shims/Object.fromEntries/compare/v2.0.7...v2.0.8) - 2024-03-18
+
+### Commits
+
+- [actions] remove redundant finisher [`70e8717`](https://github.com/es-shims/Object.fromEntries/commit/70e8717d348e7d2b919c48ce7ab8cdc403664250)
+- [Deps] update `call-bind`, `define-properties`, `es-abstract` [`f4b1a93`](https://github.com/es-shims/Object.fromEntries/commit/f4b1a93c665224e02724d3984eac0ce8508407cc)
+- [Refactor] use `es-object-atoms` where possible [`252ffa7`](https://github.com/es-shims/Object.fromEntries/commit/252ffa73b503b29a7751730f5bca52f5136469e2)
+- [Dev Deps] update `aud`, `tape` [`200ccd5`](https://github.com/es-shims/Object.fromEntries/commit/200ccd563a4bf5a55603be7877646dae1f67675c)
+
+## [v2.0.7](https://github.com/es-shims/Object.fromEntries/compare/v2.0.6...v2.0.7) - 2023-08-28
+
+### Commits
+
+- [Deps] update `define-properties`, `es-abstract` [`dbf1467`](https://github.com/es-shims/Object.fromEntries/commit/dbf1467c5586bbf0183ebdee1239176eaf1f94d6)
+- [Dev Deps] update `@es-shims/api`, `@ljharb/eslint-config`, `aud`, `tape` [`495556f`](https://github.com/es-shims/Object.fromEntries/commit/495556fd641f1c6b9f2f1eedf1be98ed7dad1c43)
+
+## [v2.0.6](https://github.com/es-shims/Object.fromEntries/compare/v2.0.5...v2.0.6) - 2022-11-06
+
+### Commits
+
+- [actions] reuse common workflows [`867603d`](https://github.com/es-shims/Object.fromEntries/commit/867603ddb384887d25749488579a4c74fa9c1443)
+- [meta] add `auto-changelog` [`3621c90`](https://github.com/es-shims/Object.fromEntries/commit/3621c90294140f0139cf65c9ed852e7ace01c40f)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `safe-publish-latest`, `tape` [`d6c3de7`](https://github.com/es-shims/Object.fromEntries/commit/d6c3de793e1f2055b5b11102f778270378956f71)
+- [Deps] update `define-properties`, `es-abstract` [`a0eca66`](https://github.com/es-shims/Object.fromEntries/commit/a0eca66c2d21c1030430b8c06c36d9235d0f5870)
+- [actions] update rebase action to use reusable workflow [`91df159`](https://github.com/es-shims/Object.fromEntries/commit/91df159d076da80dcb62dd4a27cc303e4bdaf76e)
+- [actions] update codecov uploader [`e7f2c96`](https://github.com/es-shims/Object.fromEntries/commit/e7f2c965103df04dc21042bd735ce1a5d1446193)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`ec22968`](https://github.com/es-shims/Object.fromEntries/commit/ec22968b61d5888816c66d8416bb045f6584e3a1)
+
+<!-- auto-changelog-above -->
+
+2.0.5 / 2021-10-03
+=================
+  * [readme] add actions and codecov badges
+  * [Deps] update `es-abstract`
+  * [Deps] remove unused `has` dep
+  * [meta] use `prepublishOnly` script for npm 7+
+  * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `tape`
+  * [actions] update workflows
+  * [actions] use `node/install` instead of `node/run`; use `codecov` action
+  * [Tests] increase coverage
+
+2.0.4 / 2021-02-21
+=================
+  * [readme] fix repo URLs; remove travis badge
+  * [meta] do not publish github action workflow files
+  * [Deps] update `call-bind`, `es-abstract`
+  * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-strict-mode`, `tape`
+  * [actions] update workflows
+
+2.0.3 / 2020-11-26
+=================
+  * [Deps] update `es-abstract`; remove `function-bind`; use `call-bind` where applicable
+  * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`; add `aud`, `safe-publish-latest`
+  * [actions] add "Allow Edits" workflow
+  * [actions] switch Automatic Rebase workflow to `pull_request_target` event
+  * [Tests] migrate tests to Github Actions
+  * [Tests] run `nyc` on all tests
+  * [Tests] add `implementation` test; run `es-shim-api` in postlint; use `tape` runner
+  * [Tests] only audit prod deps
+
+2.0.2 / 2019-12-12
+=================
+  * [Refactor] use split-up `es-abstract` (63% bundle size decrease)
+  * [readme] remove testling
+  * [Dev Deps] update `eslint`, `@ljharb/eslint-config`
+  * [meta] add `funding` field
+  * [Tests] use shared travis-ci configs
+  * [actions] add automatic rebasing / merge commit blocking
+
+2.0.1 / 2019-10-03
+=================
+  * [Fix] do not mutate `Object.fromEntries` when already present
+  * [Deps] update `define-properties`, `es-abstract`, `has`
+  * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape`
+  * [Tests] up to `node` `v12.9`, `v11.15`, `v10.16`, `v9.11`, `v8.16`, `v6.17`, `v4.9`
+  * [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops
+
+2.0.0 / 2018-08-09
+=================
+  * [Breaking] throw when `iterable` is nullish
+  * [Docs] Fix link to proposed spec
+
+1.0.0 / 2018-03-21
+=================
+  * v1.0.0
Index: frontend/node_modules/object.fromentries/LICENSE
===================================================================
--- frontend/node_modules/object.fromentries/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: frontend/node_modules/object.fromentries/README.md
===================================================================
--- frontend/node_modules/object.fromentries/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,50 @@
+# object.fromentries <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+An ES spec-proposal-compliant `Object.fromEntries` shim. Invoke its "shim" method to shim `Object.fromEntries` if it is unavailable or noncompliant.
+
+This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the [proposed spec](https://tc39.github.io/proposal-object-from-entries/).
+
+Most common usage:
+```js
+var assert = require('assert');
+var fromEntries = require('object.fromentries');
+
+var obj = { a: 1, b: 2, c: 3 };
+var actual = fromEntries(Object.entries(obj));
+
+assert.deepEqual(obj, actual);
+
+if (!Object.fromEntries) {
+	fromEntries.shim();
+}
+
+assert.deepEqual(Object.fromEntries(Object.entries(obj)), obj);
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.com/package/object.fromentries
+[npm-version-svg]: https://versionbadg.es/es-shims/Object.fromEntries.svg
+[deps-svg]: https://david-dm.org/es-shims/Object.fromEntries.svg
+[deps-url]: https://david-dm.org/es-shims/Object.fromEntries
+[dev-deps-svg]: https://david-dm.org/es-shims/Object.fromEntries/dev-status.svg
+[dev-deps-url]: https://david-dm.org/es-shims/Object.fromEntries#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/object.fromentries.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/object.fromentries.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/object.fromentries.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=object.fromentries
+[codecov-image]: https://codecov.io/gh/es-shims/Object.fromEntries/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/Object.fromEntries/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/Object.fromEntries
+[actions-url]: https://github.com/es-shims/Object.fromEntries/actions
Index: frontend/node_modules/object.fromentries/auto.js
===================================================================
--- frontend/node_modules/object.fromentries/auto.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/auto.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+'use strict';
+
+require('./shim')();
Index: frontend/node_modules/object.fromentries/implementation.js
===================================================================
--- frontend/node_modules/object.fromentries/implementation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/implementation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+'use strict';
+
+var AddEntriesFromIterable = require('es-abstract/2024/AddEntriesFromIterable');
+var CreateDataPropertyOrThrow = require('es-abstract/2024/CreateDataPropertyOrThrow');
+var RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible');
+var ToPropertyKey = require('es-abstract/2024/ToPropertyKey');
+
+var adder = function addDataProperty(key, value) {
+	var O = this; // eslint-disable-line no-invalid-this
+	var propertyKey = ToPropertyKey(key);
+	CreateDataPropertyOrThrow(O, propertyKey, value);
+};
+
+module.exports = function fromEntries(iterable) {
+	RequireObjectCoercible(iterable);
+
+	return AddEntriesFromIterable({}, iterable, adder);
+};
Index: frontend/node_modules/object.fromentries/index.js
===================================================================
--- frontend/node_modules/object.fromentries/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+'use strict';
+
+var define = require('define-properties');
+var callBind = require('call-bind');
+
+var implementation = require('./implementation');
+var getPolyfill = require('./polyfill');
+var shim = require('./shim');
+
+var polyfill = callBind(getPolyfill(), Object);
+
+define(polyfill, {
+	getPolyfill: getPolyfill,
+	implementation: implementation,
+	shim: shim
+});
+
+module.exports = polyfill;
Index: frontend/node_modules/object.fromentries/package.json
===================================================================
--- frontend/node_modules/object.fromentries/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,91 @@
+{
+	"name": "object.fromentries",
+	"version": "2.0.8",
+	"author": "Jordan Harband <ljharb@gmail.com>",
+	"funding": {
+		"url": "https://github.com/sponsors/ljharb"
+	},
+	"description": "ES proposal-spec-compliant Object.fromEntries shim.",
+	"license": "MIT",
+	"main": "index.js",
+	"scripts": {
+		"prepublish": "not-in-publish || npm run prepublishOnly",
+		"prepublishOnly": "safe-publish-latest",
+		"pretest": "npm run lint",
+		"test": "npm run tests-only",
+		"posttest": "aud --production",
+		"tests-only": "nyc tape 'test/**/*.js'",
+		"lint": "eslint --ext=js,mjs .",
+		"postlint": "es-shim-api --bound",
+		"version": "auto-changelog && git add CHANGELOG.md",
+		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+	},
+	"repository": {
+		"type": "git",
+		"url": "git://github.com/es-shims/Object.fromEntries.git"
+	},
+	"keywords": [
+		"Object.fromEntries",
+		"Object.entries",
+		"Object.values",
+		"Object.keys",
+		"entries",
+		"values",
+		"ES7",
+		"ES8",
+		"ES2017",
+		"shim",
+		"object",
+		"keys",
+		"polyfill",
+		"es-shim API"
+	],
+	"dependencies": {
+		"call-bind": "^1.0.7",
+		"define-properties": "^1.2.1",
+		"es-abstract": "^1.23.2",
+		"es-object-atoms": "^1.0.0"
+	},
+	"devDependencies": {
+		"@es-shims/api": "^2.4.2",
+		"@ljharb/eslint-config": "^21.1.0",
+		"aud": "^2.0.4",
+		"auto-changelog": "^2.4.0",
+		"eslint": "=8.8.0",
+		"has-strict-mode": "^1.0.1",
+		"in-publish": "^2.0.1",
+		"nyc": "^10.3.2",
+		"safe-publish-latest": "^2.0.0",
+		"tape": "^5.7.5"
+	},
+	"testling": {
+		"files": "test/index.js",
+		"browsers": [
+			"iexplore/9.0..latest",
+			"firefox/4.0..6.0",
+			"firefox/15.0..latest",
+			"firefox/nightly",
+			"chrome/4.0..10.0",
+			"chrome/20.0..latest",
+			"chrome/canary",
+			"opera/11.6..latest",
+			"opera/next",
+			"safari/5.0..latest",
+			"ipad/6.0..latest",
+			"iphone/6.0..latest",
+			"android-browser/4.2"
+		]
+	},
+	"auto-changelog": {
+		"output": "CHANGELOG.md",
+		"template": "keepachangelog",
+		"unreleased": false,
+		"commitLimit": false,
+		"backfillLimit": false,
+		"hideCredit": true,
+		"startingVersion": "2.0.6"
+	},
+	"engines": {
+		"node": ">= 0.4"
+	}
+}
Index: frontend/node_modules/object.fromentries/polyfill.js
===================================================================
--- frontend/node_modules/object.fromentries/polyfill.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/polyfill.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+'use strict';
+
+var implementation = require('./implementation');
+
+module.exports = function getPolyfill() {
+	return typeof Object.fromEntries === 'function' ? Object.fromEntries : implementation;
+};
Index: frontend/node_modules/object.fromentries/shim.js
===================================================================
--- frontend/node_modules/object.fromentries/shim.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/shim.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,14 @@
+'use strict';
+
+var getPolyfill = require('./polyfill');
+var define = require('define-properties');
+
+module.exports = function shimEntries() {
+	var polyfill = getPolyfill();
+	define(Object, { fromEntries: polyfill }, {
+		fromEntries: function testEntries() {
+			return Object.fromEntries !== polyfill;
+		}
+	});
+	return polyfill;
+};
Index: frontend/node_modules/object.fromentries/test/implementation.js
===================================================================
--- frontend/node_modules/object.fromentries/test/implementation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/test/implementation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,20 @@
+'use strict';
+
+var implementation = require('../implementation');
+var callBind = require('call-bind');
+var test = require('tape');
+var hasStrictMode = require('has-strict-mode')();
+var runTests = require('./tests');
+
+test('as a function', function (t) {
+	t.test('bad array/this value', { skip: !hasStrictMode }, function (st) {
+		/* eslint no-useless-call: 0 */
+		st['throws'](function () { implementation.call(undefined); }, TypeError, 'undefined is not an object');
+		st['throws'](function () { implementation.call(null); }, TypeError, 'null is not an object');
+		st.end();
+	});
+
+	runTests(callBind(implementation, Object), t);
+
+	t.end();
+});
Index: frontend/node_modules/object.fromentries/test/index.js
===================================================================
--- frontend/node_modules/object.fromentries/test/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/test/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+'use strict';
+
+var fromEntries = require('../');
+var test = require('tape');
+var runTests = require('./tests');
+
+test('as a function', function (t) {
+	t.test('bad array/this value', function (st) {
+		st['throws'](function () { fromEntries(undefined); }, TypeError, 'undefined is not an object');
+		st['throws'](function () { fromEntries(null); }, TypeError, 'null is not an object');
+		st.end();
+	});
+
+	runTests(fromEntries, t);
+
+	t.end();
+});
Index: frontend/node_modules/object.fromentries/test/shimmed.js
===================================================================
--- frontend/node_modules/object.fromentries/test/shimmed.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/test/shimmed.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,44 @@
+'use strict';
+
+require('../auto');
+
+var test = require('tape');
+var keys = require('object-keys');
+var defineProperties = require('define-properties');
+var isEnumerable = Object.prototype.propertyIsEnumerable;
+var functionsHaveNames = function f() {}.name === 'f';
+
+var runTests = require('./tests');
+
+test('shimmed', function (t) {
+	t.equal(Object.fromEntries.length, 1, 'Object.fromEntries has a length of 1');
+	t.test('Function name', { skip: !functionsHaveNames }, function (st) {
+		st.equal(Object.fromEntries.name, 'fromEntries', 'Object.fromEntries has name "fromEntries"');
+		st.end();
+	});
+
+	t.test('enumerability', { skip: !defineProperties.supportsDescriptors }, function (et) {
+		et.equal(false, isEnumerable.call(Object, 'fromEntries'), 'Object.fromEntries is not enumerable');
+		et.end();
+	});
+
+	var supportsStrictMode = (function () { return typeof this === 'undefined'; }());
+
+	t.test('bad object value', { skip: !supportsStrictMode }, function (st) {
+		st['throws'](function () { return Object.fromEntries(undefined); }, TypeError, 'undefined is not an object');
+		st['throws'](function () { return Object.fromEntries(null); }, TypeError, 'null is not an object');
+		st.end();
+	});
+
+	t.test('does not mutate global method', function (st) {
+		st.deepEqual(keys(Object.fromEntries), [], 'no enumerable keys');
+		st.equal('shim' in Object.fromEntries, false, '"shim" is not present');
+		st.equal('getPolyfill' in Object.fromEntries, false, '"getPolyfill" is not present');
+		st.equal('implementation' in Object.fromEntries, false, '"implementation" is not present');
+		st.end();
+	});
+
+	runTests(Object.fromEntries, t);
+
+	t.end();
+});
Index: frontend/node_modules/object.fromentries/test/tests.js
===================================================================
--- frontend/node_modules/object.fromentries/test/tests.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/object.fromentries/test/tests.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (fromEntries, t) {
+	var a = {};
+	var b = {};
+	var c = {};
+	var entries = [['a', a], ['b', b], ['c', c]];
+	var obj = { a: a, b: b, c: c };
+
+	t.deepEqual(fromEntries(entries), obj, 'entries -> obj');
+
+	t['throws'](function () { fromEntries(); }, 'entries throws on absent iterable');
+	t['throws'](function () { fromEntries(undefined); }, 'entries throws on undefined');
+	t['throws'](function () { fromEntries(null); }, 'entries throws on null');
+
+	t.deepEqual(fromEntries([['foo', 1], ['foo', 2]]), { foo: 2 }, 'works with a duplicate key');
+};
