d->m: Sync missed emojis/stickers after restart
This commit is contained in:
		
							parent
							
								
									a67708269d
								
							
						
					
					
						commit
						9efd6a49b8
					
				
					 7 changed files with 140 additions and 85 deletions
				
			
		| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const assert = require("assert").strict
 | 
					const assert = require("assert").strict
 | 
				
			||||||
const DiscordTypes = require("discord-api-types/v10")
 | 
					const DiscordTypes = require("discord-api-types/v10")
 | 
				
			||||||
 | 
					const deepEqual = require("deep-equal")
 | 
				
			||||||
const reg = require("../../matrix/read-registration")
 | 
					const reg = require("../../matrix/read-registration")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const passthrough = require("../../passthrough")
 | 
					const passthrough = require("../../passthrough")
 | 
				
			||||||
| 
						 | 
					@ -199,22 +200,33 @@ async function syncSpaceFully(guildID) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @param {import("discord-api-types/v10").GatewayGuildEmojisUpdateDispatchData | import("discord-api-types/v10").GatewayGuildStickersUpdateDispatchData} data
 | 
					 * @param {import("discord-api-types/v10").GatewayGuildEmojisUpdateDispatchData | import("discord-api-types/v10").GatewayGuildStickersUpdateDispatchData} data
 | 
				
			||||||
 | 
					 * @param {boolean} checkBeforeSync false to always send new state, true to check the current state and only apply if state would change
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
async function syncSpaceExpressions(data) {
 | 
					async function syncSpaceExpressions(data, checkBeforeSync) {
 | 
				
			||||||
	// No need for kstate here. Each of these maps to a single state event, which will always overwrite what was there before. I can just send the state event.
 | 
						// No need for kstate here. Each of these maps to a single state event, which will always overwrite what was there before. I can just send the state event.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const spaceID = select("guild_space", "space_id", {guild_id: data.guild_id}).pluck().get()
 | 
						const spaceID = select("guild_space", "space_id", {guild_id: data.guild_id}).pluck().get()
 | 
				
			||||||
	if (!spaceID) return
 | 
						if (!spaceID) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ("emojis" in data && data.emojis.length) {
 | 
						/**
 | 
				
			||||||
		const content = await expression.emojisToState(data.emojis)
 | 
						 * @typedef {import("discord-api-types/v10").GatewayGuildEmojisUpdateDispatchData & import("discord-api-types/v10").GatewayGuildStickersUpdateDispatchData} Expressions
 | 
				
			||||||
		api.sendState(spaceID, "im.ponies.room_emotes", "moe.cadence.ooye.pack.emojis", content)
 | 
						 * @param {string} spaceID
 | 
				
			||||||
 | 
						 * @param {Expressions extends any ? keyof Expressions : never} key
 | 
				
			||||||
 | 
						 * @param {string} eventKey
 | 
				
			||||||
 | 
						 * @param {(emojis: any[]) => any} fn
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						async function update(spaceID, key, eventKey, fn) {
 | 
				
			||||||
 | 
							if (!(key in data) || !data[key].length) return
 | 
				
			||||||
 | 
							const content = await fn(data[key])
 | 
				
			||||||
 | 
							if (checkBeforeSync) {
 | 
				
			||||||
 | 
								const existing = await api.getStateEvent(spaceID, "im.ponies.room_emotes", eventKey)
 | 
				
			||||||
 | 
								if (deepEqual(existing, content, {strict: true})) return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							api.sendState(spaceID, "im.ponies.room_emotes", eventKey, content)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ("stickers" in data && data.stickers.length) {
 | 
						update(spaceID, "emojis", "moe.cadence.ooye.pack.emojis", expression.emojisToState)
 | 
				
			||||||
		const content = await expression.stickersToState(data.stickers)
 | 
						update(spaceID, "stickers", "moe.cadence.ooye.pack.stickers", expression.stickersToState)
 | 
				
			||||||
		api.sendState(spaceID, "im.ponies.room_emotes", "moe.cadence.ooye.pack.stickers", content)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports.createSpace = createSpace
 | 
					module.exports.createSpace = createSpace
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,7 @@ const utils = {
 | 
				
			||||||
				client.channels.set(thread.id, thread)
 | 
									client.channels.set(thread.id, thread)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if (listen === "full") {
 | 
								if (listen === "full") {
 | 
				
			||||||
 | 
									eventDispatcher.checkMissedExpressions(message.d)
 | 
				
			||||||
				eventDispatcher.checkMissedMessages(client, message.d)
 | 
									eventDispatcher.checkMissedMessages(client, message.d)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,6 +125,16 @@ module.exports = {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * When logging back in, check if we missed any changes to emojis or stickers. Apply the changes if so.
 | 
				
			||||||
 | 
						 * @param {import("./discord-client")} client
 | 
				
			||||||
 | 
						 * @param {DiscordTypes.GatewayGuildCreateDispatchData} guild
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						async checkMissedExpressions(guild) {
 | 
				
			||||||
 | 
							const data = {guild_id: guild.id, ...guild}
 | 
				
			||||||
 | 
							createSpace.syncSpaceExpressions(data, true)
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Announces to the parent room that the thread room has been created.
 | 
						 * Announces to the parent room that the thread room has been created.
 | 
				
			||||||
	 * See notes.md, "Ignore MESSAGE_UPDATE and bridge THREAD_CREATE as the announcement"
 | 
						 * See notes.md, "Ignore MESSAGE_UPDATE and bridge THREAD_CREATE as the announcement"
 | 
				
			||||||
| 
						 | 
					@ -262,6 +272,6 @@ module.exports = {
 | 
				
			||||||
	 * @param {DiscordTypes.GatewayGuildEmojisUpdateDispatchData | DiscordTypes.GatewayGuildStickersUpdateDispatchData} data
 | 
						 * @param {DiscordTypes.GatewayGuildEmojisUpdateDispatchData | DiscordTypes.GatewayGuildStickersUpdateDispatchData} data
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	async onExpressionsUpdate(client, data) {
 | 
						async onExpressionsUpdate(client, data) {
 | 
				
			||||||
		await createSpace.syncSpaceExpressions(data)
 | 
							await createSpace.syncSpaceExpressions(data, false)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const assert = require("assert").strict
 | 
					const assert = require("assert").strict
 | 
				
			||||||
const mixin = require("mixin-deep")
 | 
					const mixin = require("mixin-deep")
 | 
				
			||||||
 | 
					const deepEqual = require("deep-equal")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Mutates the input. */
 | 
					/** Mutates the input. */
 | 
				
			||||||
function kstateStripConditionals(kstate) {
 | 
					function kstateStripConditionals(kstate) {
 | 
				
			||||||
| 
						 | 
					@ -50,18 +51,14 @@ function diffKState(actual, target) {
 | 
				
			||||||
			// Special handling for power levels, we want to deep merge the actual and target into the final state.
 | 
								// Special handling for power levels, we want to deep merge the actual and target into the final state.
 | 
				
			||||||
			if (!(key in actual)) throw new Error(`want to apply a power levels diff, but original power level data is missing\nstarted with:  ${JSON.stringify(actual)}\nwant to apply: ${JSON.stringify(target)}`)
 | 
								if (!(key in actual)) throw new Error(`want to apply a power levels diff, but original power level data is missing\nstarted with:  ${JSON.stringify(actual)}\nwant to apply: ${JSON.stringify(target)}`)
 | 
				
			||||||
			const temp = mixin({}, actual[key], target[key])
 | 
								const temp = mixin({}, actual[key], target[key])
 | 
				
			||||||
			try {
 | 
								if (!deepEqual(actual[key], temp, {strict: true})) {
 | 
				
			||||||
				assert.deepEqual(actual[key], temp)
 | 
					 | 
				
			||||||
			} catch (e) {
 | 
					 | 
				
			||||||
				// they differ. use the newly prepared object as the diff.
 | 
									// they differ. use the newly prepared object as the diff.
 | 
				
			||||||
				diff[key] = temp
 | 
									diff[key] = temp
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		} else if (key in actual) {
 | 
							} else if (key in actual) {
 | 
				
			||||||
			// diff
 | 
								// diff
 | 
				
			||||||
			try {
 | 
								if (!deepEqual(actual[key], target[key], {strict: true})) {
 | 
				
			||||||
				assert.deepEqual(actual[key], target[key])
 | 
					 | 
				
			||||||
			} catch (e) {
 | 
					 | 
				
			||||||
				// they differ. use the target as the diff.
 | 
									// they differ. use the target as the diff.
 | 
				
			||||||
				diff[key] = target[key]
 | 
									diff[key] = target[key]
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										171
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										171
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
        "better-sqlite3": "^9.0.0",
 | 
					        "better-sqlite3": "^9.0.0",
 | 
				
			||||||
        "chunk-text": "^2.0.1",
 | 
					        "chunk-text": "^2.0.1",
 | 
				
			||||||
        "cloudstorm": "^0.9.5",
 | 
					        "cloudstorm": "^0.9.5",
 | 
				
			||||||
 | 
					        "deep-equal": "^2.2.3",
 | 
				
			||||||
        "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#de519353668c87ecc8c543e9749093481bc72ff8",
 | 
					        "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#de519353668c87ecc8c543e9749093481bc72ff8",
 | 
				
			||||||
        "entities": "^4.5.0",
 | 
					        "entities": "^4.5.0",
 | 
				
			||||||
        "giframe": "github:cloudrac3r/giframe#v0.4.1",
 | 
					        "giframe": "github:cloudrac3r/giframe#v0.4.1",
 | 
				
			||||||
| 
						 | 
					@ -429,7 +430,6 @@
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
 | 
					      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "is-array-buffer": "^3.0.1"
 | 
					        "is-array-buffer": "^3.0.1"
 | 
				
			||||||
| 
						 | 
					@ -462,7 +462,6 @@
 | 
				
			||||||
      "version": "1.0.5",
 | 
					      "version": "1.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
 | 
					      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">= 0.4"
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -676,12 +675,13 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/call-bind": {
 | 
					    "node_modules/call-bind": {
 | 
				
			||||||
      "version": "1.0.2",
 | 
					      "version": "1.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
 | 
					      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "function-bind": "^1.1.1",
 | 
					        "function-bind": "^1.1.2",
 | 
				
			||||||
        "get-intrinsic": "^1.0.2"
 | 
					        "get-intrinsic": "^1.2.1",
 | 
				
			||||||
 | 
					        "set-function-length": "^1.1.1"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
| 
						 | 
					@ -958,15 +958,14 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/deep-equal": {
 | 
					    "node_modules/deep-equal": {
 | 
				
			||||||
      "version": "2.2.1",
 | 
					      "version": "2.2.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==",
 | 
					      "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "array-buffer-byte-length": "^1.0.0",
 | 
					        "array-buffer-byte-length": "^1.0.0",
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.5",
 | 
				
			||||||
        "es-get-iterator": "^1.1.3",
 | 
					        "es-get-iterator": "^1.1.3",
 | 
				
			||||||
        "get-intrinsic": "^1.2.0",
 | 
					        "get-intrinsic": "^1.2.2",
 | 
				
			||||||
        "is-arguments": "^1.1.1",
 | 
					        "is-arguments": "^1.1.1",
 | 
				
			||||||
        "is-array-buffer": "^3.0.2",
 | 
					        "is-array-buffer": "^3.0.2",
 | 
				
			||||||
        "is-date-object": "^1.0.5",
 | 
					        "is-date-object": "^1.0.5",
 | 
				
			||||||
| 
						 | 
					@ -976,11 +975,14 @@
 | 
				
			||||||
        "object-is": "^1.1.5",
 | 
					        "object-is": "^1.1.5",
 | 
				
			||||||
        "object-keys": "^1.1.1",
 | 
					        "object-keys": "^1.1.1",
 | 
				
			||||||
        "object.assign": "^4.1.4",
 | 
					        "object.assign": "^4.1.4",
 | 
				
			||||||
        "regexp.prototype.flags": "^1.5.0",
 | 
					        "regexp.prototype.flags": "^1.5.1",
 | 
				
			||||||
        "side-channel": "^1.0.4",
 | 
					        "side-channel": "^1.0.4",
 | 
				
			||||||
        "which-boxed-primitive": "^1.0.2",
 | 
					        "which-boxed-primitive": "^1.0.2",
 | 
				
			||||||
        "which-collection": "^1.0.1",
 | 
					        "which-collection": "^1.0.1",
 | 
				
			||||||
        "which-typed-array": "^1.1.9"
 | 
					        "which-typed-array": "^1.1.13"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
| 
						 | 
					@ -994,11 +996,23 @@
 | 
				
			||||||
        "node": ">=4.0.0"
 | 
					        "node": ">=4.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/define-data-property": {
 | 
				
			||||||
 | 
					      "version": "1.1.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "get-intrinsic": "^1.2.1",
 | 
				
			||||||
 | 
					        "gopd": "^1.0.1",
 | 
				
			||||||
 | 
					        "has-property-descriptors": "^1.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/define-properties": {
 | 
					    "node_modules/define-properties": {
 | 
				
			||||||
      "version": "1.2.0",
 | 
					      "version": "1.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
 | 
					      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-property-descriptors": "^1.0.0",
 | 
					        "has-property-descriptors": "^1.0.0",
 | 
				
			||||||
        "object-keys": "^1.1.1"
 | 
					        "object-keys": "^1.1.1"
 | 
				
			||||||
| 
						 | 
					@ -1113,7 +1127,6 @@
 | 
				
			||||||
      "version": "1.1.3",
 | 
					      "version": "1.1.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
 | 
					      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "get-intrinsic": "^1.1.3",
 | 
					        "get-intrinsic": "^1.1.3",
 | 
				
			||||||
| 
						 | 
					@ -1327,7 +1340,6 @@
 | 
				
			||||||
      "version": "0.3.3",
 | 
					      "version": "0.3.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
 | 
					      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "is-callable": "^1.1.3"
 | 
					        "is-callable": "^1.1.3"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -1396,15 +1408,17 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/function-bind": {
 | 
					    "node_modules/function-bind": {
 | 
				
			||||||
      "version": "1.1.1",
 | 
					      "version": "1.1.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
 | 
					      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/functions-have-names": {
 | 
					    "node_modules/functions-have-names": {
 | 
				
			||||||
      "version": "1.2.3",
 | 
					      "version": "1.2.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
 | 
					      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -1419,13 +1433,14 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/get-intrinsic": {
 | 
					    "node_modules/get-intrinsic": {
 | 
				
			||||||
      "version": "1.2.0",
 | 
					      "version": "1.2.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
 | 
					      "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "function-bind": "^1.1.1",
 | 
					        "function-bind": "^1.1.2",
 | 
				
			||||||
        "has": "^1.0.3",
 | 
					        "has-proto": "^1.0.1",
 | 
				
			||||||
        "has-symbols": "^1.0.3"
 | 
					        "has-symbols": "^1.0.3",
 | 
				
			||||||
 | 
					        "hasown": "^2.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
| 
						 | 
					@ -1474,7 +1489,6 @@
 | 
				
			||||||
      "version": "1.0.1",
 | 
					      "version": "1.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
 | 
					      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "get-intrinsic": "^1.1.3"
 | 
					        "get-intrinsic": "^1.1.3"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1497,7 +1511,6 @@
 | 
				
			||||||
      "version": "1.0.2",
 | 
					      "version": "1.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
 | 
					      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -1515,7 +1528,6 @@
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
 | 
					      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "get-intrinsic": "^1.1.1"
 | 
					        "get-intrinsic": "^1.1.1"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1523,6 +1535,17 @@
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/has-proto": {
 | 
				
			||||||
 | 
					      "version": "1.0.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/has-symbols": {
 | 
					    "node_modules/has-symbols": {
 | 
				
			||||||
      "version": "1.0.3",
 | 
					      "version": "1.0.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
 | 
				
			||||||
| 
						 | 
					@ -1538,7 +1561,6 @@
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
 | 
					      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-symbols": "^1.0.2"
 | 
					        "has-symbols": "^1.0.2"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1549,6 +1571,17 @@
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/hasown": {
 | 
				
			||||||
 | 
					      "version": "2.0.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "function-bind": "^1.1.2"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/heatsync": {
 | 
					    "node_modules/heatsync": {
 | 
				
			||||||
      "version": "2.4.2",
 | 
					      "version": "2.4.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/heatsync/-/heatsync-2.4.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/heatsync/-/heatsync-2.4.2.tgz",
 | 
				
			||||||
| 
						 | 
					@ -1645,7 +1678,6 @@
 | 
				
			||||||
      "version": "1.0.5",
 | 
					      "version": "1.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
 | 
					      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "get-intrinsic": "^1.2.0",
 | 
					        "get-intrinsic": "^1.2.0",
 | 
				
			||||||
        "has": "^1.0.3",
 | 
					        "has": "^1.0.3",
 | 
				
			||||||
| 
						 | 
					@ -1667,7 +1699,6 @@
 | 
				
			||||||
      "version": "1.1.1",
 | 
					      "version": "1.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
 | 
					      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "has-tostringtag": "^1.0.0"
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
| 
						 | 
					@ -1683,7 +1714,6 @@
 | 
				
			||||||
      "version": "3.0.2",
 | 
					      "version": "3.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
 | 
					      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "get-intrinsic": "^1.2.0",
 | 
					        "get-intrinsic": "^1.2.0",
 | 
				
			||||||
| 
						 | 
					@ -1702,7 +1732,6 @@
 | 
				
			||||||
      "version": "1.0.4",
 | 
					      "version": "1.0.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
 | 
					      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-bigints": "^1.0.1"
 | 
					        "has-bigints": "^1.0.1"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1714,7 +1743,6 @@
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
 | 
					      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "has-tostringtag": "^1.0.0"
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
| 
						 | 
					@ -1730,7 +1758,6 @@
 | 
				
			||||||
      "version": "1.2.7",
 | 
					      "version": "1.2.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
 | 
				
			||||||
      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
 | 
					      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">= 0.4"
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1754,7 +1781,6 @@
 | 
				
			||||||
      "version": "1.0.5",
 | 
					      "version": "1.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
 | 
					      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-tostringtag": "^1.0.0"
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1778,7 +1804,6 @@
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
 | 
					      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -1787,7 +1812,6 @@
 | 
				
			||||||
      "version": "1.0.7",
 | 
					      "version": "1.0.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
 | 
				
			||||||
      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
 | 
					      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-tostringtag": "^1.0.0"
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1802,7 +1826,6 @@
 | 
				
			||||||
      "version": "1.1.4",
 | 
					      "version": "1.1.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
 | 
					      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "has-tostringtag": "^1.0.0"
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
| 
						 | 
					@ -1818,7 +1841,6 @@
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
 | 
					      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -1827,7 +1849,6 @@
 | 
				
			||||||
      "version": "1.0.2",
 | 
					      "version": "1.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
 | 
					      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2"
 | 
					        "call-bind": "^1.0.2"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1839,7 +1860,6 @@
 | 
				
			||||||
      "version": "1.0.7",
 | 
					      "version": "1.0.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
 | 
				
			||||||
      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
 | 
					      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-tostringtag": "^1.0.0"
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1854,7 +1874,6 @@
 | 
				
			||||||
      "version": "1.0.4",
 | 
					      "version": "1.0.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
 | 
					      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "has-symbols": "^1.0.2"
 | 
					        "has-symbols": "^1.0.2"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -1869,7 +1888,6 @@
 | 
				
			||||||
      "version": "1.1.10",
 | 
					      "version": "1.1.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
 | 
					      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "available-typed-arrays": "^1.0.5",
 | 
					        "available-typed-arrays": "^1.0.5",
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
| 
						 | 
					@ -1888,7 +1906,6 @@
 | 
				
			||||||
      "version": "2.0.1",
 | 
					      "version": "2.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
 | 
					      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/ljharb"
 | 
					        "url": "https://github.com/sponsors/ljharb"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -1897,7 +1914,6 @@
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
 | 
					      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "get-intrinsic": "^1.1.1"
 | 
					        "get-intrinsic": "^1.1.1"
 | 
				
			||||||
| 
						 | 
					@ -1909,8 +1925,7 @@
 | 
				
			||||||
    "node_modules/isarray": {
 | 
					    "node_modules/isarray": {
 | 
				
			||||||
      "version": "2.0.5",
 | 
					      "version": "2.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
 | 
					      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/isexe": {
 | 
					    "node_modules/isexe": {
 | 
				
			||||||
      "version": "2.0.0",
 | 
					      "version": "2.0.0",
 | 
				
			||||||
| 
						 | 
					@ -2236,7 +2251,6 @@
 | 
				
			||||||
      "version": "1.1.5",
 | 
					      "version": "1.1.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
 | 
					      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "define-properties": "^1.1.3"
 | 
					        "define-properties": "^1.1.3"
 | 
				
			||||||
| 
						 | 
					@ -2252,7 +2266,6 @@
 | 
				
			||||||
      "version": "1.1.1",
 | 
					      "version": "1.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
 | 
					      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">= 0.4"
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -2261,7 +2274,6 @@
 | 
				
			||||||
      "version": "4.1.4",
 | 
					      "version": "4.1.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
 | 
					      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "define-properties": "^1.1.4",
 | 
					        "define-properties": "^1.1.4",
 | 
				
			||||||
| 
						 | 
					@ -2602,14 +2614,13 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/regexp.prototype.flags": {
 | 
					    "node_modules/regexp.prototype.flags": {
 | 
				
			||||||
      "version": "1.5.0",
 | 
					      "version": "1.5.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
 | 
					      "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.2",
 | 
				
			||||||
        "define-properties": "^1.2.0",
 | 
					        "define-properties": "^1.2.0",
 | 
				
			||||||
        "functions-have-names": "^1.2.3"
 | 
					        "set-function-name": "^2.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">= 0.4"
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
| 
						 | 
					@ -2789,6 +2800,33 @@
 | 
				
			||||||
        "node": ">= 0.8.0"
 | 
					        "node": ">= 0.8.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/set-function-length": {
 | 
				
			||||||
 | 
					      "version": "1.1.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "define-data-property": "^1.1.1",
 | 
				
			||||||
 | 
					        "get-intrinsic": "^1.2.1",
 | 
				
			||||||
 | 
					        "gopd": "^1.0.1",
 | 
				
			||||||
 | 
					        "has-property-descriptors": "^1.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/set-function-name": {
 | 
				
			||||||
 | 
					      "version": "2.0.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "define-data-property": "^1.0.1",
 | 
				
			||||||
 | 
					        "functions-have-names": "^1.2.3",
 | 
				
			||||||
 | 
					        "has-property-descriptors": "^1.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/setprototypeof": {
 | 
					    "node_modules/setprototypeof": {
 | 
				
			||||||
      "version": "1.2.0",
 | 
					      "version": "1.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
 | 
				
			||||||
| 
						 | 
					@ -2990,7 +3028,6 @@
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
 | 
					      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "internal-slot": "^1.0.4"
 | 
					        "internal-slot": "^1.0.4"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -3492,7 +3529,6 @@
 | 
				
			||||||
      "version": "1.0.2",
 | 
					      "version": "1.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
 | 
					      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "is-bigint": "^1.0.1",
 | 
					        "is-bigint": "^1.0.1",
 | 
				
			||||||
        "is-boolean-object": "^1.1.0",
 | 
					        "is-boolean-object": "^1.1.0",
 | 
				
			||||||
| 
						 | 
					@ -3508,7 +3544,6 @@
 | 
				
			||||||
      "version": "1.0.1",
 | 
					      "version": "1.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
 | 
					      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "is-map": "^2.0.1",
 | 
					        "is-map": "^2.0.1",
 | 
				
			||||||
        "is-set": "^2.0.1",
 | 
					        "is-set": "^2.0.1",
 | 
				
			||||||
| 
						 | 
					@ -3520,17 +3555,15 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/which-typed-array": {
 | 
					    "node_modules/which-typed-array": {
 | 
				
			||||||
      "version": "1.1.9",
 | 
					      "version": "1.1.13",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
 | 
				
			||||||
      "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
 | 
					      "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "available-typed-arrays": "^1.0.5",
 | 
					        "available-typed-arrays": "^1.0.5",
 | 
				
			||||||
        "call-bind": "^1.0.2",
 | 
					        "call-bind": "^1.0.4",
 | 
				
			||||||
        "for-each": "^0.3.3",
 | 
					        "for-each": "^0.3.3",
 | 
				
			||||||
        "gopd": "^1.0.1",
 | 
					        "gopd": "^1.0.1",
 | 
				
			||||||
        "has-tostringtag": "^1.0.0",
 | 
					        "has-tostringtag": "^1.0.0"
 | 
				
			||||||
        "is-typed-array": "^1.1.10"
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">= 0.4"
 | 
					        "node": ">= 0.4"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@
 | 
				
			||||||
    "better-sqlite3": "^9.0.0",
 | 
					    "better-sqlite3": "^9.0.0",
 | 
				
			||||||
    "chunk-text": "^2.0.1",
 | 
					    "chunk-text": "^2.0.1",
 | 
				
			||||||
    "cloudstorm": "^0.9.5",
 | 
					    "cloudstorm": "^0.9.5",
 | 
				
			||||||
 | 
					    "deep-equal": "^2.2.3",
 | 
				
			||||||
    "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#de519353668c87ecc8c543e9749093481bc72ff8",
 | 
					    "discord-markdown": "git+https://git.sr.ht/~cadence/nodejs-discord-markdown#de519353668c87ecc8c543e9749093481bc72ff8",
 | 
				
			||||||
    "entities": "^4.5.0",
 | 
					    "entities": "^4.5.0",
 | 
				
			||||||
    "giframe": "github:cloudrac3r/giframe#v0.4.1",
 | 
					    "giframe": "github:cloudrac3r/giframe#v0.4.1",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,6 +162,7 @@ Follow these steps:
 | 
				
			||||||
* (1) chunk-text: It does what I want.
 | 
					* (1) chunk-text: It does what I want.
 | 
				
			||||||
* (0) cloudstorm: Discord gateway library with bring-your-own-caching that I trust.
 | 
					* (0) cloudstorm: Discord gateway library with bring-your-own-caching that I trust.
 | 
				
			||||||
* (8) snowtransfer: Discord API library with bring-your-own-caching that I trust.
 | 
					* (8) snowtransfer: Discord API library with bring-your-own-caching that I trust.
 | 
				
			||||||
 | 
					* (0) deep-equal: It's already pulled in by supertape.
 | 
				
			||||||
* (1) discord-markdown: This is my fork!
 | 
					* (1) discord-markdown: This is my fork!
 | 
				
			||||||
* (0) giframe: This is my fork!
 | 
					* (0) giframe: This is my fork!
 | 
				
			||||||
* (1) heatsync: Module hot-reloader that I trust.
 | 
					* (1) heatsync: Module hot-reloader that I trust.
 | 
				
			||||||
| 
						 | 
					@ -169,7 +170,7 @@ Follow these steps:
 | 
				
			||||||
* (1) html-template-tag: This is my fork!
 | 
					* (1) html-template-tag: This is my fork!
 | 
				
			||||||
* (1) js-yaml: It seems to do what I want, and it's already pulled in by matrix-appservice.
 | 
					* (1) js-yaml: It seems to do what I want, and it's already pulled in by matrix-appservice.
 | 
				
			||||||
* (70) matrix-appservice: I wish it didn't pull in express :(
 | 
					* (70) matrix-appservice: I wish it didn't pull in express :(
 | 
				
			||||||
* (0) minimist: It's already pulled in by better-sqlite3->prebuild-install
 | 
					* (0) minimist: It's already pulled in by better-sqlite3->prebuild-install.
 | 
				
			||||||
* (0) mixin-deep: This is my fork! (It fixes a bug in regular mixin-deep.)
 | 
					* (0) mixin-deep: This is my fork! (It fixes a bug in regular mixin-deep.)
 | 
				
			||||||
* (3) node-fetch@2: I like it and it does what I want.
 | 
					* (3) node-fetch@2: I like it and it does what I want.
 | 
				
			||||||
* (0) pngjs: Lottie stickers are converted to bitmaps with the vendored Rlottie WASM build, then the bitmaps are converted to PNG with pngjs.
 | 
					* (0) pngjs: Lottie stickers are converted to bitmaps with the vendored Rlottie WASM build, then the bitmaps are converted to PNG with pngjs.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue