Index: frontend/node_modules/klona/json/index.d.ts
===================================================================
--- frontend/node_modules/klona/json/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/klona/json/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export function klona<T>(input: T): T;
Index: frontend/node_modules/klona/json/index.js
===================================================================
--- frontend/node_modules/klona/json/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/klona/json/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,30 @@
+function klona(val) {
+	var k, out, tmp;
+
+	if (Array.isArray(val)) {
+		out = Array(k=val.length);
+		while (k--) out[k] = (tmp=val[k]) && typeof tmp === 'object' ? klona(tmp) : tmp;
+		return out;
+	}
+
+	if (Object.prototype.toString.call(val) === '[object Object]') {
+		out = {}; // null
+		for (k in val) {
+			if (k === '__proto__') {
+				Object.defineProperty(out, k, {
+					value: klona(val[k]),
+					configurable: true,
+					enumerable: true,
+					writable: true,
+				});
+			} else {
+				out[k] = (tmp=val[k]) && typeof tmp === 'object' ? klona(tmp) : tmp;
+			}
+		}
+		return out;
+	}
+
+	return val;
+}
+
+exports.klona = klona;
Index: frontend/node_modules/klona/json/index.min.js
===================================================================
--- frontend/node_modules/klona/json/index.min.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/klona/json/index.min.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.klona={})}(this,(function(e){e.klona=function e(t){var o,r,n;if(Array.isArray(t)){for(r=Array(o=t.length);o--;)r[o]=(n=t[o])&&"object"==typeof n?e(n):n;return r}if("[object Object]"===Object.prototype.toString.call(t)){for(o in r={},t)"__proto__"===o?Object.defineProperty(r,o,{value:e(t[o]),configurable:!0,enumerable:!0,writable:!0}):r[o]=(n=t[o])&&"object"==typeof n?e(n):n;return r}return t}}));
Index: frontend/node_modules/klona/json/index.mjs
===================================================================
--- frontend/node_modules/klona/json/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/klona/json/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+export function klona(val) {
+	var k, out, tmp;
+
+	if (Array.isArray(val)) {
+		out = Array(k=val.length);
+		while (k--) out[k] = (tmp=val[k]) && typeof tmp === 'object' ? klona(tmp) : tmp;
+		return out;
+	}
+
+	if (Object.prototype.toString.call(val) === '[object Object]') {
+		out = {}; // null
+		for (k in val) {
+			if (k === '__proto__') {
+				Object.defineProperty(out, k, {
+					value: klona(val[k]),
+					configurable: true,
+					enumerable: true,
+					writable: true,
+				});
+			} else {
+				out[k] = (tmp=val[k]) && typeof tmp === 'object' ? klona(tmp) : tmp;
+			}
+		}
+		return out;
+	}
+
+	return val;
+}
