diff --git a/gui/main.py b/gui/main.py index 7569bcf..345eb35 100644 --- a/gui/main.py +++ b/gui/main.py @@ -114,7 +114,7 @@ class AuxToolsUpdateThread(QThread): if self.update_forge: from util.forge.update_tools import ensure_forge_plugins self.progress.emit("Updating Forge plugins…") - if not ensure_forge_plugins(log_fn=lambda m: self.progress.emit(m)): + if not ensure_forge_plugins(force=True, log_fn=lambda m: self.progress.emit(m)): self.finished.emit(False, "Forge plugin update failed.") return self.finished.emit(True, "components_updated") diff --git a/util/forge/Forge_MV.js b/util/forge/Forge_MV.js index 675f210..7023672 100644 --- a/util/forge/Forge_MV.js +++ b/util/forge/Forge_MV.js @@ -1,1104 +1,28 @@ //============================================================================= -// Forge_MV.js — In-game cheat & editor overlay for RPG Maker MV +// forge.js - In-game cheat & editor overlay for RPG Maker MV/MZ //============================================================================= /*: - * @plugindesc Forge — modern in-game editor: variables, switches, items, actors, gold, teleport, common events, freeze/lock & battle cheats. (MV) - * @author len (Forge - clean-room, MTool-inspired) - * - * @param Hotkey - * @desc Key to toggle the panel. - * @default F10 - * - * @param SpeedKey - * @desc Key to toggle the speedhack (fast-forward). Use a key name like Control, Shift, Alt, or a letter. - * @default Control - * - * @param StartOpen - * @desc Open the panel automatically on new game / load (true/false). - * @default false - * - * @param ItemMaxOverride - * @desc Value used by the "Max" button for item stacks (0 = use engine maxItems). - * @default 0 - * - * @help - * Forge — drop-in cheat & editor for RPG Maker MV. - * Place in js/plugins/ and enable. Press F10 in-game to open the overlay. - * - * Sections: Variables · Switches · Items/Weapons/Armors · Actors · Party/Gold · - * Map/Teleport · Common Events · Data Lock (freeze) · Battle cheats. - * - * All edits are RAM-only and never written to save files. No external requests. - * Plugin command: MTC open (toggles the panel) + * @target MZ MV + * @plugindesc Forge - modern in-game editor + * @author len, shellawa + * @url https://gitgud.io/zero64801/forge-mvmz/ */ - -/* =================================================================================== - * Forge — in-game cheat & editor overlay for RPG Maker MV / MZ (shared core) - * Clean-room reimplementation of MTool's variable/value editor. Vanilla JS, zero deps. - * This file is the engine-agnostic core; the MV/MZ ship files prepend the plugin header. - * Layers: ops (DOM-free, testable) · locks (prototype monkeypatches) · cheats · ui (Shadow DOM) - * =================================================================================== */ -(function (root) { - 'use strict'; - if (root && root.__FORGE_CORE__) return; - - // ---------- environment ---------- - var IS_MZ = (typeof Utils !== 'undefined' && Utils.RPGMAKER_NAME === 'MZ'); - var nodeFs = null, nodePath = null; - try { if (typeof require === 'function') { nodeFs = require('fs'); nodePath = require('path'); } } catch (e) {} - function gameCwd() { try { return process.cwd(); } catch (e) { return '.'; } } - - var PARAM_NAMES = ['Max HP', 'Max MP', 'Attack', 'Defense', 'M.Attack', 'M.Defense', 'Agility', 'Luck']; - - // ---------- small utils ---------- - function clampInt(v, lo, hi) { v = Math.floor(Number(v) || 0); if (v < lo) v = lo; if (hi != null && v > hi) v = hi; return v; } - function defined(x) { return typeof x !== 'undefined' && x !== null; } - function dataName(d) { return d && d.name ? d.name : ''; } - // actor.level may be a getter (number), a method, or only the _level field across engines/plugins. - function actorLevel(a) { if (!a) return 0; if (typeof a.level === 'number') return a.level; if (typeof a.level === 'function') return a.level(); return a._level || 1; } - - // =================================================================================== - // OPS — pure logic, only touches $game*/$data* globals. Unit-testable. - // =================================================================================== - var ops = {}; - - ops.vars = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.variables.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.variables[id]) || ('Variable ' + id); }, - get: function (id) { return defined(window.$gameVariables) ? $gameVariables.value(id) : 0; }, - set: function (id, v) { if (!defined(window.$gameVariables)) return; $gameVariables.setValue(id, typeof v === 'string' && v.trim() !== '' && !isNaN(v) ? Number(v) : v); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - ops.switches = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.switches.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.switches[id]) || ('Switch ' + id); }, - get: function (id) { return defined(window.$gameSwitches) ? $gameSwitches.value(id) : false; }, - set: function (id, v) { if (!defined(window.$gameSwitches)) return; $gameSwitches.setValue(id, !!v); }, - toggle: function (id) { this.set(id, !this.get(id)); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - var INV_TABLES = { item: '$dataItems', weapon: '$dataWeapons', armor: '$dataArmors' }; - ops.inv = { - table: function (kind) { return window[INV_TABLES[kind]] || []; }, - data: function (kind, id) { return this.table(kind)[id] || null; }, - count: function (kind, id) { var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.numItems(d) : 0; }, - maxStack: function (kind, id) { if (MTC._itemMaxOverride > 0) return MTC._itemMaxOverride; var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.maxItems(d) : 99; }, - grant: function (kind, id, n) { var d = this.data(kind, id); if (d && defined(window.$gameParty)) $gameParty.gainItem(d, n, false); if (locks.isItemFrozen(kind, id)) LOCK.items.set(itemKey(kind, id), { kind: kind, id: id, value: this.count(kind, id) }); }, - setCount: function (kind, id, target) { this.grant(kind, id, clampInt(target, 0, null) - this.count(kind, id)); }, - max: function (kind, id) { this.setCount(kind, id, this.maxStack(kind, id)); }, - list: function (kind) { - var t = this.table(kind), out = []; - for (var id = 1; id < t.length; id++) { - var d = t[id]; if (!d || !d.name) continue; - out.push({ id: id, name: d.name, description: d.description || '', iconIndex: d.iconIndex || 0, count: $gameParty.numItems(d) }); - } - return out; - } - }; - - ops.gold = { - get: function () { return defined(window.$gameParty) ? $gameParty.gold() : 0; }, - max: function () { return defined(window.$gameParty) && $gameParty.maxGold ? $gameParty.maxGold() : 99999999; }, - add: function (n) { - if (!defined(window.$gameParty)) return; - if (LOCK.gold != null) { LOCK.gold = clampInt(LOCK.gold + n, 0, this.max()); (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); return; } - if (n >= 0) $gameParty.gainGold(n); else $gameParty.loseGold(-n); - }, - set: function (target) { this.add(clampInt(target, 0, this.max()) - this.get()); } - }; - - ops.actors = { - list: function () { - var out = []; - if (!defined(window.$dataActors)) return out; - for (var id = 1; id < $dataActors.length; id++) { - var d = $dataActors[id]; if (!d) continue; - var a = $gameActors.actor(id); - out.push({ id: id, name: a ? a.name() : d.name, level: a ? actorLevel(a) : (d.initialLevel || 1), inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false }); - } - return out; - }, - get: function (id) { - var a = $gameActors.actor(id); if (!a) return null; - var params = []; - for (var p = 0; p < 8; p++) params.push({ id: p, name: PARAM_NAMES[p], value: a.param(p) }); - var skills = []; - if (defined(window.$dataSkills)) for (var s = 1; s < $dataSkills.length; s++) { var sk = $dataSkills[s]; if (sk && sk.name) skills.push({ id: s, name: sk.name, learned: a.isLearnedSkill ? a.isLearnedSkill(s) : (a.skills().indexOf(sk) >= 0) }); } - var equips = [], slots = a.equipSlots ? a.equipSlots() : [], cur = a.equips(); - for (var e = 0; e < slots.length; e++) equips.push({ slot: e, etypeId: slots[e], current: cur[e] ? cur[e].name : '(none)' }); - return { - id: id, name: a.name(), level: actorLevel(a), exp: a.currentExp ? a.currentExp() : 0, - nextExp: a.nextLevelExp ? a.nextLevelExp() : 0, - hp: a.hp, mp: a.mp, tp: a.tp, mhp: a.mhp, mmp: a.mmp, - params: params, skills: skills, equips: equips, - inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false - }; - }, - setLevel: function (id, lv) { var a = $gameActors.actor(id); if (a) { var cap = a.maxLevel ? a.maxLevel() : 99; a.changeLevel(clampInt(lv, 1, cap), false); a.refresh(); } }, - setExp: function (id, exp) { var a = $gameActors.actor(id); if (a) { a.changeExp(clampInt(exp, 0, null), false); a.refresh(); } }, - setHp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setHp(clampInt(v, 0, a.mhp)); a.refresh(); } }, - setMp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setMp(clampInt(v, 0, a.mmp)); a.refresh(); } }, - setTp: function (id, v) { var a = $gameActors.actor(id); if (a && a.setTp) { a.setTp(clampInt(v, 0, 100)); a.refresh(); } }, - addParam: function (id, pid, delta) { var a = $gameActors.actor(id); if (a) { a.addParam(pid, Math.floor(delta)); a.refresh(); } }, - // param(pid) = round((paramBase+paramPlus) * paramRate * paramBuffRate) clamped to [paramMin,paramMax]. - // addParam only mutates paramPlus, so invert the rate to land the *visible* param on target. - setParam: function (id, pid, target) { - var a = $gameActors.actor(id); if (!a) return; - var rate = (a.paramRate ? a.paramRate(pid) : 1) * (a.paramBuffRate ? a.paramBuffRate(pid) : 1) || 1; - var cap = a.paramMax ? a.paramMax(pid) : null; - var want = clampInt(target, a.paramMin ? a.paramMin(pid) : 0, cap); - var base = a.paramBase ? a.paramBase(pid) : 0, plus = (a.paramPlus ? a.paramPlus(pid) : (a._paramPlus ? a._paramPlus[pid] : 0)) || 0; - a.addParam(pid, Math.round(want / rate) - base - plus); - a.refresh(); - }, - learn: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.learnSkill(skillId); }, - forget: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.forgetSkill(skillId); }, - equip: function (id, slotId, kind, itemId) { var a = $gameActors.actor(id); if (!a) return; var item = itemId ? ops.inv.data(kind, itemId) : null; if (a.forceChangeEquip) a.forceChangeEquip(slotId, item); else a.changeEquip(slotId, item); a.refresh(); }, - recover: function (id) { var a = $gameActors.actor(id); if (a) { a.recoverAll(); a.refresh(); } }, - setName: function (id, name) { var a = $gameActors.actor(id); if (a) a.setName(String(name)); }, - addToParty: function (id) { $gameParty.addActor(id); }, - removeFromParty: function (id) { $gameParty.removeActor(id); } - }; - - ops.party = { - members: function () { return defined(window.$gameParty) ? $gameParty.members().map(function (a) { return { id: a.actorId(), name: a.name(), level: actorLevel(a) }; }) : []; }, - add: function (id) { if (defined(window.$gameParty)) $gameParty.addActor(id); }, - remove: function (id) { if (defined(window.$gameParty)) $gameParty.removeActor(id); }, - steps: function () { return defined(window.$gameParty) ? $gameParty.steps() : 0; }, - // RPG Maker derives playtime from frame count (Game_System has no playtime()). - playtime: function () { return (typeof Graphics !== 'undefined' && Graphics.frameCount) ? Math.floor(Graphics.frameCount / 60) : 0; } - }; - - ops.map = { - list: function () { - var out = []; - if (!defined(window.$dataMapInfos)) return out; - for (var id = 1; id < $dataMapInfos.length; id++) { var m = $dataMapInfos[id]; if (m) out.push({ id: id, name: m.name || ('Map ' + id) }); } - return out; - }, - current: function () { if (!defined(window.$gameMap) || !defined(window.$gamePlayer)) return { mapId: 0, x: 0, y: 0, dir: 2 }; return { mapId: $gameMap.mapId(), x: $gamePlayer.x, y: $gamePlayer.y, dir: $gamePlayer.direction ? $gamePlayer.direction() : 2 }; }, - teleport: function (mapId, x, y, dir, fade) { $gamePlayer.reserveTransfer(mapId, clampInt(x, 0, null), clampInt(y, 0, null), dir || 0, fade == null ? 0 : fade); }, - loadMapFile: function (mapId) { - if (!nodeFs) return null; - try { var f = 'Map' + String(mapId).padStart(3, '0') + '.json'; return JSON.parse(nodeFs.readFileSync(nodePath.join(gameCwd(), 'data', f), 'utf8')); } - catch (e) { return null; } - }, - noclip: function (b) { locks.state.noclip = !!b; if (defined(window.$gamePlayer)) $gamePlayer.setThrough(!!b); }, - isNoclip: function () { return !!locks.state.noclip; }, - speed: function (n) { if (defined(window.$gamePlayer)) $gamePlayer.setMoveSpeed(clampInt(n, 1, 8)); } - }; - - ops.commonev = { - list: function () { - var out = []; - if (!defined(window.$dataCommonEvents)) return out; - for (var id = 1; id < $dataCommonEvents.length; id++) { var c = $dataCommonEvents[id]; if (c) out.push({ id: id, name: c.name || ('Common Event ' + id) }); } - return out; - }, - run: function (id) { if (defined(window.$gameTemp)) $gameTemp.reserveCommonEvent(id); } - }; - - ops.battle = { - inBattle: function () { - if (typeof SceneManager === 'undefined' || !SceneManager._scene) return false; - if (typeof Scene_Battle !== 'undefined' && SceneManager._scene instanceof Scene_Battle) return true; - var c = SceneManager._scene.constructor; // fallback if class binding unavailable - return !!(c && c.name === 'Scene_Battle'); - }, - instantWin: function () { - if (typeof $gameTroop === 'undefined' || !$gameTroop) return; - $gameTroop.members().forEach(function (e) { - e.setHp(0); - if (e.deathStateId && e.addState) e.addState(e.deathStateId()); // mark actually dead - else if (e.die) e.die(); - if (e.performCollapse) e.performCollapse(); // visual collapse - e.refresh(); - }); - if (typeof BattleManager !== 'undefined' && BattleManager.checkBattleEnd) BattleManager.checkBattleEnd(); - }, - flee: function () { if (typeof BattleManager !== 'undefined' && BattleManager.processAbort) BattleManager.processAbort(); } - }; - - // =================================================================================== - // LOCKS — prototype-level monkeypatches + per-frame re-assertion. Installed once. - // =================================================================================== - var LOCK = { vars: new Map(), switches: new Map(), items: new Map(), gold: null, stats: new Map(), noclip: false }; - function itemKey(kind, id) { return kind + ':' + id; } - - var locks = { - state: LOCK, - _installed: false, - install: function () { - if (this._installed) return; this._installed = true; - // Variables - if (typeof Game_Variables !== 'undefined') { - var _sv = Game_Variables.prototype.setValue; - Game_Variables.prototype.setValue = function (id, value) { if (LOCK.vars.has(id)) value = LOCK.vars.get(id); _sv.call(this, id, value); }; - } - // Switches - if (typeof Game_Switches !== 'undefined') { - var _ss = Game_Switches.prototype.setValue; - Game_Switches.prototype.setValue = function (id, value) { if (LOCK.switches.has(id)) value = LOCK.switches.get(id); _ss.call(this, id, value); }; - } - // Gold: substitute (not block) so freezeGold can re-snapshot on edit; item freeze is tick-based - // (NOT a gainItem block) so equip bookkeeping / give-take still runs, corrected next frame. - if (typeof Game_Party !== 'undefined') { - var _gg = Game_Party.prototype.gainGold; - locks._origGainGold = _gg; - Game_Party.prototype.gainGold = function (n) { if (LOCK.gold != null) return; _gg.call(this, n); }; - } - // Battle: god mode + OHKO via one executeHpDamage override - if (typeof Game_Action !== 'undefined') { - var _ehd = Game_Action.prototype.executeHpDamage; - Game_Action.prototype.executeHpDamage = function (target, value) { - if (CHEAT.god && target.isActor && target.isActor() && value > 0) value = 0; - if (CHEAT.ohko && this.subject().isActor && this.subject().isActor() && target.isEnemy && target.isEnemy()) value = target.hp; - _ehd.call(this, target, value); - }; - } - // God mode also blocks non-action HP loss for actors (slip/regen, event Change-HP) + floor damage. - if (typeof Game_Battler !== 'undefined' && Game_Battler.prototype.gainHp) { - var _gh = Game_Battler.prototype.gainHp; - Game_Battler.prototype.gainHp = function (value) { if (CHEAT.god && this.isActor && this.isActor() && value < 0) value = 0; _gh.call(this, value); }; - } - if (typeof Game_Actor !== 'undefined' && Game_Actor.prototype.executeFloorDamage) { - var _efd = Game_Actor.prototype.executeFloorDamage; - Game_Actor.prototype.executeFloorDamage = function () { if (CHEAT.god) return; _efd.call(this); }; - } - // No encounters - if (typeof Game_Player !== 'undefined') { - var _epv = Game_Player.prototype.encounterProgressValue; - Game_Player.prototype.encounterProgressValue = function () { return CHEAT.noEncounter ? 0 : _epv.call(this); }; - } - // Speedhack: drive the scene update extra times per frame (speed>1) or skip frames (speed<1). - // Input is still read once per real frame, so the whole game (movement, anim, battle, messages, - // events, timers) runs faster/slower. Works for MV and MZ (both expose SceneManager.updateScene). - if (typeof SceneManager !== 'undefined' && SceneManager.updateScene) { - var _updateScene = SceneManager.updateScene, _spdAcc = 0; - // Extra updates are only safe in a steady scene: the scene must be started, not changing, and - // (on a map) not mid-transfer — otherwise $dataMap is briefly null and the scroll code throws. - function speedSafe(mgr) { - if (mgr.isCurrentSceneStarted) { if (!mgr.isCurrentSceneStarted()) return false; } // MV - else if (mgr._scene && mgr._scene.isStarted) { if (!mgr._scene.isStarted()) return false; } // MZ - if (mgr.isSceneChanging && mgr.isSceneChanging()) return false; // mid scene transition - if (typeof $gamePlayer !== 'undefined' && $gamePlayer && $gamePlayer.isTransferring && $gamePlayer.isTransferring()) return false; - if (typeof DataManager !== 'undefined' && DataManager.isMapLoaded && !DataManager.isMapLoaded()) return false; // map (re)loading - return true; - } - SceneManager.updateScene = function () { - var sp = CHEAT.speed || 1; - if (sp >= 1) { - _updateScene.call(this); - if (sp > 1 && this._scene && typeof this._scene.update === 'function' && speedSafe(this)) { - _spdAcc += (sp - 1); - var guard = 0; - while (_spdAcc >= 1 && guard++ < 64) { _spdAcc -= 1; try { this._scene.update(); } catch (e) { _spdAcc = 0; break; } } - } else { _spdAcc = 0; } // not safe / not boosting -> don't bank up a burst of catch-up updates - } else { - _spdAcc += sp; - if (_spdAcc >= 1) { _spdAcc -= 1; _updateScene.call(this); } - else if (this._scene) { // skip the game advance this frame, keep start/ready bookkeeping - var u = this._scene.update; this._scene.update = function () {}; - try { _updateScene.call(this); } finally { this._scene.update = u; } - } - } - }; - } - // Clear stale freeze snapshots when the engine swaps in fresh game objects (new game / load). - if (typeof DataManager !== 'undefined') { - if (DataManager.setupNewGame) { var _sng = DataManager.setupNewGame; DataManager.setupNewGame = function () { locks.clearAll(); _sng.call(this); }; } - if (DataManager.extractSaveContents) { var _esc = DataManager.extractSaveContents; DataManager.extractSaveContents = function (c) { locks.clearAll(); return _esc.call(this, c); }; } - } - }, - // Freeze setters update both the lock map and the live value once. Maps store parsed objects so - // the per-frame tick never re-parses string keys. - freezeVar: function (id, on) { if (on) { LOCK.vars.set(id, ops.vars.get(id)); ops.vars.set(id, ops.vars.get(id)); } else LOCK.vars.delete(id); }, - freezeSwitch: function (id, on) { if (on) LOCK.switches.set(id, ops.switches.get(id)); else LOCK.switches.delete(id); }, - freezeItem: function (kind, id, on) { var k = itemKey(kind, id); if (on) LOCK.items.set(k, { kind: kind, id: id, value: ops.inv.count(kind, id) }); else LOCK.items.delete(k); }, - freezeGold: function (on) { LOCK.gold = on ? ops.gold.get() : null; }, - freezeStat: function (actorId, stat, on) { var k = actorId + ':' + stat; if (on) { var a = defined(window.$gameActors) ? $gameActors.actor(actorId) : null; LOCK.stats.set(k, { actorId: actorId, stat: stat, value: a ? a[stat] : 0 }); } else LOCK.stats.delete(k); }, - isVarFrozen: function (id) { return LOCK.vars.has(id); }, - isSwitchFrozen: function (id) { return LOCK.switches.has(id); }, - isItemFrozen: function (kind, id) { return LOCK.items.has(itemKey(kind, id)); }, - isStatFrozen: function (actorId, stat) { return LOCK.stats.has(actorId + ':' + stat); }, - // Per-frame: re-assert values the overrides can't catch (hp/mp/tp, gold target, item counts, noclip). - tick: function () { - if (!LOCK.noclip && LOCK.gold == null && !LOCK.stats.size && !LOCK.items.size) return; // early-out - if (LOCK.noclip && defined(window.$gamePlayer) && !$gamePlayer.isThrough()) $gamePlayer.setThrough(true); - if (LOCK.gold != null && defined(window.$gameParty) && $gameParty.gold() !== LOCK.gold) (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); - if (LOCK.stats.size && defined(window.$gameActors)) { - LOCK.stats.forEach(function (e) { - var a = $gameActors.actor(e.actorId); if (!a) return; - if (e.stat === 'hp' && a.hp !== e.value) a.setHp(Math.min(e.value, a.mhp)); - else if (e.stat === 'mp' && a.mp !== e.value) a.setMp(Math.min(e.value, a.mmp)); - else if (e.stat === 'tp' && a.tp !== e.value && a.setTp) a.setTp(e.value); - }); - } - if (LOCK.items.size && defined(window.$gameParty)) { - LOCK.items.forEach(function (e) { if (ops.inv.count(e.kind, e.id) !== e.value) { var d = ops.inv.data(e.kind, e.id); if (d) $gameParty.gainItem(d, e.value - ops.inv.count(e.kind, e.id), false); } }); - } - }, - summary: function () { - var out = []; - LOCK.vars.forEach(function (v, id) { out.push({ type: 'var', id: id, label: 'Var ' + id + ' · ' + ops.vars.name(id), value: v }); }); - LOCK.switches.forEach(function (v, id) { out.push({ type: 'switch', id: id, label: 'Switch ' + id + ' · ' + ops.switches.name(id), value: v ? 'ON' : 'OFF' }); }); - LOCK.items.forEach(function (e, key) { out.push({ type: 'item', key: key, label: e.kind + ' ' + e.id + ' · ' + (ops.inv.data(e.kind, e.id) ? ops.inv.data(e.kind, e.id).name : ''), value: e.value }); }); - LOCK.stats.forEach(function (e, key) { out.push({ type: 'stat', key: key, label: 'Actor ' + e.actorId + ' · ' + e.stat.toUpperCase(), value: e.value }); }); - if (LOCK.gold != null) out.push({ type: 'gold', label: 'Gold (frozen)', value: LOCK.gold }); - if (LOCK.noclip) out.push({ type: 'noclip', label: 'Noclip (active)', value: 'ON' }); - return out; - }, - clearAll: function () { LOCK.vars.clear(); LOCK.switches.clear(); LOCK.items.clear(); LOCK.stats.clear(); LOCK.gold = null; if (LOCK.noclip) ops.map.noclip(false); } - }; - - // =================================================================================== - // CHEATS — global toggles consumed by the lock overrides + battle actions. - // =================================================================================== - var CHEAT = { god: false, ohko: false, noEncounter: false, speed: 1, uiFocused: false }; - var cheats = { - state: CHEAT, - setGod: function (b) { CHEAT.god = !!b; }, - setOhko: function (b) { CHEAT.ohko = !!b; }, - setNoEncounter: function (b) { CHEAT.noEncounter = !!b; }, - setSpeed: function (n) { CHEAT.speed = Math.max(0.1, Math.min(Number(n) || 1, 16)); }, - toggleSpeed: function () { this.setSpeed(CHEAT.speed !== 1 ? 1 : (MTC._speedBoost || 2)); return CHEAT.speed; }, - instantWin: function () { ops.battle.instantWin(); }, - flee: function () { ops.battle.flee(); } - }; - - // expose the assembled API (UI is attached below if a real DOM is present) - var MTC = { env: { IS_MZ: IS_MZ }, ops: ops, locks: locks, cheats: cheats, LOCK: LOCK, CHEAT: CHEAT, PARAM_NAMES: PARAM_NAMES, _itemMaxOverride: 0, _hotkey: 'F10', _speedKey: 'Control', _speedBoost: 2 }; - if (root) { root.Forge = MTC; root.__FORGE_CORE__ = true; } - if (typeof module !== 'undefined' && module.exports) module.exports = MTC; - - // ---- engine boot hooks (guarded; only when classes exist) ---- - if (typeof Scene_Base !== 'undefined') { - var _su = Scene_Base.prototype.update; - Scene_Base.prototype.update = function () { _su.call(this); try { locks.tick(); } catch (e) {} }; - } - // install lock overrides as soon as the game classes are available - try { locks.install(); } catch (e) {} - - // ---- UI: attach only when a real browser DOM is available (skipped in Node tests) ---- - if (typeof document !== 'undefined' && document.body && typeof document.body.attachShadow === 'function' && typeof window !== 'undefined') { - try { MTC.ui = buildUI(MTC); } catch (e) { try { console.error('[Forge] UI init failed', e); } catch (_) {} } - } - - // =================================================================================== - // UI — Shadow-DOM overlay. Inlined so the single ship file works with zero deps. - // =================================================================================== - function buildUI(API) { - var LS = 'forge:'; - function store(k, v) { try { localStorage.setItem(LS + k, JSON.stringify(v)); } catch (e) {} } - function load(k, d) { try { var s = localStorage.getItem(LS + k); return s == null ? d : JSON.parse(s); } catch (e) { return d; } } - // persisted speed settings (UI-controlled; override core/param defaults if the user changed them) - API._speedKey = load('speedKey', API._speedKey || 'Control'); - API._speedUseKey = load('speedUseKey', true); - API._speedBoost = load('speedBoost', API._speedBoost || 2); - if (!API._speedUseKey) API.cheats.setSpeed(API._speedBoost); // "always on" mode applies immediately - - function el(tag, props, kids) { - var n = document.createElement(tag); - if (props) for (var k in props) { - if (k === 'class') n.className = props[k]; - else if (k === 'text') n.textContent = props[k]; - else if (k === 'html') n.innerHTML = props[k]; - else if (k === 'style') n.setAttribute('style', props[k]); - else if (k.slice(0, 2) === 'on' && typeof props[k] === 'function') n.addEventListener(k.slice(2).toLowerCase(), props[k]); - else if (props[k] != null) n.setAttribute(k, props[k]); - } - if (kids) (Array.isArray(kids) ? kids : [kids]).forEach(function (c) { if (c != null) n.appendChild(typeof c === 'string' ? document.createTextNode(c) : c); }); - return n; - } - - // Inline SVG icons (no font/emoji dependency -> render identically on Windows/macOS/Linux). - function svg(inner) { return '' + inner + ''; } - var ICONS = { - vars: svg(''), - switches: svg(''), - inv: svg(''), - actors: svg(''), - party: svg(''), - map: svg(''), - commonev: svg(''), - locks: svg(''), - battle: svg(''), - tool: svg(''), - refresh: svg(''), - theme: svg(''), - close: svg(''), - lock: svg(''), - unlock: svg('') - }; - - var CSS = "\ -:host{position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important;contain:none}\ -*{box-sizing:border-box;font-family:var(--font-ui);-webkit-user-select:none;user-select:none}\ -#forge-root{--font-ui:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--font-mono:ui-monospace,'Cascadia Code',Consolas,monospace;\ ---fg-bg:#15171c;--fg-bg-elev:#1c1f27;--fg-bg-input:#21242d;--fg-bg-row-alt:#181b22;--fg-border:#2b2f3a;--fg-border-strong:#3a3f4d;\ ---fg-text:#e6e9ef;--fg-text-dim:#9aa1b1;--fg-text-faint:#646b7d;--fg-accent:#5b8cff;--fg-accent-weak:#2a3a63;--fg-success:#3ecf8e;--fg-warn:#f0b132;--fg-danger:#f0556a;--fg-frozen:#8b5cf6;\ ---sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--rad-sm:4px;--rad-md:7px;--rad-lg:11px;--rad-pill:999px;\ ---sh-panel:0 18px 50px rgba(0,0,0,.5),0 0 0 1px var(--fg-border);--row-h:30px;--rail-w:64px;--ease:cubic-bezier(.2,.7,.3,1);--dur:120ms;\ ---fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;color:var(--fg-text);font-size:var(--fs-md)}\ -#forge-root[data-theme=light]{--fg-bg:#f6f7f9;--fg-bg-elev:#fff;--fg-bg-input:#eef0f4;--fg-bg-row-alt:#f0f2f5;--fg-border:#dde0e7;--fg-border-strong:#c7ccd8;--fg-text:#1a1d24;--fg-text-dim:#5a6172;--fg-text-faint:#9097a6;--fg-accent-weak:#dce6ff}\ -.fg-panel{position:fixed;display:flex;flex-direction:column;background:var(--fg-bg);border-radius:var(--rad-lg);box-shadow:var(--sh-panel);overflow:hidden;z-index:2147483000;min-width:480px;min-height:360px;pointer-events:auto}\ -.fg-titlebar{display:flex;align-items:center;gap:6px;height:33px;padding:0 6px 0 10px;background:var(--fg-bg-elev);border-bottom:1px solid var(--fg-border);cursor:move;flex:0 0 auto}\ -.fg-brand{font-weight:700;font-size:var(--fs-md);letter-spacing:.3px;color:var(--fg-text);margin-right:8px;white-space:nowrap}\ -.fg-brand b{color:var(--fg-accent)}\ -.fg-search{flex:1;height:23px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:var(--rad-md);color:var(--fg-text);padding:0 9px;font-size:var(--fs-sm);outline:none;min-width:80px}\ -.fg-search:focus{border-color:var(--fg-accent)}\ -.fg-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:var(--rad-md);background:transparent;color:var(--fg-text-dim);border:0;cursor:pointer;font-size:13px;transition:background var(--dur)}\ -.fg-iconbtn:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-body{flex:1;display:flex;min-height:0}\ -.fg-rail{flex:0 0 var(--rail-w);display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-1);background:var(--fg-bg-elev);border-right:1px solid var(--fg-border);overflow-y:auto}\ -.fg-rail__item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) 0;border-radius:var(--rad-md);cursor:pointer;color:var(--fg-text-dim);font-size:10px;transition:all var(--dur);border:0;background:transparent}\ -.fg-rail__item .ic{display:flex;align-items:center;justify-content:center}\n.fg-rail__item .ic svg{width:19px;height:19px}\n.fg-iconbtn svg{width:15px;height:15px}\n.fg-lock svg{width:15px;height:15px}\n.fg-launcher svg{width:21px;height:21px}\ -.fg-rail__item:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-rail__item.is-active{background:var(--fg-accent-weak);color:var(--fg-accent)}\ -.fg-content{flex:1;display:flex;flex-direction:column;min-width:0}\ -.fg-section-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4) var(--sp-2);flex:0 0 auto}\ -.fg-section-head h2{margin:0;font-size:var(--fs-lg);font-weight:600}\ -.fg-count{font-size:var(--fs-xs);color:var(--fg-text-faint);background:var(--fg-bg-input);padding:2px 7px;border-radius:var(--rad-pill)}\ -.fg-spacer{flex:1}\ -.fg-subtoolbar{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-2);flex-wrap:wrap}\ -.fg-segmented{display:inline-flex;background:var(--fg-bg-input);border-radius:var(--rad-md);padding:2px}\ -.fg-segmented button{border:0;background:transparent;color:var(--fg-text-dim);padding:3px 12px;border-radius:5px;cursor:pointer;font-size:var(--fs-sm)}\ -.fg-segmented button.is-active{background:var(--fg-accent);color:#fff}\ -.fg-btn{border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text);padding:4px 11px;border-radius:var(--rad-md);cursor:pointer;font-size:var(--fs-sm);transition:all var(--dur)}\ -.fg-btn:hover{border-color:var(--fg-accent);color:var(--fg-accent)}\ -.fg-btn--ghost{background:transparent;border-color:transparent;color:var(--fg-text-dim)}\ -.fg-btn--danger:hover{border-color:var(--fg-danger);color:var(--fg-danger)}\ -.fg-list{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;border-top:1px solid var(--fg-border)}\ -.fg-list__sizer{position:relative;width:100%}\ -.fg-list__window{position:absolute;top:0;left:0;right:0}\ -.fg-row{display:flex;align-items:center;gap:var(--sp-2);height:var(--row-h);padding:0 var(--sp-4);border-bottom:1px solid var(--fg-border);font-size:var(--fs-sm)}\ -.fg-row:nth-child(even){background:var(--fg-bg-row-alt)}\ -.fg-row.is-frozen{box-shadow:inset 3px 0 0 var(--fg-frozen)}\ -.fg-row.is-selected{background:var(--fg-accent-weak)!important;box-shadow:inset 2px 0 0 var(--fg-accent)}\ -.fg-cell--id{flex:0 0 52px;color:var(--fg-text-faint);font-family:var(--font-mono);font-size:var(--fs-xs)}\ -.fg-cell--name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\ -.fg-cell--name .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--fg-accent);margin-right:6px;vertical-align:middle}\ -.fg-cell--val{flex:0 0 auto;display:flex;align-items:center;gap:4px}\ -.fg-stepper{display:inline-flex;align-items:center;gap:3px}\ -.fg-step{min-width:30px;width:auto;padding:0 5px;height:22px;white-space:nowrap;border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text-dim);border-radius:5px;cursor:pointer;font-size:var(--fs-xs);font-family:var(--font-mono)}\ -.fg-step:hover{color:var(--fg-accent);border-color:var(--fg-accent)}\ -.fg-num{width:68px;height:22px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:5px;color:var(--fg-text);text-align:right;padding:0 6px;font-family:var(--font-mono);font-size:var(--fs-sm);outline:none}\ -.fg-num:focus{border-color:var(--fg-accent)}\ -.fg-toggle{width:38px;height:21px;border-radius:var(--rad-pill);background:var(--fg-border-strong);position:relative;cursor:pointer;transition:background var(--dur);border:0;flex:0 0 auto}\ -.fg-toggle::after{content:'';position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform var(--dur)}\ -.fg-toggle.is-on{background:var(--fg-success)}\ -.fg-toggle.is-on::after{transform:translateX(17px)}\ -.fg-lock{width:24px;height:24px;border:0;background:transparent;color:var(--fg-text-faint);cursor:pointer;border-radius:5px;font-size:13px;flex:0 0 auto}\ -.fg-lock:hover{color:var(--fg-frozen);background:var(--fg-bg-input)}\ -.fg-lock.is-frozen{color:var(--fg-frozen)}\ -.fg-statusbar{display:flex;align-items:center;gap:var(--sp-2);height:24px;padding:0 var(--sp-3);background:var(--fg-bg-elev);border-top:1px solid var(--fg-border);font-size:var(--fs-xs);color:var(--fg-text-faint);flex:0 0 auto}\ -.fg-detail{padding:var(--sp-3) var(--sp-4);overflow-y:auto;flex:1}\ -.fg-field{display:flex;align-items:center;gap:var(--sp-2);padding:5px 0;border-bottom:1px solid var(--fg-border);min-width:0}\n.fg-field .fg-stepper{margin-left:auto;flex:0 0 auto}\ -.fg-field label{flex:0 0 96px;color:var(--fg-text-dim);font-size:var(--fs-sm)}\ -.fg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--sp-2) var(--sp-4)}\ -.fg-toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;z-index:2147483100;pointer-events:none}\ -.fg-toast{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-left:3px solid var(--fg-accent);color:var(--fg-text);padding:8px 14px;border-radius:var(--rad-md);font-size:var(--fs-sm);box-shadow:var(--sh-panel);animation:fgin var(--dur) var(--ease)}\ -.fg-toast.warn{border-left-color:var(--fg-warn)}.fg-toast.danger{border-left-color:var(--fg-danger)}.fg-toast.ok{border-left-color:var(--fg-success)}\ -@keyframes fgin{from{opacity:0;transform:translateY(6px)}to{opacity:1}}\ -.fg-launcher{position:fixed;pointer-events:auto;width:42px;height:42px;border-radius:50%;background:var(--fg-accent);color:#fff;border:0;cursor:pointer;font-size:18px;z-index:2147482999;box-shadow:var(--sh-panel);display:flex;align-items:center;justify-content:center}\ -.fg-launcher:hover{filter:brightness(1.1)}\ -.fg-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize}\ -.fg-resize::after{content:'';position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-right:2px solid var(--fg-text-faint);border-bottom:2px solid var(--fg-text-faint)}\ -.fg-empty{padding:var(--sp-5);text-align:center;color:var(--fg-text-faint);font-size:var(--fs-sm)}\ -.fg-confirm{position:fixed;pointer-events:auto;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);z-index:2147483200}\ -.fg-confirm__box{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-radius:var(--rad-lg);padding:var(--sp-4);max-width:340px;box-shadow:var(--sh-panel)}\ -.fg-confirm__box p{margin:0 0 var(--sp-4)}.fg-confirm__row{display:flex;justify-content:flex-end;gap:var(--sp-2)}\ -input::placeholder{color:var(--fg-text-faint)}\ -::-webkit-scrollbar{width:9px;height:9px}\ -::-webkit-scrollbar-track{background:transparent}\ -::-webkit-scrollbar-thumb{background:var(--fg-border-strong);border-radius:5px}\ -::-webkit-scrollbar-thumb:hover{background:var(--fg-text-faint)}"; - - // ---------- shadow host ---------- - var host = el('div', { id: 'forge-host' }); - host.style.cssText = 'position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important'; - document.body.appendChild(host); - var shadow = host.attachShadow({ mode: 'open' }); - var rootEl = el('div', { id: 'forge-root' }); - rootEl.setAttribute('data-theme', load('theme', 'dark')); - shadow.appendChild(el('style', { text: CSS })); - shadow.appendChild(rootEl); - - // Swallow events so panel interaction never leaks to the game. BUBBLE phase: the panel's own - // inputs receive the event first (target phase), then we stop it before it reaches document - // (where RPG Maker's Input/TouchInput listen). Capture phase would block the inputs themselves. - ['keydown', 'keyup', 'keypress', 'wheel', 'mousedown', 'mouseup', 'mousemove', 'click', 'dblclick', - 'pointerdown', 'pointerup', 'pointermove', 'pointercancel', 'touchstart', 'touchend', 'touchmove', 'touchcancel', 'contextmenu'].forEach(function (t) { - rootEl.addEventListener(t, function (e) { e.stopPropagation(); }, false); - }); - function isEditable(el) { return el && (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA'); } - rootEl.addEventListener('focusin', function (e) { if (isEditable(e.target)) API.CHEAT.uiFocused = true; }, true); - rootEl.addEventListener('focusout', function () { setTimeout(function () { API.CHEAT.uiFocused = !!(shadow.activeElement && isEditable(shadow.activeElement)); }, 0); }, true); - window.addEventListener('blur', function () { API.CHEAT.uiFocused = false; }); // never latch the game-input gate - // Backup engine-level gate: while a panel input is focused, drop the game's keyboard handler. - if (typeof Input !== 'undefined' && Input._onKeyDown) { var _okd = Input._onKeyDown; Input._onKeyDown = function (e) { if (API.CHEAT.uiFocused) return; _okd.call(this, e); }; } - if (typeof Input !== 'undefined' && Input._onKeyUp) { var _oku = Input._onKeyUp; Input._onKeyUp = function (e) { if (API.CHEAT.uiFocused) return; _oku.call(this, e); }; } - - // ---------- toasts ---------- - var toasts = el('div', { class: 'fg-toasts' }); rootEl.appendChild(toasts); - function toast(msg, kind) { var t = el('div', { class: 'fg-toast ' + (kind || ''), text: msg }); toasts.appendChild(t); setTimeout(function () { t.remove(); }, 2200); } - function confirmBox(msg, onYes) { - var box = el('div', { class: 'fg-confirm' }, el('div', { class: 'fg-confirm__box' }, [ - el('p', { text: msg }), - el('div', { class: 'fg-confirm__row' }, [ - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Cancel', onclick: function () { box.remove(); } }), - el('button', { class: 'fg-btn fg-btn--danger', text: 'Confirm', onclick: function () { box.remove(); onYes(); } }) - ]) - ])); - rootEl.appendChild(box); - } - - // ---------- panel skeleton ---------- - var vw = window.innerWidth || 816, vh = window.innerHeight || 624; - // Default size fits the window (many MV games are ~816x624); leave a margin. - var st = load('panel', { x: 16, y: 16, w: Math.min(880, vw - 32), h: Math.min(560, vh - 32) }); - st.w = Math.max(420, Math.min(st.w, vw - 8)); st.h = Math.max(320, Math.min(st.h, vh - 8)); - st.x = Math.max(0, Math.min(st.x, vw - st.w)); st.y = Math.max(0, Math.min(st.y, vh - st.h)); // keep fully on-screen - var panel = el('div', { class: 'fg-panel' }); - panel.style.left = st.x + 'px'; panel.style.top = st.y + 'px'; panel.style.width = st.w + 'px'; panel.style.height = st.h + 'px'; - var search = el('input', { class: 'fg-search', type: 'text', placeholder: 'Search… (Ctrl+K)' }); - var titlebar = el('div', { class: 'fg-titlebar' }, [ - el('span', { class: 'fg-brand', html: 'Forge' }), - search, - el('button', { class: 'fg-iconbtn', title: 'Rescan', html: ICONS.refresh, onclick: function () { render(); toast('Rescanned'); } }), - el('button', { class: 'fg-iconbtn', title: 'Theme', html: ICONS.theme, onclick: function () { var t = rootEl.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; rootEl.setAttribute('data-theme', t); store('theme', t); } }), - el('button', { class: 'fg-iconbtn', title: 'Close (F10)', html: ICONS.close, onclick: function () { hide(); } }) - ]); - var rail = el('div', { class: 'fg-rail' }); - var content = el('div', { class: 'fg-content' }); - var statusbar = el('div', { class: 'fg-statusbar' }); - panel.appendChild(titlebar); - panel.appendChild(el('div', { class: 'fg-body' }, [rail, content])); - panel.appendChild(statusbar); - var resize = el('div', { class: 'fg-resize' }); panel.appendChild(resize); - rootEl.appendChild(panel); - - // ---------- launcher (docks to bottom-right corner by default; 'launcherPos' is a fresh key so - // any stale mid-screen position from older builds is ignored) ---------- - var lp = load('launcherPos', { x: vw - 56, y: vh - 56 }); - lp.x = Math.max(4, Math.min(lp.x, vw - 46)); lp.y = Math.max(4, Math.min(lp.y, vh - 46)); - var launcher = el('button', { class: 'fg-launcher', html: ICONS.tool, title: 'Forge (F10)' }); - launcher.style.left = lp.x + 'px'; launcher.style.top = lp.y + 'px'; - launcher.addEventListener('click', function (e) { if (!launcher._dragged) toggle(); }); - rootEl.appendChild(launcher); - makeDraggable(launcher, launcher, function (x, y) { store('launcherPos', { x: x, y: y }); }, true); - - // ---------- drag / resize ---------- - function makeDraggable(handle, target, onEnd, isLauncher) { - handle.addEventListener('mousedown', function (e) { - if (e.target.closest && e.target.closest('input,button.fg-iconbtn')) return; - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ox = parseInt(target.style.left) || 0, oy = parseInt(target.style.top) || 0, moved = false; - if (isLauncher) target._dragged = false; - function mv(ev) { ev.stopPropagation(); var dx = ev.clientX - sx, dy = ev.clientY - sy; if (Math.abs(dx) + Math.abs(dy) > 3) moved = true; var nx = Math.max(0, Math.min(window.innerWidth - target.offsetWidth, ox + dx)), ny = Math.max(0, Math.min(window.innerHeight - 30, oy + dy)); target.style.left = nx + 'px'; target.style.top = ny + 'px'; if (isLauncher) target._dragged = moved; } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); if (onEnd) onEnd(parseInt(target.style.left), parseInt(target.style.top)); setTimeout(function () { if (isLauncher) target._dragged = false; }, 0); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - } - makeDraggable(titlebar, panel, function (x, y) { st.x = x; st.y = y; store('panel', st); }); - resize.addEventListener('mousedown', function (e) { - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ow = panel.offsetWidth, oh = panel.offsetHeight; - function mv(ev) { ev.stopPropagation(); var w = Math.max(480, ow + ev.clientX - sx), h = Math.max(360, oh + ev.clientY - sy); panel.style.width = w + 'px'; panel.style.height = h + 'px'; if (activeRenderer && activeRenderer.onResize) activeRenderer.onResize(); } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); st.w = panel.offsetWidth; st.h = panel.offsetHeight; store('panel', st); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - - // ---------- reusable virtualized list ---------- - function VirtualList(opts) { - // opts: rowH, getModel()->[], renderRow(rowEl, item), matches(item, query) - var listEl = el('div', { class: 'fg-list' }); - var sizer = el('div', { class: 'fg-list__sizer' }); - var win = el('div', { class: 'fg-list__window' }); - sizer.appendChild(win); listEl.appendChild(sizer); - var rowH = opts.rowH || 30, pool = [], model = [], view = [], query = ''; - // ONE delegated row click (recycled rows must not accumulate per-draw listeners). - if (opts.onRowClick) listEl.addEventListener('click', function (e) { var r = e.target && e.target.closest ? e.target.closest('.fg-row') : null; if (r && r._item) opts.onRowClick(r._item); }); - function rebuild() { model = opts.getModel() || []; applyFilter(); } - function applyFilter() { - view = query ? model.filter(function (it) { return opts.matches(it, query); }) : model; - sizer.style.height = (view.length * rowH) + 'px'; - var em = listEl.querySelector('.fg-empty'); - if (!view.length) { pool.forEach(function (r) { r.style.display = 'none'; }); if (!em) listEl.appendChild(el('div', { class: 'fg-empty', text: 'Nothing here' })); } - else if (em) em.remove(); - lastFirst = -1; draw(true); // content changed -> force re-render - } - var lastFirst = -1; - function draw(force) { - var scroll = listEl.scrollTop, h = listEl.clientHeight || 400; - var first = Math.max(0, Math.floor(scroll / rowH) - 4); - if (!force && first === lastFirst) return; // window unchanged during scroll -> skip re-render - lastFirst = first; - var count = Math.ceil(h / rowH) + 8; - var last = Math.min(view.length, first + count); - win.style.transform = 'translateY(' + (first * rowH) + 'px)'; - var need = last - first; - while (pool.length < need) { var r = el('div', { class: 'fg-row' }); win.appendChild(r); pool.push(r); } - for (var i = 0; i < pool.length; i++) { - var r = pool[i]; - if (i < need) { r.style.display = 'flex'; r._item = view[first + i]; opts.renderRow(r, view[first + i]); } else { r.style.display = 'none'; r._item = null; } - } - } - var raf = null; - listEl.addEventListener('scroll', function () { if (raf) return; raf = requestAnimationFrame(function () { raf = null; draw(false); }); }); - return { el: listEl, rebuild: rebuild, applyFilter: applyFilter, draw: function () { draw(true); }, setQuery: function (q) { query = q; applyFilter(); }, onResize: function () { draw(true); }, - refresh: function () { draw(true); } }; - } - - // numeric stepper control - function stepper(getVal, setVal, opts) { - opts = opts || {}; - var wrap = el('div', { class: 'fg-stepper' }); - var input = el('input', { class: 'fg-num', type: 'text' }); - function sync() { input.value = getVal(); } - function commit(v) { setVal(v); sync(); if (opts.after) opts.after(); } - [['−100', -100], ['−1', -1]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - wrap.appendChild(input); - [['+1', 1], ['+100', 100]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - input.addEventListener('keydown', function (e) { if (e.key === 'Enter') { commit(parse(input.value)); input.blur(); } else if (e.key === 'Escape') { sync(); input.blur(); } }); - input.addEventListener('blur', function () { commit(parse(input.value)); }); - function parse(s) { var n = Number(String(s).replace(/[^0-9.\-]/g, '')); return isNaN(n) ? getVal() : n; } - sync(); - return { el: wrap, sync: sync }; - } - - // ---------- sections ---------- - var activeRenderer = null, currentSection = null; - var SECTIONS = []; - function section(id, icon, title, builder) { SECTIONS.push({ id: id, icon: icon, title: title, builder: builder }); } - - function listSection(getModel, renderRow, matches, headExtra) { - return function (body, head) { - if (headExtra) headExtra(head); - var vl = VirtualList({ getModel: getModel, renderRow: renderRow, matches: matches || defaultMatch }); - body.appendChild(vl.el); - vl.rebuild(); - return { vl: vl, onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return (getModel() || []).length; } }; - }; - } - function defaultMatch(it, q) { q = q.toLowerCase(); return String(it.id) === q || (it.name && it.name.toLowerCase().indexOf(q) >= 0); } - - // Variables - section('vars', ICONS.vars, 'Variables', listSection( - function () { return API.ops.vars.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isVarFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.vars.get(it.id); }, function (v) { API.ops.vars.set(it.id, v); if (API.locks.isVarFrozen(it.id)) API.locks.freezeVar(it.id, true); }, {}); - val.appendChild(sp.el); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isVarFrozen(it.id), function (on) { API.locks.freezeVar(it.id, on); refreshActive(); })); - } - )); - - // Switches - section('switches', ICONS.switches, 'Switches', listSection( - function () { return API.ops.switches.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isSwitchFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var tg = el('button', { class: 'fg-toggle' + (API.ops.switches.get(it.id) ? ' is-on' : '') }); - tg.addEventListener('click', function () { API.ops.switches.set(it.id, !API.ops.switches.get(it.id)); if (API.locks.isSwitchFrozen(it.id)) API.locks.freezeSwitch(it.id, true); tg.classList.toggle('is-on', API.ops.switches.get(it.id)); }); - val.appendChild(tg); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isSwitchFrozen(it.id), function (on) { API.locks.freezeSwitch(it.id, on); refreshActive(); })); - } - )); - - // Items / Weapons / Armors (segmented) - section('inv', ICONS.inv, 'Items', function (body, head) { - var kind = 'item'; - var seg = el('div', { class: 'fg-segmented' }); - ['item', 'weapon', 'armor'].forEach(function (k) { - var b = el('button', { class: k === kind ? 'is-active' : '', text: k.charAt(0).toUpperCase() + k.slice(1) + 's' }); - b.addEventListener('click', function () { kind = k; seg.querySelectorAll('button').forEach(function (x) { x.classList.remove('is-active'); }); b.classList.add('is-active'); vl.rebuild(); }); - seg.appendChild(b); - }); - head.appendChild(seg); - var vl = VirtualList({ - getModel: function () { return API.ops.inv.list(kind); }, - matches: defaultMatch, - renderRow: function (row, it) { - row.className = 'fg-row' + (API.locks.isItemFrozen(kind, it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.description || it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.inv.count(kind, it.id); }, function (v) { API.ops.inv.setCount(kind, it.id, v); }, {}); - val.appendChild(sp.el); - val.appendChild(el('button', { class: 'fg-step', text: 'Max', style: 'width:auto;padding:0 6px', onclick: function () { API.ops.inv.max(kind, it.id); sp.sync(); } })); - row.appendChild(val); - row.appendChild(lockBtn(API.locks.isItemFrozen(kind, it.id), function (on) { API.locks.freezeItem(kind, it.id, on); refreshActive(); })); - } - }); - body.appendChild(vl.el); vl.rebuild(); - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.inv.list(kind).length; } }; - }); - - // Actors (master-detail) - section('actors', ICONS.actors, 'Actors', function (body) { - var detail = el('div', { class: 'fg-detail' }); - var selectedId = null; - var vl = VirtualList({ - rowH: 30, matches: defaultMatch, - getModel: function () { return API.ops.actors.list(); }, - onRowClick: function (it) { showActor(it.id); }, - renderRow: function (row, it) { - row.className = 'fg-row' + (it.id === selectedId ? ' is-selected' : ''); - row.style.cursor = 'pointer'; - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', html: (it.inParty ? '' : '') + escapeHtml(it.name) })); - row.appendChild(el('span', { class: 'fg-cell--val', text: 'Lv ' + it.level })); - } - }); - var split = el('div', { style: 'flex:1;display:flex;min-height:0' }); - var left = el('div', { style: 'flex:0 0 240px;display:flex;flex-direction:column;border-right:1px solid var(--fg-border)' }); - left.appendChild(vl.el); - split.appendChild(left); split.appendChild(detail); - body.appendChild(split); vl.rebuild(); - var firstA = API.ops.actors.list()[0]; // auto-select first actor so detail isn't empty - if (firstA) showActor(firstA.id); - function showActor(id) { - selectedId = id; vl.draw(); // re-highlight the selected row in the (virtualized) list - var a = API.ops.actors.get(id); detail.innerHTML = ''; - if (!a) { detail.appendChild(el('div', { class: 'fg-empty', text: 'Actor not initialized (start a game first)' })); return; } - detail.appendChild(el('h2', { text: a.name + ' · Lv ' + a.level, style: 'margin:0 0 12px;font-size:15px' })); - var grid = el('div', { class: 'fg-grid' }); - grid.appendChild(numField('Level', function () { return API.ops.actors.get(id).level; }, function (v) { API.ops.actors.setLevel(id, v); showActor(id); })); - grid.appendChild(numField('EXP', function () { return API.ops.actors.get(id).exp; }, function (v) { API.ops.actors.setExp(id, v); showActor(id); })); - grid.appendChild(statField('HP', id, 'hp', function () { return API.ops.actors.get(id).hp; }, function () { return API.ops.actors.get(id).mhp; }, API.ops.actors.setHp)); - grid.appendChild(statField('MP', id, 'mp', function () { return API.ops.actors.get(id).mp; }, function () { return API.ops.actors.get(id).mmp; }, API.ops.actors.setMp)); - grid.appendChild(statField('TP', id, 'tp', function () { return API.ops.actors.get(id).tp; }, function () { return 100; }, API.ops.actors.setTp)); - a.params.forEach(function (p) { grid.appendChild(numField(p.name, function () { return API.ops.actors.get(id).params[p.id].value; }, function (v) { API.ops.actors.setParam(id, p.id, v); })); }); - detail.appendChild(grid); - var actbar = el('div', { style: 'display:flex;gap:8px;margin:14px 0' }, [ - el('button', { class: 'fg-btn', text: 'Recover All', onclick: function () { API.ops.actors.recover(id); showActor(id); } }), - el('button', { class: 'fg-btn', text: a.inParty ? 'Remove from Party' : 'Add to Party', onclick: function () { if (a.inParty) API.ops.actors.removeFromParty(id); else API.ops.actors.addToParty(id); vl.rebuild(); showActor(id); } }) - ]); - detail.appendChild(actbar); - // skills - detail.appendChild(el('h2', { text: 'Skills', style: 'font-size:13px;margin:10px 0 4px;color:var(--fg-text-dim)' })); - var skbox = el('div', { style: 'max-height:140px;overflow:auto;border:1px solid var(--fg-border);border-radius:7px' }); - a.skills.forEach(function (s) { - var r = el('div', { class: 'fg-field', style: 'padding:3px 10px' }, [ - el('span', { style: 'flex:1;font-size:12px', text: s.id + ': ' + s.name }), - el('button', { class: 'fg-btn fg-btn--ghost', text: s.learned ? 'Forget' : 'Learn', onclick: function () { if (s.learned) API.ops.actors.forget(id, s.id); else API.ops.actors.learn(id, s.id); showActor(id); } }) - ]); - skbox.appendChild(r); - }); - detail.appendChild(skbox); - } - function numField(label, get, set) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, set, {}).el); - f.appendChild(el('span', { style: 'flex:0 0 24px;width:24px' })); // empty lock slot -> steppers align with HP/MP/TP rows - return f; - } - function statField(label, id, stat, get, getMax, setFn) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, function (v) { setFn(id, v); if (API.locks.isStatFrozen(id, stat)) API.locks.freezeStat(id, stat, true); }, {}).el); - f.appendChild(lockBtn(API.locks.isStatFrozen(id, stat), function (on) { API.locks.freezeStat(id, stat, on); })); - return f; - } - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.actors.list().length; } }; - }); - - // Party / Main - section('party', ICONS.party, 'Party', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - d.appendChild(el('div', { class: 'fg-field' }, [ - el('label', { text: 'Gold' }), - stepper(function () { return API.ops.gold.get(); }, function (v) { API.ops.gold.set(v); }, {}).el, - lockBtn(API.LOCK.gold != null, function (on) { API.locks.freezeGold(on); rebuild(); }) - ])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Steps' }), el('span', { text: API.ops.party.steps() })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Members' }), el('span', { text: API.ops.party.members().map(function (m) { return m.name; }).join(', ') || '(none)' })])); - d.appendChild(el('h2', { text: 'Quick actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Gold = Max', onclick: function () { API.ops.gold.set(API.ops.gold.max()); rebuild(); toast('Gold maxed', 'ok'); } }), - el('button', { class: 'fg-btn', text: 'Heal Party', onclick: function () { API.ops.party.members().forEach(function (m) { API.ops.actors.recover(m.id); }); toast('Party healed', 'ok'); } }) - ])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.party.members().length; } }; - }); - - // Map / Teleport - section('map', ICONS.map, 'Map', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var cur = API.ops.map.current(); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Current' }), el('span', { text: 'Map ' + cur.mapId + ' @ (' + cur.x + ',' + cur.y + ')' })])); - var sel = el('select', { class: 'fg-search', style: 'flex:1' }); - API.ops.map.list().forEach(function (m) { sel.appendChild(el('option', { value: m.id, text: m.id + ': ' + m.name })); }); - sel.value = cur.mapId; - var xIn = el('input', { class: 'fg-num', value: cur.x }), yIn = el('input', { class: 'fg-num', value: cur.y }); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Teleport to' }), sel])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'X / Y' }), xIn, yIn, - el('button', { class: 'fg-btn', text: 'Go', onclick: function () { API.ops.map.teleport(Number(sel.value), Number(xIn.value), Number(yIn.value), 0, 2); toast('Teleporting…', 'ok'); } })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Noclip' }), - (function () { var t = el('button', { class: 'fg-toggle' + (API.ops.map.isNoclip() ? ' is-on' : '') }); t.addEventListener('click', function () { var on = !API.ops.map.isNoclip(); API.ops.map.noclip(on); t.classList.toggle('is-on', on); }); return t; })()])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Move speed' }), - stepper(function () { return (window.$gamePlayer && $gamePlayer._moveSpeed) || 4; }, function (v) { API.ops.map.speed(v); }, {}).el])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.map.list().length; } }; - }); - - // Common Events - section('commonev', ICONS.commonev, 'Common Ev.', listSection( - function () { return API.ops.commonev.list(); }, - function (row, it) { - row.className = 'fg-row'; row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - row.appendChild(el('span', { class: 'fg-cell--val' }, el('button', { class: 'fg-btn', text: 'Run', onclick: function () { confirmBox('Run common event ' + it.id + ' (' + it.name + ')?', function () { API.ops.commonev.run(it.id); toast('Reserved CE ' + it.id, 'ok'); }); } }))); - } - )); - - // Data Lock (aggregated frozen targets) - section('locks', ICONS.locks, 'Data Lock', function (body, head) { - head.appendChild(el('button', { class: 'fg-btn fg-btn--danger', text: 'Unfreeze all', onclick: function () { API.locks.clearAll(); rebuild(); toast('All unfrozen'); } })); - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var s = API.locks.summary(); - if (!s.length) { d.appendChild(el('div', { class: 'fg-empty', text: 'No frozen values. Use the lock icon on any row to freeze it.' })); return; } - s.forEach(function (row) { - d.appendChild(el('div', { class: 'fg-field' }, [ - el('span', { style: 'flex:1;font-size:12px', text: row.label }), - el('span', { style: 'color:var(--fg-frozen);font-family:var(--font-mono);margin-right:8px', text: String(row.value) }), - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Unfreeze', onclick: function () { unfreeze(row); rebuild(); } }) - ])); - }); - } - function unfreeze(row) { - if (row.type === 'var') API.locks.freezeVar(row.id, false); - else if (row.type === 'switch') API.locks.freezeSwitch(row.id, false); - else if (row.type === 'item') { var p = row.key.split(':'); API.LOCK.items.delete(row.key); } - else if (row.type === 'stat') { API.LOCK.stats.delete(row.key); } - else if (row.type === 'gold') API.locks.freezeGold(false); - else if (row.type === 'noclip') API.ops.map.noclip(false); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.locks.summary().length; } }; - }); - - // Battle cheats - section('battle', ICONS.battle, 'Cheats', function (body) { - var d = el('div', { class: 'fg-detail' }); - function tog(label, get, set) { - var t = el('button', { class: 'fg-toggle' + (get() ? ' is-on' : '') }); - t.addEventListener('click', function () { var v = !get(); set(v); t.classList.toggle('is-on', v); }); - return el('div', { class: 'fg-field' }, [el('label', { text: label }), t]); - } - d.appendChild(tog('God mode (blocks HP loss)', function () { return API.CHEAT.god; }, API.cheats.setGod)); - d.appendChild(tog('One-hit kill', function () { return API.CHEAT.ohko; }, API.cheats.setOhko)); - d.appendChild(tog('No random encounters', function () { return API.CHEAT.noEncounter; }, API.cheats.setNoEncounter)); - // ---- game speed (speedhack) ---- - d.appendChild(el('h2', { text: 'Game speed', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - var speedRow = el('div', { class: 'fg-field' }); - speedRow.appendChild(el('label', { text: 'Speed' })); - var seg = el('div', { class: 'fg-segmented', style: 'flex-wrap:wrap' }); - var presets = [['0.5×', 0.5], ['1×', 1], ['2×', 2], ['3×', 3], ['5×', 5], ['8×', 8]]; - function keyLabel(k) { return k === 'Control' ? 'Ctrl' : (k === ' ' ? 'Space' : k); } - // In KEY mode the highlight = the ARMED target (_speedBoost); in ALWAYS-ON mode = the live speed. - function targetSpeed() { return API._speedUseKey ? (API._speedBoost || 2) : (API.CHEAT.speed || 1); } - function syncSeg() { var t = targetSpeed(); Array.prototype.forEach.call(seg.children, function (b) { b.classList.toggle('is-active', Number(b.dataset.v) === t); }); if (typeof custom !== 'undefined' && custom) custom.value = t; } - // Picking a speed ARMS the target. It only changes the live game speed if key-mode is OFF, or if - // the speedhack is already active (then it live-updates). So buttons respect the key toggle. - function pick(v) { - API._speedBoost = v; store('speedBoost', v); - if (!API._speedUseKey || API.CHEAT.speed !== 1) { API.cheats.setSpeed(v); toast('Speed ' + v + '×', 'ok'); } - else { toast('Armed ' + v + '× — hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - syncSeg(); - } - presets.forEach(function (p) { - var b = el('button', { text: p[0] }); b.dataset.v = p[1]; - b.addEventListener('click', function () { pick(p[1]); }); - seg.appendChild(b); - }); - speedRow.appendChild(seg); - d.appendChild(speedRow); - var customRow = el('div', { class: 'fg-field' }); - customRow.appendChild(el('label', { text: 'Custom ×' })); - var custom = el('input', { class: 'fg-num', type: 'text', value: targetSpeed() }); - custom.addEventListener('keydown', function (e) { if (e.key === 'Enter') { pick(Number(custom.value) || 1); custom.blur(); } }); - custom.addEventListener('blur', function () { pick(Number(custom.value) || 1); }); - customRow.appendChild(custom); - d.appendChild(customRow); - - // ---- use-key toggle (off => speed is always on) ---- - var useKeyRow = el('div', { class: 'fg-field' }); - useKeyRow.appendChild(el('label', { text: 'Use hold key' })); - var ukTog = el('button', { class: 'fg-toggle' + (API._speedUseKey ? ' is-on' : '') }); - ukTog.addEventListener('click', function () { - speedHeld = false; // changing mode ends any active hold so a later key-release won't reset speed - var on = !API._speedUseKey; API._speedUseKey = on; store('speedUseKey', on); ukTog.classList.toggle('is-on', on); - keyRow.style.display = on ? '' : 'none'; - if (on) { API.cheats.setSpeed(1); toast('Speed: hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - else { API.cheats.setSpeed(API._speedBoost || 2); toast('Speed: always on at ' + (API._speedBoost || 2) + '×', 'ok'); } - syncSeg(); - }); - useKeyRow.appendChild(ukTog); - d.appendChild(useKeyRow); - - // ---- rebindable key ---- - var keyRow = el('div', { class: 'fg-field' }); - keyRow.appendChild(el('label', { text: 'Hold key' })); - var keyBtn = el('button', { class: 'fg-btn', text: keyLabel(API._speedKey) }); - keyBtn.addEventListener('click', function () { - keyBtn.textContent = 'Press a key…'; API._capturingSpeedKey = true; - function cap(ev) { - ev.preventDefault(); ev.stopPropagation(); - window.removeEventListener('keydown', cap, true); API._capturingSpeedKey = false; - if (ev.key !== 'Escape') { API._speedKey = ev.key; store('speedKey', ev.key); } - keyBtn.textContent = keyLabel(API._speedKey); - } - window.addEventListener('keydown', cap, true); - }); - keyRow.appendChild(keyBtn); - keyRow.style.display = API._speedUseKey ? '' : 'none'; - d.appendChild(keyRow); - syncSeg(); - d.appendChild(el('h2', { text: 'In-battle actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Instant Win', onclick: function () { API.cheats.instantWin(); toast(API.ops.battle.inBattle() ? 'Enemies downed' : 'Not in battle', API.ops.battle.inBattle() ? 'ok' : 'warn'); } }), - el('button', { class: 'fg-btn', text: 'Flee / Abort', onclick: function () { API.cheats.flee(); } }) - ])); - body.appendChild(d); - return { refresh: function () {}, count: function () { return 0; } }; - }); - - // ---------- render / navigation ---------- - function escapeHtml(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } - function lockBtn(frozen, onToggle) { - var b = el('button', { class: 'fg-lock' + (frozen ? ' is-frozen' : ''), html: frozen ? ICONS.lock : ICONS.unlock, title: 'Freeze value' }); - b.addEventListener('click', function () { frozen = !frozen; b.className = 'fg-lock' + (frozen ? ' is-frozen' : ''); b.innerHTML = frozen ? ICONS.lock : ICONS.unlock; onToggle(frozen); }); - return b; - } - function refreshActive() { if (activeRenderer && activeRenderer.refresh) activeRenderer.refresh(); updateStatus(); } - - SECTIONS.forEach(function (s) { - var item = el('button', { class: 'fg-rail__item', title: s.title }, [el('span', { class: 'ic', html: s.icon }), el('span', { text: s.title.split(' ')[0] })]); - item.addEventListener('click', function () { selectSection(s.id); }); - s._rail = item; rail.appendChild(item); - }); - - function selectSection(id) { - currentSection = id; - SECTIONS.forEach(function (s) { s._rail.classList.toggle('is-active', s.id === id); }); - render(); - store('lastSection', id); - } - function render() { - var s = SECTIONS.filter(function (x) { return x.id === currentSection; })[0]; if (!s) return; - content.innerHTML = ''; - var head = el('div', { class: 'fg-subtoolbar' }); - var sectionHead = el('div', { class: 'fg-section-head' }, [el('h2', { text: s.title }), el('span', { class: 'fg-count', text: '' }), el('span', { class: 'fg-spacer' })]); - content.appendChild(sectionHead); - content.appendChild(head); - var body = el('div', { style: 'flex:1;display:flex;flex-direction:column;min-height:0' }); - content.appendChild(body); - activeRenderer = s.builder(body, head) || {}; - if (head.children.length === 0) head.remove(); - var cnt = activeRenderer.count ? activeRenderer.count() : 0; - sectionHead.querySelector('.fg-count').textContent = cnt + (cnt === 1 ? ' entry' : ' entries'); - // Search only applies to list sections (those expose setQuery); hide it on form sections. - var searchable = !!activeRenderer.setQuery; - // keep the search box's flex space (invisible, not removed) so the titlebar buttons stay anchored right - search.style.visibility = searchable ? 'visible' : 'hidden'; - if (searchable && search.value) activeRenderer.setQuery(search.value.trim()); - updateStatus(); - } - function updateStatus() { - var frozen = API.locks.summary().length; - statusbar.innerHTML = ''; - statusbar.appendChild(el('span', { text: API.env.IS_MZ ? 'RPG Maker MZ' : 'RPG Maker MV' })); - statusbar.appendChild(el('span', { class: 'fg-spacer', style: 'flex:1' })); - statusbar.appendChild(el('span', { text: (frozen ? frozen + ' frozen · ' : '') + 'F10 to toggle' })); - } - - search.addEventListener('input', debounce(function () { if (activeRenderer && activeRenderer.setQuery) activeRenderer.setQuery(search.value.trim()); }, 120)); - function debounce(fn, ms) { var t; return function () { clearTimeout(t); t = setTimeout(fn, ms); }; } - - // ---------- show / hide / hotkeys ---------- - var visible = false; - function show() { visible = true; try { document.body.appendChild(host); } catch (e) {} panel.style.display = 'flex'; launcher.style.display = 'none'; if (!currentSection) selectSection(load('lastSection', 'vars')); else render(); } - function hide() { visible = false; panel.style.display = 'none'; launcher.style.display = 'flex'; API.CHEAT.uiFocused = false; if (typeof Input !== 'undefined' && Input.clear) Input.clear(); } - function toggle() { if (visible) hide(); else show(); } - panel.style.display = 'none'; - - // Speed key = HOLD to fast-forward: while the key is held the game runs at the armed boost speed; - // on release it returns to 1x. Only active when the "use key" option is on. Gated to !uiFocused so - // holding a key while typing in the panel never fast-forwards. - var speedHeld = false; - function isSpeedKey(k) { var sk = API._speedKey || 'Control'; return k === sk || (sk === 'Control' && k === 'Ctrl'); } - function holdStart() { if (!speedHeld) { speedHeld = true; API.cheats.setSpeed(API._speedBoost || 2); toast('Fast-forward ' + API.CHEAT.speed + '×', 'ok'); } } - function holdEnd() { if (speedHeld) { speedHeld = false; API.cheats.setSpeed(1); } } - window.addEventListener('keydown', function (e) { - if (API._capturingSpeedKey) return; // a key-rebind is in progress - var key = e.key || ''; - if (key === (API._hotkey || 'F10')) { e.preventDefault(); toggle(); return; } - if (visible && (e.ctrlKey || e.metaKey) && key.toLowerCase() === 'k') { e.preventDefault(); search.focus(); search.select(); } - else if (visible && key === 'Escape') { if (shadow.activeElement && shadow.activeElement.tagName === 'INPUT') shadow.activeElement.blur(); else hide(); } - if (API._speedUseKey && isSpeedKey(key) && !API.CHEAT.uiFocused) holdStart(); // hold to fast-forward - }, true); - window.addEventListener('keyup', function (e) { - if (API._capturingSpeedKey) return; - if (isSpeedKey(e.key || '')) holdEnd(); - }, true); - window.addEventListener('blur', holdEnd); // alt-tab / focus loss -> stop fast-forward (no stuck key) - - // expose - return { - show: show, hide: hide, toggle: toggle, toast: toast, render: render, - isVisible: function () { return visible; }, root: rootEl, host: host, - select: selectSection, sections: SECTIONS.map(function (s) { return s.id; }) - }; - } - -})(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this)); - -/* ---- MV scaffolding (plugin command + start-open) ---- */ -(function () { - if (typeof Game_Interpreter === 'undefined') return; - var P = (typeof PluginManager !== 'undefined' && PluginManager.parameters) ? PluginManager.parameters('Forge_MV') : {}; - if (window.Forge) { - window.Forge._hotkey = (P.Hotkey || 'F10').trim(); - window.Forge._itemMaxOverride = Number(P.ItemMaxOverride) || 0; - // speed key: plugin-param is the first-run default; a key rebound in the panel (persisted) wins - try { if (!localStorage.getItem('forge:speedKey')) window.Forge._speedKey = (P.SpeedKey || 'Control').trim(); } catch (e) { window.Forge._speedKey = (P.SpeedKey || 'Control').trim(); } - } - var _pc = Game_Interpreter.prototype.pluginCommand; - Game_Interpreter.prototype.pluginCommand = function (cmd, args) { - _pc.call(this, cmd, args); - if (cmd === 'MTC' && window.Forge && window.Forge.ui) window.Forge.ui.toggle(); - }; - if (String(P.StartOpen) === 'true' && typeof Scene_Map !== 'undefined') { - var _s = Scene_Map.prototype.start; - Scene_Map.prototype.start = function () { _s.call(this); if (window.Forge && window.Forge.ui && !window.Forge.ui.isVisible()) window.Forge.ui.show(); }; - } -})(); - +(function(){var e=document.createElement(`style`);e.textContent=`@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:#ff6568;--color-orange-400:#ff8b1a;--color-yellow-300:#ffe02a;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-fuchsia-500:#e12afb;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c10;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}@supports (color:lab(0% 0 0)){:root,:host{--color-red-400:lab(63.7053% 60.745 31.3109);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-yellow-300:lab(89.7033% -.480294 84.4917);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-fuchsia-500:lab(56.4256% 83.132 -64.639);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425)}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-left:20px}:where(select:is([multiple],[size])) optgroup option{padding-left:20px}::-webkit-file-upload-button{margin-right:4px}::file-selector-button{margin-right:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{top:0;bottom:0;left:0;right:0}.top-0{top:0}.top-4{top:calc(var(--spacing) * 4)}.top-\\[-0\\.5px\\]{top:-.5px}.top-\\[4px\\]{top:4px}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.left-4{left:calc(var(--spacing) * 4)}.left-\\[4px\\]{left:4px}.left-\\[24px\\]{left:24px}.z-2147482999{z-index:2147482999}.z-2147483000{z-index:2147483000}.z-2147483647{z-index:2147483647}.m-0{margin:0}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-0{min-height:0}.w-1\\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(140px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(160px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(260px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(300px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{grid-gap:calc(var(--spacing) * 2);gap:calc(var(--spacing) * 2)}.gap-3{grid-gap:calc(var(--spacing) * 3);gap:calc(var(--spacing) * 3)}.gap-4{grid-gap:calc(var(--spacing) * 4);gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(var(--spacing) * var(--tw-space-y-reverse));margin-bottom:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(var(--spacing) * var(--tw-space-x-reverse));margin-right:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 1.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border\\/50>:not(:last-child)){border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\\[\\#2a2d3a\\]{border-color:#2a2d3a}.border-accent{border-color:var(--color-accent)}.border-accent\\/30{border-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/30{border-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.border-accent\\/50{border-color:rgba(99,102,241,.5)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\\/50{border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.border-danger\\/30{border-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.border-danger\\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-fuchsia-500\\/30{border-color:rgba(225,42,251,.3)}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\\/30{border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.border-gray-500\\/30{border-color:rgba(106,114,130,.3)}@supports (color:color-mix(in lab, red, red)){.border-gray-500\\/30{border-color:color-mix(in oklab, var(--color-gray-500) 30%, transparent)}}.border-ok\\/30{border-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.border-ok\\/30{border-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.border-warn\\/30{border-color:rgba(251,146,60,.3)}@supports (color:color-mix(in lab, red, red)){.border-warn\\/30{border-color:color-mix(in oklab, var(--color-warn) 30%, transparent)}}.border-yellow-500\\/30{border-color:rgba(237,178,0,.3)}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-l-frozen{border-left-color:var(--color-frozen)}.bg-\\[\\#1a1d24\\]{background-color:#1a1d24}.bg-\\[\\#3a3f4d\\]{background-color:#3a3f4d}.bg-\\[\\#7ba4ff\\]\\/10{background-color:rgba(123,164,255,.1);background-color:lab(67.3388% 4.90472 -50.2993/.1)}.bg-\\[\\#13151a\\]{background-color:#13151a}.bg-accent{background-color:var(--color-accent)}.bg-accent-weak{background-color:var(--color-accent-weak)}.bg-accent\\/5{background-color:rgba(99,102,241,.05)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/5{background-color:color-mix(in oklab, var(--color-accent) 5%, transparent)}}.bg-accent\\/10{background-color:rgba(99,102,241,.1)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-accent\\/20{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/20{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.bg-bg{background-color:var(--color-bg)}.bg-bg2{background-color:var(--color-bg2)}.bg-border{background-color:var(--color-border)}.bg-border\\/50{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.bg-border\\/50{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\\/10{background-color:rgba(239,68,68,.1)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-danger\\/20{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/20{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.bg-frozen\\/20{background-color:rgba(139,92,246,.2)}@supports (color:color-mix(in lab, red, red)){.bg-frozen\\/20{background-color:color-mix(in oklab, var(--color-frozen) 20%, transparent)}}.bg-fuchsia-500\\/10{background-color:rgba(225,42,251,.1)}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-500\\/10{background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.bg-gray-500\\/10{background-color:rgba(106,114,130,.1)}@supports (color:color-mix(in lab, red, red)){.bg-gray-500\\/10{background-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.bg-ok{background-color:var(--color-ok)}.bg-ok\\/10{background-color:rgba(16,185,129,.1)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/10{background-color:color-mix(in oklab, var(--color-ok) 10%, transparent)}}.bg-ok\\/20{background-color:rgba(16,185,129,.2)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/20{background-color:color-mix(in oklab, var(--color-ok) 20%, transparent)}}.bg-transparent{background-color:transparent}.bg-warn\\/10{background-color:rgba(251,146,60,.1)}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-yellow-500\\/10{background-color:rgba(237,178,0,.1)}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\\/10{background-color:color-mix(in oklab, var(--color-yellow-500) 10%, transparent)}}.fill-current{fill:currentColor}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-left:var(--spacing);padding-right:var(--spacing)}.px-1\\.5{padding-left:calc(var(--spacing) * 1.5);padding-right:calc(var(--spacing) * 1.5)}.px-2{padding-left:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 2)}.px-2\\.5{padding-left:calc(var(--spacing) * 2.5);padding-right:calc(var(--spacing) * 2.5)}.px-3{padding-left:calc(var(--spacing) * 3);padding-right:calc(var(--spacing) * 3)}.px-3\\.5{padding-left:calc(var(--spacing) * 3.5);padding-right:calc(var(--spacing) * 3.5)}.px-4{padding-left:calc(var(--spacing) * 4);padding-right:calc(var(--spacing) * 4)}.py-0\\.5{padding-top:calc(var(--spacing) * .5);padding-bottom:calc(var(--spacing) * .5)}.py-1{padding-top:var(--spacing);padding-bottom:var(--spacing)}.py-1\\.5{padding-top:calc(var(--spacing) * 1.5);padding-bottom:calc(var(--spacing) * 1.5)}.py-2{padding-top:calc(var(--spacing) * 2);padding-bottom:calc(var(--spacing) * 2)}.py-3{padding-top:calc(var(--spacing) * 3);padding-bottom:calc(var(--spacing) * 3)}.pt-1{padding-top:var(--spacing)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#7ba4ff\\]{color:#7ba4ff}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-frozen{color:var(--color-frozen)}.text-fuchsia-500{color:var(--color-fuchsia-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-ok{color:var(--color-ok)}.text-orange-400{color:var(--color-orange-400)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,rgba(0,0,0,.1)), 0 4px 6px -4px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{user-select:none}.select-text{user-select:text}@media (hover:hover){.group-hover\\:text-accent:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.first-letter\\:text-\\[\\#7ba4ff\\]:first-letter{color:#7ba4ff}@media (hover:hover){.hover\\:bg-\\[\\#2a2d3a\\]:hover{background-color:#2a2d3a}.hover\\:bg-accent\\/20:hover{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/20:hover{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.hover\\:bg-accent\\/30:hover{background-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\\:bg-accent\\/80:hover{background-color:rgba(99,102,241,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/80:hover{background-color:color-mix(in oklab, var(--color-accent) 80%, transparent)}}.hover\\:bg-accent\\/85:hover{background-color:rgba(99,102,241,.85)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/85:hover{background-color:color-mix(in oklab, var(--color-accent) 85%, transparent)}}.hover\\:bg-border:hover{background-color:var(--color-border)}.hover\\:bg-border\\/30:hover{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/30:hover{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.hover\\:bg-border\\/50:hover{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/50:hover{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.hover\\:bg-border\\/80:hover{background-color:rgba(34,37,51,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/80:hover{background-color:color-mix(in oklab, var(--color-border) 80%, transparent)}}.hover\\:bg-danger\\/20:hover{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/20:hover{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-danger\\/80:hover{background-color:rgba(239,68,68,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/80:hover{background-color:color-mix(in oklab, var(--color-danger) 80%, transparent)}}.hover\\:bg-frozen\\/30:hover{background-color:rgba(139,92,246,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-frozen\\/30:hover{background-color:color-mix(in oklab, var(--color-frozen) 30%, transparent)}}.hover\\:bg-ok\\/30:hover{background-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-ok\\/30:hover{background-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-gray-200:hover{color:var(--color-gray-200)}.hover\\:text-gray-300:hover{color:var(--color-gray-300)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-red-400:hover{color:var(--color-red-400)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-yellow-300:hover{color:var(--color-yellow-300)}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.focus\\:bg-border\\/30:focus{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.focus\\:bg-border\\/30:focus{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\\:cursor-grabbing:active{cursor:grabbing}.disabled\\:opacity-50:disabled{opacity:.5}:host{--color-bg:#0b0c10;--color-bg-elev:#13151f;--color-bg-input:#1a1c29;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-text-faint:#646b7d;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#222533;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#6366f1}body,:host{color:#f1f5f9;font-family:Outfit,system-ui,-apple-system,sans-serif}*,:after,:before{--tw-border-style:solid}.cursor-grab{cursor:-webkit-grab;cursor:grab}.active\\:cursor-grabbing:active{cursor:-webkit-grabbing;cursor:grabbing}.space-x-1>:not([hidden])~:not([hidden]){margin-left:4px}.space-x-1\\.5>:not([hidden])~:not([hidden]){margin-left:6px}.space-x-2>:not([hidden])~:not([hidden]){margin-left:8px}.space-x-2\\.5>:not([hidden])~:not([hidden]){margin-left:10px}.space-x-3>:not([hidden])~:not([hidden]){margin-left:12px}.space-x-4>:not([hidden])~:not([hidden]){margin-left:16px}.space-y-0\\.5>:not([hidden])~:not([hidden]){margin-top:2px}.space-y-1>:not([hidden])~:not([hidden]){margin-top:4px}.space-y-2>:not([hidden])~:not([hidden]){margin-top:8px}.space-y-2\\.5>:not([hidden])~:not([hidden]){margin-top:10px}.space-y-3>:not([hidden])~:not([hidden]){margin-top:12px}.space-y-4>:not([hidden])~:not([hidden]){margin-top:16px}.space-y-6>:not([hidden])~:not([hidden]){margin-top:24px}.divide-y>:not([hidden])~:not([hidden]){border-top-width:1px;border-color:var(--color-border)}input,textarea,[contenteditable=true]{user-select:text!important}button,button:focus{outline:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 transparent;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 transparent;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 transparent;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 transparent;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 transparent;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}} +/*$vite$:1*/`,document.head.appendChild(e);var t=!1,n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){return e()}function g(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function v(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}function y(e){"@babel/helpers - typeof";return y=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},y(e)}function b(e,t){if(y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function x(e){var t=b(e,`string`);return y(t)==`symbol`?t:t+``}function S(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee,C=1<<24,w=1024,te=2048,ne=4096,re=8192,ie=16384,ae=32768,oe=1<<25,se=65536,ce=1<<19,le=1<<20,ue=1<<25,de=65536,fe=1<<21,pe=1<<22,me=1<<23,he=Symbol(`$state`),ge=Symbol(`legacy props`),_e=Symbol(``),ve=Symbol(`proxy path`),ye=Symbol(`attributes`),be=Symbol(`class`),xe=Symbol(`style`),Se=Symbol(`text`),Ce=Symbol(`form reset`),we=Symbol(`hmr anchor`),Te=new class extends Error{constructor(...e){super(...e),S(this,`name`,`StaleReactionError`),S(this,`message`,"The reaction that called `getAbortSignal()` was re-run or destroyed")}},Ee=!!((ee=globalThis.document)!=null&&ee.contentType)&&globalThis.document.contentType.includes(`xml`);function De(e){if(t){let t=Error(`invariant_violation\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${e}"\nhttps://svelte.dev/e/invariant_violation`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/invariant_violation`)}function Oe(e){if(t){let t=Error(`lifecycle_outside_component\n\`${e}(...)\` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ke(){if(t){let e=Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ae(){if(t){let e=Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/bind_invalid_checkbox_value`)}function je(){if(t){let e=Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/derived_references_self`)}function Me(e,n,r){if(t){let t=Error(`each_key_duplicate\n${r?`Keyed each block has duplicate key \`${r}\` at indexes ${e} and ${n}`:`Keyed each block has duplicate key at indexes ${e} and ${n}`}\nhttps://svelte.dev/e/each_key_duplicate`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ne(e,n,r){if(t){let t=Error(`each_key_volatile\nKeyed each block has key that is not idempotent — the key for item at index ${e} was \`${n}\` but is now \`${r}\`. Keys must be the same each time for a given item\nhttps://svelte.dev/e/each_key_volatile`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_volatile`)}function Pe(e){if(t){let t=Error(`effect_in_teardown\n\`${e}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Fe(){if(t){let e=Error(`effect_in_unowned_derived +Effect cannot be created inside a \`$derived\` value that was not itself created inside an effect +https://svelte.dev/e/effect_in_unowned_derived`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ie(e){if(t){let t=Error(`effect_orphan\n\`${e}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_orphan`)}function Le(){if(t){let e=Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Re(){if(t){let e=Error("invalid_snippet\nCould not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\nhttps://svelte.dev/e/invalid_snippet");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/invalid_snippet`)}function ze(e){if(t){let t=Error(`props_invalid_value\nCannot do \`bind:${e}={undefined}\` when \`${e}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_invalid_value`)}function Be(e){if(t){let t=Error(`props_rest_readonly\nRest element properties of \`$props()\` such as \`${e}\` are readonly\nhttps://svelte.dev/e/props_rest_readonly`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_rest_readonly`)}function Ve(e){if(t){let t=Error(`rune_outside_svelte\nThe \`${e}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/rune_outside_svelte`)}function He(){if(t){let e=Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ue(){if(t){let e=Error(`state_prototype_fixed +Cannot set prototype of \`$state\` object +https://svelte.dev/e/state_prototype_fixed`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function We(){if(t){let e=Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ge(){if(t){let e=Error("svelte_boundary_reset_onerror\nA `` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ke={},qe=Symbol(`uninitialized`),Je=Symbol(`filename`),Ye=`http://www.w3.org/1999/xhtml`,Xe=`http://www.w3.org/2000/svg`,Ze=`font-weight: bold`,Qe=`font-weight: normal`;function $e(e){t?console.warn(`%c[svelte] await_reactivity_loss\n%cDetected reactivity loss when reading \`${e}\`. This happens when state is read in an async function after an earlier \`await\`\nhttps://svelte.dev/e/await_reactivity_loss`,Ze,Qe):console.warn(`https://svelte.dev/e/await_reactivity_loss`)}function et(e,n){t?console.warn(`%c[svelte] await_waterfall\n%cAn async derived, \`${e}\` (${n}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\nhttps://svelte.dev/e/await_waterfall`,Ze,Qe):console.warn(`https://svelte.dev/e/await_waterfall`)}function tt(){t?console.warn(`%c[svelte] derived_inert +%cReading a derived belonging to a now-destroyed effect may result in stale values +https://svelte.dev/e/derived_inert`,Ze,Qe):console.warn(`https://svelte.dev/e/derived_inert`)}function nt(e,n,r){t?console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${e}\` attribute on \`${n}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_attribute_changed`)}function rt(e){t?console.warn(`%c[svelte] hydration_mismatch\n%c${e?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${e}`:`Hydration failed because the initial UI does not match what was rendered on the server`}\nhttps://svelte.dev/e/hydration_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_mismatch`)}function it(){t?console.warn("%c[svelte] select_multiple_invalid_value\n%cThe `value` property of a `` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value",Ze,Qe):console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function at(e){t?console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${e}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`)}function ot(){t?console.warn("%c[svelte] svelte_boundary_reset_noop\n%cA `` `reset` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop",Ze,Qe):console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function st(e){T=e}var E;function ct(e){if(e===null)throw rt(),Ke;return E=e}function lt(){return ct(gi(E))}function D(e){if(T){if(gi(E)!==null)throw rt(),Ke;E=e}}function ut(e=1){if(T){for(var t=e,n=E;t--;)n=gi(n);E=n}}function dt(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=gi(n);e&&n.remove(),n=i}}function ft(e){if(!e||e.nodeType!==8)throw rt(),Ke;return e.data}function pt(e){return e===this.v}function mt(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ht(e){return!mt(e,this.v)}var gt=!1,_t=!1,vt=!1;function yt(){_t=!0}var bt=null;function xt(e,t){return e.label=t,St(e.v,t),e}function St(e,t){var n;return e==null||(n=e[ve])==null||n.call(e,t),e}function Ct(e){let t=Error(),n=wt();return n.length===0?null:(n.unshift(` +`),o(t,`stack`,{value:n.join(` +`)}),o(t,`name`,{value:e}),t)}function wt(){let e=Error.stackTraceLimit;Error.stackTraceLimit=1/0;let t=Error().stack;if(Error.stackTraceLimit=e,!t)return[];let n=t.split(` +`),r=[];for(let e=0;e{t===Lt&&Rt()})}Lt.push(e)}function Bt(){for(;Lt.length>0;)Rt()}var Vt=new WeakMap;function Ht(e){var n=V;if(n===null)return B.f|=me,e;if(t&&e instanceof Error&&!Vt.has(e)&&Vt.set(e,Wt(e,n)),!(n.f&32768)&&!(n.f&4))throw t&&!n.parent&&e instanceof Error&&Gt(e),e;Ut(e,n)}function Ut(e,n){if(!(n!==null&&n.f&16384)){for(;n!==null;){if(n.f&128){if(!(n.f&32768))throw e;try{n.b.error(e);return}catch(t){e=t}}n=n.parent}throw t&&e instanceof Error&&Gt(e),e}}function Wt(e,t){var n,r;let i=s(e,`message`);if(!(i&&!i.configurable)){for(var a=ui?` `:` `,o=`\n${a}in ${((n=t.fn)==null?void 0:n.name)||``}`,c=t.ctx;c!==null;){var l;o+=`\n${a}in ${(l=c.function)==null?void 0:l[Je].split(`/`).pop()}`,c=c.p}return{message:e.message+`\n${o}\n`,stack:(r=e.stack)==null?void 0:r.split(` +`).filter(e=>!e.includes(`svelte/src/internal`)).join(` +`)}}}function Gt(e){let t=Vt.get(e);t&&(o(e,`message`,{value:t.message}),o(e,`stack`,{value:t.stack}))}var Kt=~(te|ne|w);function qt(e,t){e.f=e.f&Kt|t}function Jt(e){e.f&512||e.deps===null?qt(e,w):qt(e,ne)}function Yt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=de,Yt(t.deps))}function Xt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Yt(e.deps),qt(e,w)}var Zt=!1,Qt=!1;function $t(e){var t=Qt;try{return Qt=!1,[e(),Qt]}finally{Qt=t}}function en(e){let n=0,r=Xr(0),i;return t&&xt(r,`createSubscriber version`),()=>{Ai()&&(H(r),Ri(()=>(n===0&&(i=Ea(()=>e(()=>ei(r)))),n+=1,()=>{zt(()=>{--n,n===0&&(i==null||i(),i=void 0,ei(r))})})))}}function tn(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function nn(e,t){tn(e,t),t.add(e)}function k(e,t,n){tn(e,t),t.set(e,n)}function A(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function j(e,t,n){return e.set(A(e,t),n),n}function M(e,t){return e.get(A(e,t))}var rn=se|ce;function an(e,t,n,r){new Cn(e,t,n,r)}var on=new WeakMap,sn=new WeakMap,cn=new WeakMap,ln=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,pn=new WeakMap,mn=new WeakMap,hn=new WeakMap,gn=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakMap,bn=new WeakMap,xn=new WeakMap,Sn=new WeakSet,Cn=class{constructor(e,n,r,i){var a,o;nn(this,Sn),S(this,`parent`,void 0),S(this,`is_pending`,!1),S(this,`transform_error`,void 0),k(this,on,void 0),k(this,sn,T?E:null),k(this,cn,void 0),k(this,ln,void 0),k(this,un,void 0),k(this,dn,null),k(this,fn,null),k(this,pn,null),k(this,mn,null),k(this,hn,0),k(this,gn,0),k(this,_n,!1),k(this,vn,new Set),k(this,yn,new Set),k(this,bn,null),k(this,xn,en(()=>(j(bn,this,Xr(M(hn,this))),t&&xt(M(bn,this),`$effect.pending()`),()=>{j(bn,this,null)}))),j(on,this,e),j(cn,this,n),j(ln,this,e=>{var t=V;t.b=this,t.f|=128,r(e)}),this.parent=V.b,this.transform_error=(a=i==null?(o=this.parent)==null?void 0:o.transform_error:i)==null?(e=>e):a,j(un,this,zi(()=>{if(T){let e=M(sn,this);lt();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));A(Sn,this,Tn).call(this,t)}else t?A(Sn,this,En).call(this):A(Sn,this,wn).call(this)}else A(Sn,this,Dn).call(this)},rn)),T&&j(on,this,E)}defer_effect(e){Xt(e,M(vn,this),M(yn,this))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!M(cn,this).pending}update_pending_count(e,t){A(Sn,this,An).call(this,e,t),j(hn,this,M(hn,this)+e),!(!M(bn,this)||M(_n,this))&&(j(_n,this,!0),zt(()=>{j(_n,this,!1),M(bn,this)&&Qr(M(bn,this),M(hn,this))}))}get_effect_pending(){return M(xn,this).call(this),H(M(bn,this))}error(e){if(!M(cn,this).onerror&&!M(cn,this).failed)throw e;N!=null&&N.is_fork?(M(dn,this)&&N.skip_effect(M(dn,this)),M(fn,this)&&N.skip_effect(M(fn,this)),M(pn,this)&&N.skip_effect(M(pn,this)),N.oncommit(()=>{A(Sn,this,jn).call(this,e)})):A(Sn,this,jn).call(this,e)}};function wn(){try{j(dn,this,Vi(()=>M(ln,this).call(this,M(on,this))))}catch(e){this.error(e)}}function Tn(e){let t=M(cn,this).failed;t&&j(pn,this,Vi(()=>{t(M(on,this),()=>e,()=>()=>{})}))}function En(){let e=M(cn,this).pending;e&&(this.is_pending=!0,j(fn,this,Vi(()=>e(M(on,this)))),zt(()=>{var e=j(mn,this,document.createDocumentFragment()),t=mi();e.append(t),j(dn,this,A(Sn,this,kn).call(this,()=>Vi(()=>M(ln,this).call(this,t)))),M(gn,this)===0&&(M(on,this).before(e),j(mn,this,null),Ji(M(fn,this),()=>{j(fn,this,null)}),A(Sn,this,On).call(this,N))}))}function Dn(){try{if(this.is_pending=this.has_pending_snippet(),j(gn,this,0),j(hn,this,0),j(dn,this,Vi(()=>{M(ln,this).call(this,M(on,this))})),M(gn,this)>0){var e=j(mn,this,document.createDocumentFragment());Qi(M(dn,this),e);let t=M(cn,this).pending;j(fn,this,Vi(()=>t(M(on,this))))}else A(Sn,this,On).call(this,N)}catch(e){this.error(e)}}function On(e){this.is_pending=!1,e.transfer_effects(M(vn,this),M(yn,this))}function kn(e){var t=V,n=B,r=O;aa(M(un,this)),ia(M(un,this)),Et(M(un,this).ctx);try{return Dr.ensure(),e()}catch(e){return Ht(e),null}finally{aa(t),ia(n),Et(r)}}function An(e,t){if(!this.has_pending_snippet()){if(this.parent){var n;A(Sn,n=this.parent,An).call(n,e,t)}return}j(gn,this,M(gn,this)+e),M(gn,this)===0&&(A(Sn,this,On).call(this,t),M(fn,this)&&Ji(M(fn,this),()=>{j(fn,this,null)}),M(mn,this)&&(M(on,this).before(M(mn,this)),j(mn,this,null)))}function jn(e){M(dn,this)&&(Gi(M(dn,this)),j(dn,this,null)),M(fn,this)&&(Gi(M(fn,this)),j(fn,this,null)),M(pn,this)&&(Gi(M(pn,this)),j(pn,this,null)),T&&(ct(M(sn,this)),ut(),ct(dt()));var t=M(cn,this).onerror;let n=M(cn,this).failed;var r=!1,i=!1;let a=()=>{if(r){ot();return}r=!0,i&&Ge(),M(pn,this)!==null&&Ji(M(pn,this),()=>{j(pn,this,null)}),A(Sn,this,kn).call(this,()=>{A(Sn,this,Dn).call(this)})},o=e=>{try{i=!0,t==null||t(e,a),i=!1}catch(e){Ut(e,M(un,this)&&M(un,this).parent)}n&&j(pn,this,A(Sn,this,kn).call(this,()=>{try{return Vi(()=>{var t=V;t.b=this,t.f|=128,n(M(on,this),()=>e,()=>a)})}catch(e){return Ut(e,M(un,this).parent),null}}))};zt(()=>{var t;try{t=this.transform_error(e)}catch(e){Ut(e,M(un,this)&&M(un,this).parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ut(e,M(un,this)&&M(un,this).parent)):o(t)})}function Mn(e,t){this.v=e,this.k=t}function Nn(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof Mn;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}Nn.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},Nn.prototype.next=function(e){return this._invoke(`next`,e)},Nn.prototype.throw=function(e){return this._invoke(`throw`,e)},Nn.prototype.return=function(e){return this._invoke(`return`,e)};function Pn(e,n,r,i){let a=Pt()?Vn:Gn;var o=e.filter(e=>!e.settled),s=n.map(a);if(t&&s.forEach((e,t)=>{e.label=n[t].toString().replace(`() => `,``).replaceAll(`$.eager(() => `,`$state.eager(`).replace(/\$\.get\((.+?)\)/g,(e,t)=>t)}),r.length===0&&o.length===0){i(s);return}var c=V,l=Fn(),u=o.length===1?o[0].promise:o.length>1?Promise.all(o.map(e=>e.promise)):null;function d(e){if(!(c.f&16384)){l();try{i([...s,...e])}catch(e){Ut(e,c)}In()}}var f=Ln();if(r.length===0){u.then(()=>d([])).finally(f);return}function p(){Promise.all(r.map(e=>Un(e))).then(d).catch(e=>Ut(e,c)).finally(f)}u?u.then(()=>{l(),p(),In()}):p()}function Fn(){var e=V,n=B,r=O,i=N;if(t)var a=Dt;return function(o=!0){aa(e),ia(n),Et(r),o&&!(e.f&16384)&&(i==null||i.activate(),i==null||i.apply()),t&&(zn(null),Ot(a))}}function In(e=!0){aa(null),ia(null),Et(null),e&&(N==null||N.deactivate()),t&&(zn(null),Ot(null))}function Ln(){var e=V,t=e.b,n=N,r=!!(t!=null&&t.is_rendered());return t==null||t.update_pending_count(1,n),n.increment(r,e),()=>{t==null||t.update_pending_count(-1,n),n.decrement(r,e)}}var Rn=null;function zn(e){Rn=e}var Bn=new Set;function Vn(e){var n=2|te;V!==null&&(V.f|=ce);let r={ctx:O,deps:null,effects:null,equals:pt,f:n,fn:e,reactions:null,rv:0,v:qe,wv:0,parent:V,ac:null};return t&&vt&&(r.created=Ct(`created at`)),r}var Hn=Symbol(`obsolete`);function Un(e,n,r){let i=V;i===null&&ke();var a=void 0,o=Xr(qe);t&&(o.label=n==null?e.toString():n);var s=!B,c=new Set;return Li(()=>{var n=V;t&&(Rn={effect:n,effect_deps:new Set,warned:!1});var l=_();a=l.promise;try{Promise.resolve(e()).then(l.resolve,e=>{e!==Te&&l.reject(e)}).finally(In)}catch(e){l.reject(e),In()}if(t){if(Rn){if(n.deps!==null)for(let e=0;e{t&&(Rn=null),f==null||f(),c.delete(l),i!==Hn&&(u.activate(),i?(o.f|=me,Qr(o,i)):(o.f&8388608&&(o.f^=me),t&&r!==void 0&&!o.equals(e)&&(Bn.add(o),setTimeout(()=>{Bn.has(o)&&!(n.f&16384)&&(et(o.label,r),Bn.delete(o))})),Qr(o,e)),u.deactivate())};l.promise.then(m,e=>m(null,e||`unknown`))}),ji(()=>{for(let e of c)e.reject(Hn)}),t&&(o.f|=pe),new Promise(e=>{function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}t(a)})}function Wn(e){let t=Vn(e);return gt||sa(t),t}function Gn(e){let t=Vn(e);return t.equals=ht,t}function Kn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;nthis.schedule(e)){var n=M(Cr,this).get(e);if(n){M(Cr,this).delete(e);for(var r of n.d)qt(r,te),t(r);for(r of n.m)qt(r,ne),t(r)}M(wr,this).add(e)}capture(e,t,n=!1){e.v!==qe&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),nr==null||nr.set(e,t)),this.is_fork||(e.v=t)}activate(){N=this}deactivate(){N=null,nr=null}flush(){try{t&&lr.clear(),ar=!0,N=this,A(Er,this,kr).call(this)}finally{if(cr=0,rr=null,or=null,sr=null,ar=!1,N=null,nr=null,Kr.clear(),t)for(let e of lr)e.updated=null}}discard(){var e;for(let e of M(hr,this))e(this);M(hr,this).clear();for(let e of this.async_deriveds.values())e.reject(Hn);A(Er,this,Fr).call(this),(e=M(vr,this))==null||e.resolve()}register_created_effect(e){M(br,this).push(e)}increment(e,t){if(j(gr,this,M(gr,this)+1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;M(_r,this).set(t,e+1)}}decrement(e,t){if(j(gr,this,M(gr,this)-1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;e===1?M(_r,this).delete(t):M(_r,this).set(t,e-1)}M(Tr,this)||(j(Tr,this,!0),zt(()=>{j(Tr,this,!1),this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)M(xr,this).add(t);for(let e of t)M(Sr,this).add(e);e.clear(),t.clear()}oncommit(e){M(mr,this).add(e)}ondiscard(e){M(hr,this).add(e)}settled(){var e;return((e=M(vr,this))==null?j(vr,this,_()):e).promise}static ensure(){if(N===null){let t=N=new e;!ar&&!ir&&zt(()=>{M(dr,t)||t.flush()})}return N}apply(){if(!gt||!this.is_fork&&M(fr,this)===null&&M(pr,this)===null){nr=null;return}nr=new Map;for(let[e,[t]]of this.current)nr.set(e,t);for(let t=$n;t!==null;t=M(pr,t))if(!(t===this||t.is_fork)){var e=!1;if(t.id1e3&&(A(Er,this,Fr).call(this),Lr()),t)for(let e of this.current.keys())lr.add(e);for(let e of M(xr,this))M(Sr,this).delete(e),qt(e,te),this.schedule(e);for(let e of M(Sr,this))qt(e,ne),this.schedule(e);let n=M(yr,this);j(yr,this,[]),this.apply();var r=or=[],i=[],a=sr=[];for(let e of n)try{A(Er,this,Ar).call(this,e,r,i)}catch(t){throw Wr(e),A(Er,this,Or).call(this)||this.discard(),t}if(N=null,a.length>0){var o=Qn.ensure();for(let e of a)o.schedule(e)}if(or=null,sr=null,A(Er,this,Or).call(this)){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r);for(let[e,t]of M(Cr,this))Ur(e,t);a.length>0&&A(Er,N,kr).call(N);return}let s=A(Er,this,jr).call(this);if(s){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r),A(Er,s,Mr).call(s,this);return}M(xr,this).clear(),M(Sr,this).clear();for(let e of M(mr,this))e(this);M(mr,this).clear(),tr=this,zr(i),zr(r),tr=null,(e=M(vr,this))==null||e.resolve();var c=N;if(M(gr,this)===0&&(M(yr,this).length===0||c!==null)&&(A(Er,this,Fr).call(this),gt&&(A(Er,this,Pr).call(this),N=c)),M(yr,this).length>0)if(c!==null){let e=c;M(yr,e).push(...M(yr,this).filter(t=>!M(yr,e).includes(t)))}else c=this;c!==null&&A(Er,c,kr).call(c)}function Ar(e,t,n){e.f^=w;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||M(Cr,this).has(r))&&r.fn!==null){a?r.f^=w:i&4?t.push(r):gt&&i&16777224?n.push(r):_a(r)&&(i&16&&M(Sr,this).add(r),Sa(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}function jr(){for(var e=M(fr,this);e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=M(fr,e)}return null}function Mr(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(M(xr,e),M(Sr,e));let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(M(Sr,this).delete(i),qt(i,te),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),A(Er,e,Fr).call(e),N=this,A(Er,this,kr).call(this)}function Nr(e){for(var t=0;t!d.current.get(e)[1]);if(!(!M(dr,d)||i.length===0)){var a=i.filter(e=>!this.current.has(e));if(a.length===0)e&&d.discard();else if(n.length>0){if(t&&!M(Tr,d)&&Tt(M(yr,d).length===0,`Batch has scheduled roots`),e)for(let e of M(wr,this))d.unskip_effect(e,e=>{e.f&4194320?d.schedule(e):A(Er,d,Nr).call(d,[e])});d.activate();var o=new Set,s=new Map;for(var c of n)Br(c,a,o,s);s=new Map;var l=[...d.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(l.length>0)for(let e of M(br,this))!(e.f&155648)&&Vr(e,l,s)&&(e.f&4194320?(qt(e,te),d.schedule(e)):M(xr,d).add(e));if(M(yr,d).length>0&&!M(Tr,d)){d.apply();for(var u of M(yr,d))A(Er,d,Ar).call(d,u,[],[]);j(yr,d,[])}d.deactivate()}}}}function Fr(){if(this.linked){var e=M(fr,this),t=M(pr,this);e===null?$n=t:j(pr,e,t),t===null?er=e:j(fr,t,e),this.linked=!1}}function Ir(e){var t=ir;ir=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(Bt(),N===null)return n;N.flush()}}finally{ir=t}}function Lr(){if(t){var e=new Map;for(let t of N.current.keys()){var n;for(let[i,a]of(n=t.updated)==null?[]:n){var r=e.get(i);r||(r={error:a.error,count:0},e.set(i,r)),r.count+=a.count}}for(let t of e.values())t.error&&console.error(t.error)}try{Le()}catch(e){t&&o(e,`stack`,{value:``}),Ut(e,rr)}}var Rr=null;function zr(e){var t=e.length;if(t!==0){for(var n=0;n0)){Kr.clear();for(let e of Rr){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Rr.has(n)&&(Rr.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sa(n)}}Rr.clear()}}Rr=null}}function Br(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Br(i,t,n,r):e&4194320&&!(e&2048)&&Vr(i,t,r)&&(qt(i,te),Hr(i))}}function Vr(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(i.call(t,r))return!0;if(r.f&2&&Vr(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function Hr(e){N.schedule(e)}function Ur(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),qt(e,w);for(var n=e.first;n!==null;)Ur(n,t),n=n.next}}function Wr(e){qt(e,w);for(var t=e.first;t!==null;)Wr(t),t=t.next}var Gr=new Set,Kr=new Map;function qr(e){Gr=e}var Jr=!1;function Yr(){Jr=!0}function Xr(e,n){var r={f:0,v:e,reactions:null,equals:pt,rv:0,wv:0};return t&&vt&&(r.created=n==null?Ct(`created at`):n,r.updated=null,r.set_during_effect=!1,r.trace=null),r}function P(e,t){let n=Xr(e,t);return sa(n),n}function Zr(e,t=!1,n=!0){let r=Xr(e);if(t||(r.equals=ht),_t&&n&&O!==null&&O.l!==null){var i,a;((a=(i=O.l).s)==null?i.s=[]:a).push(r)}return r}function F(e,n,r=!1){B!==null&&(!ra||B.f&131072)&&Pt()&&B.f&4325394&&(oa===null||!oa.has(e))&&We();let i=r?I(n):n;return t&&St(i,e.label),Qr(e,i,sr)}function Qr(e,n,r=null){if(!e.equals(n)){Kr.set(e,ta?n:e.v);var i=Dr.ensure();if(i.capture(e,n),t){if(vt||V!==null){var a,o;e.updated!=null||(e.updated=new Map);let t=((a=(o=e.updated.get(``))==null?void 0:o.count)==null?0:a)+1;if(e.updated.set(``,{error:null,count:t}),vt||t>5){let t=Ct(`updated at`);if(t!==null){let n=e.updated.get(t.stack);n||(n={error:t,count:0},e.updated.set(t.stack,n)),n.count++}}}V!==null&&(e.set_during_effect=!0)}if(e.f&2){let t=e;e.f&2048&&Jn(t),nr===null&&Jt(t)}e.wv=ga(),ti(e,te,r),Pt()&&V!==null&&V.f&1024&&!(V.f&96)&&(ua===null?da([e]):ua.push(e)),!i.is_fork&&Gr.size>0&&!Jr&&$r()}return n}function $r(){Jr=!1;for(let e of Gr){e.f&1024&&qt(e,ne);let t;try{t=_a(e)}catch(e){t=!0}t&&Sa(e)}Gr.clear()}function ei(e){F(e,e.v+1)}function ti(e,t,n){var r=e.reactions;if(r!==null)for(var i=Pt(),a=r.length,o=0;o{if(ma===f)return e();var t=B,n=ma;ia(null),ha(f);var r=e();return ia(t),ha(n),r};a&&(i.set(`length`,P(e.length,c)),t&&(e=si(e)));var m=``;let h=!1;function g(e){if(!h){h=!0,m=e,xt(o,`${m} version`);for(let[e,t]of i)xt(t,ri(m,e));h=!1}}return new Proxy(e,{defineProperty(e,n,r){(!(`value`in r)||r.configurable===!1||r.enumerable===!1||r.writable===!1)&&He();var a=i.get(n);return a===void 0?p(()=>{var e=P(r.value,c);return i.set(n,e),t&&typeof n==`string`&&xt(e,ri(m,n)),e}):F(a,r.value,!0),!0},deleteProperty(e,n){var r=i.get(n);if(r===void 0){if(n in e){let e=p(()=>P(qe,c));i.set(n,e),ei(o),t&&xt(e,ri(m,n))}}else F(r,qe),ei(o);return!0},get(n,r,a){var o;if(r===he)return e;if(t&&r===ve)return g;var l=i.get(r),u=r in n;if(l===void 0&&(!u||(o=s(n,r))!=null&&o.writable)&&(l=p(()=>{var e=P(I(u?n[r]:qe),c);return t&&xt(e,ri(m,r)),e}),i.set(r,l)),l!==void 0){var d=H(l);return d===qe?void 0:d}return Reflect.get(n,r,a)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var r=i.get(t);r&&(n.value=H(r))}else if(n===void 0){var a=i.get(t),o=a==null?void 0:a.v;if(a!==void 0&&o!==qe)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,n){var r;if(n===he)return!0;var a=i.get(n),o=a!==void 0&&a.v!==qe||Reflect.has(e,n);return(a!==void 0||V!==null&&(!o||(r=s(e,n))!=null&&r.writable))&&(a===void 0&&(a=p(()=>{var r=P(o?I(e[n]):qe,c);return t&&xt(r,ri(m,n)),r}),i.set(n,a)),H(a)===qe)?!1:o},set(e,n,r,l){var u=i.get(n),d=n in e;if(a&&n===`length`)for(var f=r;fP(qe,c)),i.set(f+``,h),t&&xt(h,ri(m,f))):F(h,qe)}if(u===void 0){var g;(!d||(g=s(e,n))!=null&&g.writable)&&(u=p(()=>P(void 0,c)),t&&xt(u,ri(m,n)),F(u,I(r)),i.set(n,u))}else{d=u.v!==qe;var _=p(()=>I(r));F(u,_)}var v=Reflect.getOwnPropertyDescriptor(e,n);if(v!=null&&v.set&&v.set.call(l,r),!d){if(a&&typeof n==`string`){var y=i.get(`length`),b=Number(n);Number.isInteger(b)&&b>=y.v&&F(y,b+1)}ei(o)}return!0},ownKeys(e){H(o);var t=Reflect.ownKeys(e).filter(e=>{var t=i.get(e);return t===void 0||t.v!==qe});for(var[n,r]of i)r.v!==qe&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ue()}})}function ri(e,t){var n;return typeof t==`symbol`?`${e}[Symbol(${(n=t.description)==null?``:n})]`:ni.test(t)?`${e}.${t}`:/^\d+$/.test(t)?`${e}[${t}]`:`${e}['${t}']`}function ii(e){try{if(typeof e==`object`&&e&&he in e)return e[he]}catch(e){}return e}function ai(e,t){return Object.is(ii(e),ii(t))}var oi=new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);function si(e){return new Proxy(e,{get(e,t,n){var r=Reflect.get(e,t,n);return oi.has(t)?function(...e){Yr();var t=r.apply(this,e);return $r(),t}:r}})}function ci(){let e=Array.prototype,t=Array.__svelte_cleanup;t&&t();let{indexOf:n,lastIndexOf:r,includes:i}=e;e.indexOf=function(e,t){let r=n.call(this,e,t);if(r===-1){for(let n=t==null?0:t;n{e.indexOf=n,e.lastIndexOf=r,e.includes=i}}var li,ui,di,fi;function pi(){if(li===void 0){li=window,ui=/Firefox/.test(navigator.userAgent);var e=Element.prototype,n=Node.prototype,r=Text.prototype;di=s(n,`firstChild`).get,fi=s(n,`nextSibling`).get,f(e)&&(e[be]=void 0,e[ye]=null,e[xe]=void 0,e.__e=void 0),f(r)&&(r[Se]=void 0),t&&(e.__svelte_meta=null,ci())}}function mi(e=``){return document.createTextNode(e)}function hi(e){return di.call(e)}function gi(e){return fi.call(e)}function L(e,t){if(!T)return hi(e);var n=hi(E);if(n===null)n=E.appendChild(mi());else if(t&&n.nodeType!==3){var r=mi();return n==null||n.before(r),ct(r),r}return t&&xi(n),ct(n),n}function _i(e,t=!1){if(!T){var n=hi(e);return n instanceof Comment&&n.data===``?gi(n):n}if(t){if((E==null?void 0:E.nodeType)!==3){var r=mi();return E==null||E.before(r),ct(r),r}xi(E)}return E}function R(e,t=1,n=!1){let r=T?E:e;for(var i;t--;)i=r,r=gi(r);if(!T)return r;if(n){if((r==null?void 0:r.nodeType)!==3){var a=mi();return r===null?i==null||i.after(a):r.before(a),ct(a),a}xi(r)}return ct(r),r}function vi(e){e.textContent=``}function yi(){return!gt||Rr!==null?!1:(V.f&ae)!==0}function bi(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function xi(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Si(e,t){if(t){let t=document.body;e.autofocus=!0,zt(()=>{document.activeElement===t&&e.focus()})}}var Ci=!1;function wi(){Ci||(Ci=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let n of e.target.elements){var t;(t=n[Ce])==null||t.call(n)}})},{capture:!0}))}function Ti(e){var t=B,n=V;ia(null),aa(null);try{return e()}finally{ia(t),aa(n)}}function Ei(e,t,n,r=n){e.addEventListener(t,()=>Ti(n));let i=e[Ce];i?e[Ce]=()=>{i(),r(!0)}:e[Ce]=()=>r(!0),wi()}function Di(e){V===null&&(B===null&&Ie(e),Fe()),ta&&Pe(e)}function Oi(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function ki(e,n){var r=V;if(t)for(;r!==null&&r.f&131072;)r=r.parent;r!==null&&r.f&8192&&(e|=re);var i={ctx:O,deps:null,nodes:null,f:e|te|512,first:null,fn:n,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};t&&(i.component_function=kt),N==null||N.register_created_effect(i);var a=i;if(e&4)or===null?Dr.ensure().schedule(i):or.push(i);else if(n!==null){try{Sa(i)}catch(e){throw Gi(i),e}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&!(a.f&524288)&&(a=a.first,e&16&&e&65536&&a!==null&&(a.f|=se))}if(a!==null&&(a.parent=r,r!==null&&Oi(a,r),B!==null&&B.f&2&&!(e&64))){var o,s=B;((o=s.effects)==null?s.effects=[]:o).push(a)}return i}function Ai(){return B!==null&&!ra}function ji(e){let t=ki(8,null);return qt(t,w),t.teardown=e,t}function Mi(e){Di(`$effect`),t&&o(e,`name`,{value:`$effect`});var n=V.f;if(!B&&n&32&&O!==null&&!O.i){var r,i=O;((r=i.e)==null?i.e=[]:r).push(e)}else return Ni(e)}function Ni(e){return ki(4|le,e)}function Pi(e){return Di(`$effect.pre`),t&&o(e,`name`,{value:`$effect.pre`}),ki(8|le,e)}function Fi(e){Dr.ensure();let t=ki(64|ce,e);return(e={})=>new Promise(n=>{e.outro?Ji(t,()=>{Gi(t),n(void 0)}):(Gi(t),n(void 0))})}function Ii(e){return ki(4,e)}function Li(e){return ki(pe|ce,e)}function Ri(e,t=0){return ki(8|t,e)}function z(e,t=[],n=[],r=[]){Pn(r,t,n,t=>{ki(8,()=>{e(...t.map(H))})})}function zi(e,n=0){var r=ki(16|n,e);return t&&(r.dev_stack=Dt),r}function Bi(e,n=0){var r=ki(C|n,e);return t&&(r.dev_stack=Dt),r}function Vi(e){return ki(32|ce,e)}function Hi(e){var t=e.teardown;if(t!==null){let e=ta,n=B;na(!0),ia(null);try{t.call(null)}finally{na(e),ia(n)}}}function Ui(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&Ti(()=>{e.abort(Te)});var r=n.next;n.f&64?n.parent=null:Gi(n,t),n=r}}function Wi(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Gi(t),t=n}}function Gi(e,n=!0){var r=!1;(n||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Ki(e.nodes.start,e.nodes.end),r=!0),e.f|=oe,Ui(e,n&&!r),xa(e,0);var i=e.nodes&&e.nodes.t;if(i!==null)for(let e of i)e.stop();Hi(e),e.f^=oe,e.f|=ie;var a=e.parent;a!==null&&a.first!==null&&qi(e),t&&(e.component_function=null),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Ki(e,t){for(;e!==null;){var n=e===t?null:gi(e);e.remove(),e=n}}function qi(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Ji(e,t,n=!0){var r=[];Yi(e,r,!0);var i=()=>{n&&Gi(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Yi(e,t,n){if(!(e.f&8192)){e.f^=re;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Yi(i,t,o?n:!1)}i=a}}}function Xi(e){Zi(e,!0)}function Zi(e,t){if(e.f&8192){e.f^=re,e.f&1024||(qt(e,te),Dr.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Zi(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Qi(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:gi(n);t.append(n),n=i}}var $i=null,ea=!1,ta=!1;function na(e){ta=e}var B=null,ra=!1;function ia(e){B=e}var V=null;function aa(e){V=e}var oa=null;function sa(e){if(B!==null&&(!gt||B.f&2)){var t;((t=oa)==null?oa=new Set:t).add(e)}}var ca=null,la=0,ua=null;function da(e){ua=e}var fa=1,pa=0,ma=pa;function ha(e){ma=e}function ga(){return++fa}function _a(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~de),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&nr===null&&qt(e,w)}return!1}function va(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!gt&&oa!==null&&oa.has(e)))for(var i=0;i{e.ac.abort(Te)}),e.ac=null);try{e.f|=fe;var u=e.fn,d=u();e.f|=ae;var f=e.deps,p=N==null?void 0:N.is_fork;if(ca!==null){var m;if(p||xa(e,la),f!==null&&la>0)for(f.length=la+ca.length,m=0;m{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Ir()}function H(e){var n=(e.f&2)!=0;if($i==null||$i.add(e),B!==null&&!ra&&!(V!==null&&V.f&16384)&&(oa===null||!oa.has(e))){var r=B.deps;if(B.f&2097152)e.rvn==null?void 0:n.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?zt(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Ua(e,t,n,r,i){var a={capture:r,passive:i},o=Ha(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&ji(()=>{t.removeEventListener(e,o,a)})}function U(e,t,n){var r;((r=t[za])==null?t[za]={}:r)[e]=n}function Wa(e){for(var t=0;t{throw e});throw m}}finally{e[za]=n,delete e.currentTarget,ia(f),aa(p)}}}var qa,Ja=((qa=globalThis)==null||(qa=qa.window)==null?void 0:qa.trustedTypes)&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Ya(e){var t;return(t=Ja==null?void 0:Ja.createHTML(e))==null?e:t}function Xa(e){var t=bi(`template`);return t.innerHTML=Ya(e.replaceAll(``,``)),t.content}function Za(e,t){var n=V;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(T)return Za(E,null),E;i===void 0&&(i=Xa(a?e:``+e),n||(i=hi(i)));var t=r||ui?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=hi(t),s=t.lastChild;Za(o,s)}else Za(t,t);return t}}function Qa(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}${n}>`,o;return()=>{if(T)return Za(E,null),E;if(!o){var e=hi(Xa(a));if(i)for(o=document.createDocumentFragment();hi(e);)o.appendChild(hi(e));else o=hi(e)}var t=o.cloneNode(!0);if(i){var n=hi(t),r=t.lastChild;Za(n,r)}else Za(t,t);return t}}function $a(e,t){return Qa(e,t,`svg`)}function eo(){if(T)return Za(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=mi();return e.append(t,n),Za(t,n),e}function G(e,t){if(T){var n=V;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),lt();return}e!==null&&e.before(t)}function K(e,t){var n,r,i=t==null?``:typeof t==`object`?`${t}`:t;i!==((r=(n=e)[Se])==null?n[Se]=e.nodeValue:r)&&(e[Se]=i,e.nodeValue=`${i}`)}function to(e,t){return ro(e,t)}var no=new Map;function ro(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){pi();var l=void 0,u=Fi(()=>{var s=n==null?t.appendChild(mi()):n;an(s,{pending:()=>{}},t=>{Mt({});var n=O;if(o&&(n.c=o),i&&(r.$$events=i),T&&Za(t,null),l=e(t,r)||{},T&&(V.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw rt(),Ke;Nt()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=no.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ka),r.delete(e),r.size===0&&no.delete(n)):r.set(e,i)}if(Va.delete(d),s!==n){var a;(a=s.parentNode)==null||a.removeChild(s)}}});return io.set(l,u),l}var io=new WeakMap,ao=new WeakMap,oo=new WeakMap,so=new WeakMap,co=new WeakMap,lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,po=class{constructor(e,n=!0){S(this,`anchor`,void 0),k(this,ao,new Map),k(this,oo,new Map),k(this,so,new Map),k(this,co,new Set),k(this,lo,!0),k(this,uo,e=>{if(M(ao,this).has(e)){var n=M(ao,this).get(e),r=M(oo,this).get(n);if(r)Xi(r),M(co,this).delete(n);else{var i=M(so,this).get(n);i&&(Xi(i.effect),M(oo,this).set(n,i.effect),M(so,this).delete(n),t&&(i.fragment.lastChild[we]=this.anchor),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(let[t,n]of M(ao,this)){if(M(ao,this).delete(t),t===e)break;let r=M(so,this).get(n);r&&(Gi(r.effect),M(so,this).delete(n))}for(let[e,t]of M(oo,this)){if(e===n||M(co,this).has(e))continue;let i=()=>{if(Array.from(M(ao,this).values()).includes(e)){var n=document.createDocumentFragment();Qi(t,n),n.append(mi()),M(so,this).set(e,{effect:t,fragment:n})}else Gi(t);M(co,this).delete(e),M(oo,this).delete(e)};M(lo,this)||!r?(M(co,this).add(e),Ji(t,i,!1)):i()}}}),k(this,fo,e=>{M(ao,this).delete(e);let t=Array.from(M(ao,this).values());for(let[e,n]of M(so,this))t.includes(e)||(Gi(n.effect),M(so,this).delete(e))}),this.anchor=e,j(lo,this,n)}ensure(e,t){var n=N,r=yi();if(t&&!M(oo,this).has(e)&&!M(so,this).has(e))if(r){var i=document.createDocumentFragment(),a=mi();i.append(a),M(so,this).set(e,{effect:Vi(()=>t(a)),fragment:i})}else M(oo,this).set(e,Vi(()=>t(this.anchor)));if(M(ao,this).set(n,e),r){for(let[t,r]of M(oo,this))t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of M(so,this))t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(M(uo,this)),n.ondiscard(M(fo,this))}else T&&(this.anchor=E),M(uo,this).call(this,n)}};function mo(e,t,n=!1){var r;T&&(r=E,lt());var i=new po(e),a=n?se:0;function o(e,t){if(T){var n=ft(r);if(e!==parseInt(n.substring(1))){var a=dt();ct(a),i.anchor=a,st(!1),i.ensure(e,t),st(!0);return}}i.ensure(e,t)}zi(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ho(e,t){return t}function go(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;_o(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;vi(d),d.append(u),e.items.clear()}_o(e,t,!l)}else{var f;o={pending:new Set(t),done:new Set},((f=e.outrogroups)==null?e.outrogroups=new Set:f).add(o)}}function _o(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=i();return n(e)?e:e==null?[]:a(e)});t&&xt(p,`{#each ...}`);var m,h=new Map,g=!0;function _(e){y.effect.f&16384||(y.pending.delete(e),y.fallback=f,xo(y,m,l,r,o),f!==null&&(m.length===0?f.f&33554432?(f.f^=ue,Co(f,null,l)):Xi(f):Ji(f,()=>{f=null})))}function v(e){y.pending.delete(e)}var y={effect:zi(()=>{m=H(p);var e=m.length;let n=!1;T&&ft(l)===`[!`!=(e===0)&&(l=dt(),ct(l),st(!1),n=!0);for(var a=new Set,d=N,y=yi(),b=0;bc(l)):(f=Vi(()=>{var e;return c((e=vo)==null?vo=mi():e)}),f.f|=ue)),e>a.size&&(t?To(m,o):Me(``,``,``)),T&&e>0&&ct(dt()),!g)if(h.set(d,a),y){for(let[e,t]of u)a.has(e)||d.skip_effect(t.e);d.oncommit(_),d.ondiscard(v)}else _(d);n&&st(!0),H(p)}),flags:r,items:u,pending:h,outrogroups:null,fallback:f};g=!1,T&&(l=E)}function bo(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function xo(e,t,n,r,i){var o=(r&8)!=0,s=t.length,c=e.items,l=bo(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o){for(v=0;v0){var se=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f){var e;(e=_.nodes)==null||(e=e.a)==null||e.apply()}})}function So(e,n,r,i,a,o,s,c){var l=s&1?s&16?Xr(r):Zr(r,!1,!1):null,u=s&2?Xr(a):null;return t&&l&&(l.trace=()=>{var e;c()[(e=u==null?void 0:u.v)==null?a:e]}),{v:l,i:u,e:Vi(()=>(o(n,l==null?r:l,u==null?a:u,c),()=>{e.delete(i)}))}}function Co(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=gi(r);if(a.before(r),r===i)return;r=o}}function wo(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function To(e,t){let n=new Map,r=e.length;for(let i=0;i{var e;let a=(e=n())==null?null:e;t&&a==null&&Re(),i.ensure(a,a&&(e=>a(e,...r)))},se)}var Do=()=>performance.now(),Oo={tick:e=>requestAnimationFrame(e),now:()=>Do(),tasks:new Set};function ko(){let e=Oo.now();Oo.tasks.forEach(t=>{t.c(e)||(Oo.tasks.delete(t),t.f())}),Oo.tasks.size!==0&&Oo.tick(ko)}function Ao(e){let t;return Oo.tasks.size===0&&Oo.tick(ko),{promise:new Promise(n=>{Oo.tasks.add(t={c:e,f:n})}),abort(){Oo.tasks.delete(t)}}}function jo(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Mo(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=jo(n.trim());t[i]=r.trim()}return t}var No=e=>e,Po=null;function Fo(e){Po=e}function Io(e,t,n){var r,i=((r=Po)==null?V:r).nodes,a,o,s,c=null;i.a!=null||(i.a={element:e,measure(){a=this.element.getBoundingClientRect()},apply(){if(s==null||s.abort(),o=this.element.getBoundingClientRect(),a.left!==o.left||a.right!==o.right||a.top!==o.top||a.bottom!==o.bottom){let e=t()(this.element,{from:a,to:o},n==null?void 0:n());s=Lo(this.element,e,void 0,1,()=>{},()=>{s==null||s.abort(),s=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var i=e.style;c={position:i.position,width:i.width,height:i.height,transform:i.transform},i.position=`absolute`,i.width=n,i.height=r;var o=e.getBoundingClientRect();if(a.left!==o.left||a.top!==o.top){var s=`translate(${a.left-o.left}px, ${a.top-o.top}px)`;i.transform=i.transform?`${i.transform} ${s}`:s}}}},unfix(){if(c){var t=e.style;t.position=c.position,t.width=c.width,t.height=c.height,t.transform=c.transform}}}),i.a.element=e}function Lo(e,t,n,r,i,a){var o=r===1;if(p(t)){var s,c=!1;return zt(()=>{c||(s=Lo(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n==null||n.deactivate(),!(t!=null&&t.duration)&&!(t!=null&&t.delay))return i(),a(),{abort:m,deactivate:m,reset:m,t:()=>r};let{delay:l=0,css:u,tick:d,easing:f=No}=t;var h=[];if(o&&n===void 0&&(d&&d(0,1),u)){var g=Mo(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{var o;v.cancel(),i();var s=(o=n==null?void 0:n.t())==null?1-r:o;n==null||n.abort();var c=r-s,l=t.duration*Math.abs(c),p=[];if(l>0){var m=!1;if(u)for(var h=Math.ceil(l/(1e3/60)),g=0;g<=h;g+=1){var y=s+c*f(g/h),b=Mo(u(y,1-y));p.push(b),m||(m=b.overflow===`hidden`)}m&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return s+c*f(e/l)},d&&Ao(()=>{if(v.playState!==`running`)return!1;var e=_();return d(e,1-e),!0})}v=e.animate(p,{duration:l,fill:`forwards`}),v.onfinish=()=>{_=()=>r,d==null||d(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=m)},deactivate:()=>{a=m},reset:()=>{r===0&&(d==null||d(1,0))},t:()=>_()}}function Ro(e,n,r,i,a,o){let s=T;T&<();var c=t&&o&&(O==null?void 0:O.function[Je]),l=null;T&&E.nodeType===1&&(l=E,lt());var u=T?E:e,d=V,f=new po(u,!1);zi(()=>{let e=n()||null;var s=a?a():r||e===`svg`?Xe:void 0;if(e===null){f.ensure(null,null);return}return f.ensure(e,n=>{if(e){if(l=T?l:bi(e,s),t&&o&&(l.__svelte_meta={parent:Dt,loc:{file:c,line:o[0],column:o[1]}}),Za(l,l),i){var r=null;T&&Ra(e)&&l.append(r=document.createComment(``));var a=T?hi(l):l.appendChild(mi());T&&(a===null?st(!1):ct(a)),Fo(d),i(l,a),r==null||r.remove(),Fo(null)}V.nodes.end=l,n.before(l)}T&&ct(n)}),()=>{}},se),ji(()=>{}),s&&(st(!0),ct(u))}function zo(e,t){var n=void 0,r;Bi(()=>{n!==(n=t())&&(r&&(Gi(r),r=null),n&&(r=Vi(()=>{Ii(()=>n(e))})))})}function Bo(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Uo.includes(r[o-1]))&&(s===r.length||Uo.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Go(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Ko(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function qo(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Ko)),i&&c.push(...Object.keys(i).map(Ko));var l=0,u=-1;let t=e.length;for(var d=0;d{Zo(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),ji(()=>{t.disconnect()})}function $o(e,t,n=t){var r=new WeakSet,i=!0;Ei(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),es);else{var o,s=(o=e.querySelector(i))==null?e.querySelector(`option:not([disabled])`):o;a=s&&es(s)}n(a),e.__value=a,N!==null&&r.add(N)}),Ii(()=>{var a=t();if(e===document.activeElement){var o=gt?tr:N;if(r.has(o))return}if(Zo(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=es(s),n(a))}e.__value=a,i=!1}),Qo(e)}function es(e){return`__value`in e?e.__value:e.value}var ts=Symbol(`class`),ns=Symbol(`style`),rs=Symbol(`is custom element`),is=Symbol(`is html`),as=Ee?`link`:`LINK`,os=Ee?`input`:`INPUT`,ss=Ee?`option`:`OPTION`,cs=Ee?`select`:`SELECT`,ls=Ee?`progress`:`PROGRESS`;function us(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ps(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ps(e,`checked`,null),e.checked=r}}};e[Ce]=n,zt(n),wi()}}function ds(e,t){var n=gs(e);n.value===(n.value=t==null?void 0:t)||e.value===t&&(t!==0||e.nodeName!==ls)||(e.value=t==null?``:t)}function fs(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ps(e,t,n,r){var i=gs(e);if(T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===as)){r||ys(e,t,n==null?``:n);return}i[t]!==(i[t]=n)&&(t===`loading`&&(e[_e]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&vs(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ms(e,t,n,r,i=!1,a=!1){if(T&&i&&e.nodeName===os){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||us(o)}var s=gs(e),c=s[rs],l=!s[is];let u=T&&c;u&&st(!1);var d=t||{},f=e.nodeName===ss;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ho(n.class):(r||n[ts])&&(n.class=null),n[ns]&&(n.style!=null||(n.style=null));var m=vs(e);if(e.nodeName===os&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,ps(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){Jo(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t==null?void 0:t[ts],n[ts]),d[i]=o,d[ts]=n[ts];continue}if(i===`style`){Xo(e,o,t==null?void 0:t[ns],n[ns]),d[i]=o,d[ns]=n[ns];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=ja(r);if(ka(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)U(r,e,o),Wa([r]);else if(o!=null){function y(e){d[i].call(this,e)}d[n]=Ha(r,e,y,t)}}else if(i===`style`)ps(e,i,o);else if(i===`autofocus`)Si(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)fs(e,o);else{var b=i;l||(b=Pa(b));var x=b===`defaultValue`||b===`defaultChecked`;if(o==null&&!c&&!x)if(s[i]=null,b===`value`||b===`checked`){let n=e,r=t===void 0;if(b===`value`){let e=n.defaultValue;n.removeAttribute(b),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(b),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else x||m.includes(b)&&(c||typeof o!=`string`)?(e[b]=o,b in s&&(s[b]=qe)):typeof o!=`function`&&ps(e,b,o,a)}}}return u&&st(!0),d}function hs(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Pn(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===cs,l=!1;if(Bi(()=>{var u=t(...n.map(H)),d=ms(e,r,u,a,o,s);l&&c&&`value`in u&&Zo(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Gi(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Gi(i[t]),i[t]=Vi(()=>zo(e,()=>f))),d[t]=f}r=d}),c){var u=e;Ii(()=>{Zo(u,r.value,!0),Qo(u)})}l=!0})}function gs(e){var t,n;return(n=(t=e)[ye])==null?t[ye]={[rs]:e.nodeName.includes(`-`),[is]:e.namespaceURI===Ye}:n}var _s=new Map;function vs(e){var t=e.getAttribute(`is`)||e.nodeName,n=_s.get(t);if(n)return n;_s.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=d(i)}return n}function ys(e,n,r){var i;t&&(n===`srcset`&&Ss(e,r)||bs((i=e.getAttribute(n))==null?``:i,r)||nt(n,e.outerHTML.replace(e.innerHTML,e.innerHTML&&`...`),String(r)))}function bs(e,t){return e===t?!0:new URL(e,document.baseURI).href===new URL(t,document.baseURI).href}function xs(e){return e.split(`,`).map(e=>e.trim().split(` `).filter(Boolean))}function Ss(e,t){var n=xs(e.srcset),r=xs(t);return r.length===n.length&&r.every(([e,t],r)=>t===n[r][1]&&(bs(n[r][0],e)||bs(e,n[r][0])))}function Cs(e,n,r=n){var i=new WeakSet;Ei(e,`input`,async a=>{t&&e.type===`checkbox`&&Ae();var o=a?e.defaultValue:e.value;if(o=ws(e)?Ts(o):o,r(o),N!==null&&i.add(N),await Ca(),o!==(o=n())){var s,c=e.selectionStart,l=e.selectionEnd,u=e.value.length;if(e.value=(s=o)==null?``:s,l!==null){var d=e.value.length;c===l&&l===u&&d>u?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=c,e.selectionEnd=Math.min(l,d))}}}),(T&&e.defaultValue!==e.value||Ea(n)==null&&e.value)&&(r(ws(e)?Ts(e.value):e.value),N!==null&&i.add(N)),Ri(()=>{t&&e.type===`checkbox`&&Ae();var r=n();if(e===document.activeElement){var a=gt?tr:N;if(i.has(a))return}ws(e)&&r===Ts(e.value)||e.type===`date`&&!r&&!e.value||r!==e.value&&(e.value=r==null?``:r)})}function ws(e){var t=e.type;return t===`number`||t===`range`}function Ts(e){return e===``?null:+e}var Es,Ds=new WeakMap,Os=new WeakMap,ks=new WeakMap,As=new WeakSet,js=class{constructor(e){nn(this,As),k(this,Ds,new WeakMap),k(this,Os,void 0),k(this,ks,void 0),j(ks,this,e)}observe(e,t){var n=M(Ds,this).get(e)||new Set;return n.add(t),M(Ds,this).set(e,n),A(As,this,Ms).call(this).observe(e,M(ks,this)),()=>{var n=M(Ds,this).get(e);n.delete(t),n.size===0&&(M(Ds,this).delete(e),M(Os,this).unobserve(e))}}};Es=js;function Ms(){var e;return(e=M(Os,this))==null?j(Os,this,new ResizeObserver(e=>{for(var t of e){Es.entries.set(t.target,t);for(var n of M(Ds,this).get(t.target)||[])n(t)}})):e}S(js,`entries`,new WeakMap);function Ns(e,t){return e===t||(e==null?void 0:e[he])===t}function Ps(e={},t,n,r){var i=O.r,a=V;return Ii(()=>{var o,s;return Ri(()=>{o=s,s=(r==null?void 0:r())||[],Ea(()=>{Ns(n(...s),e)||(t(e,...s),o&&Ns(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ns(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c==null||c()}}}),e}function Fs(e=!1){let t=O,n=t.l.u;if(!n)return;let r=()=>Da(t.s);if(e){let e=0,n={},i=Vn(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&Pi(()=>{Is(t,r),g(n.b)}),Mi(()=>{let e=Ea(()=>n.m.map(h));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Mi(()=>{Is(t,r),g(n.a)})}function Is(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function Ls(e){var t=Xr(0);return function(){return arguments.length===1?(F(t,H(t)+1),arguments[0]):(H(t),e())}}var Rs={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,n){return t&&Be(`${e.name}.${String(n)}`),!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.has(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function zs(e,n,r){return new Proxy(t?{props:e,exclude:n,name:r,other:{},to_proxy:[]}:{props:e,exclude:n},Rs)}var Bs={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===he||t===ge)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Vs(...e){return new Proxy({props:e},Bs)}function Hs(e,n,r,i){var a=!_t||(r&2)!=0,o=(r&8)!=0,c=(r&16)!=0,l=i,u=!0,d=void 0,f=()=>c&&a?(d!=null||(d=Vn(i)),H(d)):(u&&(u=!1,l=c?Ea(i):i),l);let p;if(o){var m,h,g=he in e||ge in e;p=(m=(h=s(e,n))==null?void 0:h.set)==null?g&&n in e?t=>e[n]=t:void 0:m}var _,v=!1;o?[_,v]=$t(()=>e[n]):_=e[n],_===void 0&&i!==void 0&&(_=f(),p&&(a&&ze(n),p(_)));var y=a?()=>{var t=e[n];return t===void 0?f():(u=!0,t)}:()=>{var t=e[n];return t!==void 0&&(l=void 0),t===void 0?l:t};if(a&&!(r&4))return y;if(p){var b=e.$$legacy;return(function(e,t){return arguments.length>0?((!a||!t||b||v)&&p(t?y():e),e):y()})}var x=!1,S=(r&1?Vn:Gn)(()=>(x=!1,y()));t&&(S.label=n),o&&H(S);var ee=V;return(function(e,t){if(arguments.length>0){let n=t?H(S):a&&o?I(e):e;return F(S,n),x=!0,l!==void 0&&(l=n),e}return ta&&x||ee.f&16384?S.v:H(S)})}if(t){function Us(e){if(!(e in globalThis)){let t;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(t!==void 0)return t;Ve(e)},set:e=>{t=e}})}}Us(`$state`),Us(`$effect`),Us(`$derived`),Us(`$inspect`),Us(`$props`),Us(`$bindable`)}function Ws(e){O===null&&Oe(`onMount`),_t&&O.l!==null?Gs(O).m.push(e):Mi(()=>{let t=Ea(e);if(typeof t==`function`)return t})}function Gs(e){var t,n=e.l;return(t=n.u)==null?n.u={a:[],b:[],m:[]}:t}if(typeof window<`u`){var Ks,qs,Js,Ys;((qs=(Ks=(Ys=(Js=window).__svelte)==null?Js.__svelte={}:Ys).v)==null?Ks.v=new Set:qs).add(`5`)}var Xs={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},Zs=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Qs=Symbol(`lucide-context`),$s=()=>jt(Qs),ec=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),tc=$a(``);function nc(e,t){var n;Mt(t,!0);let r=(n=$s())==null?{}:n,i=Hs(t,`color`,19,()=>{var e;return(e=r.color)==null?`currentColor`:e}),a=Hs(t,`size`,19,()=>{var e;return(e=r.size)==null?24:e}),o=Hs(t,`strokeWidth`,19,()=>{var e;return(e=r.strokeWidth)==null?2:e}),s=Hs(t,`absoluteStrokeWidth`,19,()=>{var e;return(e=r.absoluteStrokeWidth)==null?!1:e}),c=Hs(t,`iconNode`,19,()=>[]),l=zs(t,ec),u=Wn(()=>s()?Number(o())*24/Number(a()):o());var d=tc();hs(d,e=>({...Xs,...e,...l,width:a(),height:a(),stroke:i(),"stroke-width":H(u),class:[`lucide-icon lucide`,r.class,t.name&&`lucide-${t.name}`,t.class]}),[()=>!t.children&&!Zs(l)&&{"aria-hidden":`true`}]);var f=L(d);yo(f,17,c,ho,(e,t)=>{var n=Wn(()=>v(H(t),2));let r=()=>H(n)[0],i=()=>H(n)[1];var a=eo();Ro(_i(a),r,!0,(e,t)=>{hs(e,()=>({...i()}))}),G(e,a)}),Eo(R(f),()=>{var e;return(e=t.children)==null?m:e}),D(d),G(e,d),Nt()}var rc=new Set([`$$slots`,`$$events`,`$$legacy`]);function ic(e,t){let n=zs(t,rc),r=[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`}]];nc(e,Vs({name:`hash`},()=>n,{get iconNode(){return r}}))}var ac=new Set([`$$slots`,`$$events`,`$$legacy`]);function oc(e,t){let n=zs(t,ac),r=[[`path`,{d:`M10 8h.01`}],[`path`,{d:`M12 12h.01`}],[`path`,{d:`M14 8h.01`}],[`path`,{d:`M16 12h.01`}],[`path`,{d:`M18 8h.01`}],[`path`,{d:`M6 8h.01`}],[`path`,{d:`M7 16h10`}],[`path`,{d:`M8 12h.01`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`}]];nc(e,Vs({name:`keyboard`},()=>n,{get iconNode(){return r}}))}var sc=new Set([`$$slots`,`$$events`,`$$legacy`]);function cc(e,t){let n=zs(t,sc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`}]];nc(e,Vs({name:`lock-open`},()=>n,{get iconNode(){return r}}))}var lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function uc(e,t){let n=zs(t,lc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];nc(e,Vs({name:`lock`},()=>n,{get iconNode(){return r}}))}var dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function fc(e,t){let n=zs(t,dc),r=[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`}],[`circle`,{cx:`12`,cy:`10`,r:`3`}]];nc(e,Vs({name:`map-pin`},()=>n,{get iconNode(){return r}}))}var pc=new Set([`$$slots`,`$$events`,`$$legacy`]);function mc(e,t){let n=zs(t,pc),r=[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`}]];nc(e,Vs({name:`message-square`},()=>n,{get iconNode(){return r}}))}var hc=new Set([`$$slots`,`$$events`,`$$legacy`]);function gc(e,t){let n=zs(t,hc),r=[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`}],[`path`,{d:`M12 22V12`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`}],[`path`,{d:`m7.5 4.27 9 5.15`}]];nc(e,Vs({name:`package`},()=>n,{get iconNode(){return r}}))}var _c=new Set([`$$slots`,`$$events`,`$$legacy`]);function vc(e,t){let n=zs(t,_c),r=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];nc(e,Vs({name:`settings`},()=>n,{get iconNode(){return r}}))}var yc=new Set([`$$slots`,`$$events`,`$$legacy`]);function bc(e,t){let n=zs(t,yc),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];nc(e,Vs({name:`star`},()=>n,{get iconNode(){return r}}))}var xc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sc(e,t){let n=zs(t,xc),r=[[`circle`,{cx:`9`,cy:`12`,r:`3`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`}]];nc(e,Vs({name:`toggle-left`},()=>n,{get iconNode(){return r}}))}var Cc=new Set([`$$slots`,`$$events`,`$$legacy`]);function wc(e,t){let n=zs(t,Cc),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Tc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ec(e,t){let n=zs(t,Tc),r=[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash`},()=>n,{get iconNode(){return r}}))}var Dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oc(e,t){let n=zs(t,Dc),r=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]];nc(e,Vs({name:`user`},()=>n,{get iconNode(){return r}}))}var kc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ac(e,t){let n=zs(t,kc),r=[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`}]];nc(e,Vs({name:`wrench`},()=>n,{get iconNode(){return r}}))}var jc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mc(e,t){let n=zs(t,jc),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];nc(e,Vs({name:`x`},()=>n,{get iconNode(){return r}}))}var Nc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pc(e,t){let n=zs(t,Nc),r=[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`}]];nc(e,Vs({name:`zap`},()=>n,{get iconNode(){return r}}))}var Fc=function(e){return e.Item=`item`,e.Weapon=`weapon`,e.Armor=`armor`,e}({}),Ic=function(e){return e.General=`general`,e.Vars=`vars`,e.Switches=`switches`,e.Inv=`inv`,e.Actors=`actors`,e.Map=`map`,e.CommonEv=`commonev`,e.Locks=`locks`,e.Logs=`logs`,e.Shortcuts=`shortcuts`,e.Settings=`settings`,e}({}),Lc=function(e){return e[e.MHP=0]=`MHP`,e[e.MMP=1]=`MMP`,e[e.ATK=2]=`ATK`,e[e.DEF=3]=`DEF`,e[e.MAT=4]=`MAT`,e[e.MDF=5]=`MDF`,e[e.AGI=6]=`AGI`,e[e.LUK=7]=`LUK`,e}({}),Rc=new WeakMap,zc=new class{constructor(){k(this,Rc,P(I([])))}get toasts(){return H(M(Rc,this))}set toasts(e){F(M(Rc,this),e,!0)}show(e,t=`info`,n=1500){let r=Math.random().toString(),i={id:r,type:t,message:e,duration:n};this.toasts=[...this.toasts,i],setTimeout(()=>{this.dismiss(r)},n)}dismiss(e){this.toasts=this.toasts.filter(t=>t.id!==e)}},Bc=e=>!!e&&typeof e.then==`function`,q={vars:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.variables)==null)&&e.length?window.$dataSystem.variables.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.variables)==null?void 0:t[e];return n?String(n):`Variable ${e}`},get:e=>{var t;return(t=window.$gameVariables)==null?void 0:t.value(e)},set:(e,t)=>{if(!window.$gameVariables)return;let n=q.vars.get(e),r=t;if(typeof n==`number`&&typeof t==`string`){let e=Number(t);!isNaN(e)&&t.trim()!==``&&(r=e)}else typeof n==`boolean`&&typeof t==`string`&&(r=t.toLowerCase()===`true`||t===`1`);window.$gameVariables.setValue(e,r)},list:()=>{let e=q.vars.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.vars.name(n),value:q.vars.get(n)});return t}},switches:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.switches)==null)&&e.length?window.$dataSystem.switches.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.switches)==null?void 0:t[e];return n?String(n):`Switch ${e}`},get:e=>{var t;return!!((t=window.$gameSwitches)!=null&&t.value(e))},set:(e,t)=>{window.$gameSwitches&&window.$gameSwitches.setValue(e,!!t)},toggle:e=>{q.switches.set(e,!q.switches.get(e))},list:()=>{let e=q.switches.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.switches.name(n),value:q.switches.get(n)});return t}},inv:{table:e=>e===Fc.Item?window.$dataItems||[]:e===Fc.Weapon?window.$dataWeapons||[]:e===Fc.Armor&&window.$dataArmors||[],data:(e,t)=>q.inv.table(e)[t],count:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.numItems(n):0},maxStack:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.maxItems(n):99},grant:(e,t,n)=>{let r=q.inv.data(e,t);r&&window.$gameParty&&window.$gameParty.gainItem(r,n,!1)},setCount:(e,t,n)=>{let r=q.inv.count(e,t),i=q.inv.maxStack(e,t);n=Math.max(0,Math.min(i,n)),n!==r&&q.inv.grant(e,t,n-r)},list:e=>{let t=q.inv.table(e),n=[];for(let r=1;rwindow.$gameParty?window.$gameParty.gold():0,max:()=>window.$gameParty&&window.$gameParty.maxGold?window.$gameParty.maxGold():99999999,add:e=>{window.$gameParty&&(e>0?window.$gameParty.gainGold(e):e<0&&window.$gameParty.loseGold(-e))},set:e=>{let t=q.gold.max();e=Math.max(0,Math.min(t,e)),q.gold.add(e-q.gold.get())}},party:{members:()=>window.$gameParty?window.$gameParty.members().map(e=>({id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1})):[],steps:()=>window.$gameParty?window.$gameParty.steps():0,playtime:()=>window.Graphics?Math.floor(window.Graphics.frameCount/60):0,recoverAll:()=>{window.$gameParty&&window.$gameParty.members().forEach(e=>{var t;(t=e.recoverAll)==null||t.call(e)})}},map:{list:()=>window.$dataMapInfos?window.$dataMapInfos.filter(e=>!!e).map(e=>({id:e.id,name:e.name,parentId:e.parentId})):[],current:()=>!window.$gameMap||!window.$gamePlayer?null:{mapId:window.$gameMap.mapId(),x:window.$gamePlayer.x,y:window.$gamePlayer.y,dir:window.$gamePlayer.direction()},teleport:(e,t,n,r=0,i=0)=>{window.$gamePlayer&&window.$gamePlayer.reserveTransfer(e,t,n,r,i)},speed:e=>{window.$gamePlayer&&(e=Math.max(1,Math.min(8,e)),window.$gamePlayer.setMoveSpeed(e))},events:()=>!window.$gameMap||typeof window.$gameMap.events!=`function`?[]:(window.$gameMap.events()||[]).map(e=>{let t=typeof e.event==`function`?e.event():null,n=t&&t.name?t.name:`Event ${e._eventId||0}`,r=typeof e.x==`number`?e.x:e._x||0,i=typeof e.y==`number`?e.y:e._y||0;return{id:typeof e.eventId==`function`?e.eventId():e._eventId||0,name:n,x:r,y:i}}),loadMapEvents:async e=>{if(e<=0)return[];try{let t=`data/Map${e.toString().padStart(3,`0`)}.json`,n=await(await fetch(t)).json();return!n||!n.events?[]:n.events.filter(e=>e).map(e=>{let t=e.name||`Event ${e.id}`;if(t.match(/^EV\d+$/i)){if(e.note)t=`${t} (${e.note.split(` +`)[0].trim()})`;else if(e.pages&&e.pages.length>0){let n=e.pages[0].list;if(n&&n.length>0){let e=n.find(e=>e.code===108||e.code===401);if(e&&e.parameters&&e.parameters[0]){let n=String(e.parameters[0]).substring(0,20).trim();n&&(t=`${t} [${n}]`)}}}}return{id:e.id,name:t,x:e.x,y:e.y}})}catch(t){return console.warn(`Failed to load events for map`,e,t),[]}}},commonev:{list:()=>window.$dataCommonEvents?window.$dataCommonEvents.filter(e=>e&&e.name).map(e=>({id:e.id,name:e.name})):[],run:e=>{window.$gameTemp&&window.$gameTemp.reserveCommonEvent(e)}},battle:{inBattle:()=>!window.SceneManager||!window.SceneManager._scene?!1:window.SceneManager._scene.constructor.name===`Scene_Battle`,canExecuteBattleEnd:()=>q.battle.inBattle()&&window.BattleManager&&window.BattleManager._phase!==`battleEnd`,instantWin:()=>{!q.battle.inBattle()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.isDead()||(e.setHp(0),e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId()),e.performCollapse&&e.performCollapse(),e.refresh&&e.refresh())}),window.BattleManager.checkBattleEnd())},flee:()=>{!q.battle.inBattle()||!window.BattleManager||window.BattleManager.processAbort()},forceVictory:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processVictory(),zc.show(`Forced victory from battle!`,`success`))},forceDefeat:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||(window.$gameParty.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processDefeat(),zc.show(`Forced defeat from battle...`,`warn`))},forceEscape:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||!window.SoundManager||(window.$gameParty.performEscape(),window.SoundManager.playEscape(),window.BattleManager._escaped=!0,window.BattleManager.processEscape(),zc.show(`Forced escape from battle`,`success`))},changeAllEnemyHealth:e=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all enemies`,`success`))},recoverAllEnemy:()=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all enemies`,`success`))},changeAllPartyHealth:e=>{window.$gameParty&&(window.$gameParty.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all party members`,`success`))},recoverAllParty:()=>{window.$gameParty&&(window.$gameParty.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all party members`,`success`))}},scene:{gotoTitle:()=>{window.SceneManager&&window.Scene_Title&&window.SceneManager.goto(window.Scene_Title)},toggleSaveScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Save?window.SceneManager.pop():t===window.Scene_Load?window.SceneManager.goto(window.Scene_Save):window.SceneManager.push(window.Scene_Save)},toggleLoadScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Load?window.SceneManager.pop():t===window.Scene_Save?window.SceneManager.goto(window.Scene_Load):window.SceneManager.push(window.Scene_Load)},quickSave:(e=1)=>{window.$gameSystem&&window.DataManager?(window.$gameSystem.onBeforeSave(),window.DataManager.saveGame(e),zc.show(`Game Saved - Slot ${e}`,`success`)):zc.show(`Quick Save failed`,`error`)},quickLoad:async(e=1)=>{if(window.DataManager&&window.SceneManager&&window.Scene_Map)try{let t=window.DataManager.loadGame(e);Bc(t)?(await t,q.scene.completeQuickLoad(e)):t?q.scene.completeQuickLoad(e):zc.show(`Quick Load failed`,`error`)}catch(e){console.error(e),zc.show(`Quick Load failed`,`error`)}else zc.show(`Quick Load failed`,`error`)},completeQuickLoad:e=>{var t,n,r,i,a,o;if(!(!window.SceneManager||!window.Scene_Map)){if(window.$gameSystem&&window.$dataSystem&&typeof window.$gameSystem.versionId==`function`&&typeof window.$dataSystem.versionId==`number`&&window.$gameSystem.versionId()!==window.$dataSystem.versionId&&window.$gameMap&&window.$gamePlayer){var s,c;let e=window.$gameMap.mapId(),t=window.$gamePlayer.x,n=window.$gamePlayer.y,r=window.$gamePlayer.direction();window.$gamePlayer.reserveTransfer(e,t,n,r,0),(s=(c=window.$gamePlayer).requestMapReload)==null||s.call(c)}(t=window.SoundManager)==null||(n=t.playLoad)==null||n.call(t),(r=window.SceneManager._scene)==null||(i=r.fadeOutAll)==null||i.call(r),window.SceneManager.goto(window.Scene_Map),(a=window.$gameSystem)==null||(o=a.onAfterLoad)==null||o.call(a),zc.show(`Game Loaded - Slot ${e}`,`success`)}}},system:{openDevTool:()=>{if(typeof window<`u`&&window.require)try{let e=window.require(`nw.gui`);e&&e.Window&&e.Window.get&&e.Window.get().showDevTools()}catch(e){}}}},J={list:()=>window.$dataActors?window.$dataActors.filter(e=>!!e).map(e=>{let t=window.$gameActors?window.$gameActors.actor(e.id):null;return{id:e.id,name:t?t.name():e.name,level:t&&(typeof t.level==`function`?t.level():t._level)||1,inParty:t&&window.$gameParty?window.$gameParty.members().includes(t):!1}}):[],get:e=>{var t;if(!window.$gameActors)return null;let n=window.$gameActors.actor(e);if(!n)return null;let r=[];for(let e=0;e<8;e++)r.push({id:e,value:n.param?n.param(e):0});let i=window.$dataSkills?window.$dataSkills.filter(e=>!!e).map(e=>({id:e.id,name:e.name,learned:n.hasSkill?n.hasSkill(e.id):!1})):[],a=n.equips&&n.equips()?n.equips().map((e,t)=>({slotId:t,name:e?e.name:`Empty`,item:e})):[],o=n.states&&n.states()?n.states().map(e=>({id:e.id,name:e.name})):[];return{id:n.actorId(),name:n.name(),level:typeof n.level==`function`?n.level()||1:n._level||1,exp:n.currentExp?n.currentExp():0,nextExp:n.nextRequiredExp?n.nextRequiredExp():0,hp:n.hp,mp:n.mp,tp:n.tp,mhp:n.mhp,mmp:n.mmp,mtp:n.maxTp?n.maxTp():100,params:r,skills:i,states:o,equips:a,inParty:(t=window.$gameParty)==null?void 0:t.members().includes(n)}},setLevel:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeLevel&&r.changeLevel(Math.max(1,Math.min(r.maxLevel?r.maxLevel():99,t)),!1)},setExp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeExp&&r.changeExp(Math.max(0,t),!1)},setHp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setHp&&r.setHp(Math.max(0,Math.min(r.mhp,t)))},setMp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setMp&&r.setMp(Math.max(0,Math.min(r.mmp,t)))},setTp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e),i=r&&r.maxTp?r.maxTp():100;r&&r.setTp&&r.setTp(Math.max(0,Math.min(i,t)))},addParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);i&&i.addParam&&i.addParam(t,n)},setParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);if(!i||!i.param||!i.addParam)return;let a=1;i.paramRate&&(a*=i.paramRate(t)),i.paramBuffRate&&(a*=i.paramBuffRate(t)),a===0&&(a=1);let o=i.paramBase?i.paramBase(t):0,s=i.paramPlus?i.paramPlus(t):0,c=Math.round(n/a)-o-s;i.addParam(t,c)},learnSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.learnSkill&&r.learnSkill(t)},forgetSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.forgetSkill&&r.forgetSkill(t)},recover:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.recoverAll&&n.recoverAll()},setName:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setName&&r.setName(String(t))},addToParty:e=>{window.$gameParty&&window.$gameParty.addActor&&window.$gameParty.addActor(e)},removeFromParty:e=>{window.$gameParty&&window.$gameParty.removeActor&&window.$gameParty.removeActor(e)},listStates:()=>window.$dataStates?window.$dataStates.filter(e=>!!(e&&e.name)):[],addState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.addState&&r.addState(t)},removeState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.removeState&&r.removeState(t)},clearStates:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.clearStates&&n.clearStates()}},Y=I({vars:new Map,switches:new Map,items:new Map,gold:null,stats:new Map,noclip:!1}),Vc=!1,Hc=null,X={install:()=>{if(!Vc&&!(typeof window>`u`)&&!window.__FORGE_LOCKS__){if(window.__FORGE_LOCKS__=!0,window.Game_Variables&&window.Game_Variables.prototype.setValue){let e=window.Game_Variables.prototype.setValue;window.Game_Variables.prototype.setValue=function(t,n){Y.vars.has(t)&&(n=Y.vars.get(t)),e.call(this,t,n)}}if(window.Game_Switches&&window.Game_Switches.prototype.setValue){let e=window.Game_Switches.prototype.setValue;window.Game_Switches.prototype.setValue=function(t,n){Y.switches.has(t)&&(n=Y.switches.get(t)),e.call(this,t,n)}}if(window.Game_Party&&window.Game_Party.prototype.gainGold&&(Hc=window.Game_Party.prototype.gainGold,window.Game_Party.prototype.gainGold=function(e){Y.gold===null&&Hc.call(this,e)}),window.Scene_Base&&window.Scene_Base.prototype.update){let e=window.Scene_Base.prototype.update;window.Scene_Base.prototype.update=function(){e.call(this),X.tick()}}if(window.DataManager){if(window.DataManager.setupNewGame){let e=window.DataManager.setupNewGame;window.DataManager.setupNewGame=function(...t){e.apply(this,t)}}if(window.DataManager.extractSaveContents){let e=window.DataManager.extractSaveContents;window.DataManager.extractSaveContents=function(...t){let n=e.apply(this,t);return X.applyValueLocks(),n}}}X.loadFromStorage(),Vc=!0}},saveToStorage:()=>{try{let e={vars:Array.from(Y.vars.entries()),switches:Array.from(Y.switches.entries()),items:Array.from(Y.items.entries()),gold:Y.gold,stats:Array.from(Y.stats.entries()),noclip:Y.noclip};localStorage.setItem(`forge:locks`,JSON.stringify(e))}catch(e){}},loadFromStorage:()=>{try{let e=localStorage.getItem(`forge:locks`);if(e){let t=JSON.parse(e);Y.vars=new Map(t.vars||[]),Y.switches=new Map(t.switches||[]),Y.items=new Map(t.items||[]),Y.gold=t.gold===void 0?null:t.gold,Y.stats=new Map(t.stats||[]),t.noclip&&X.setNoclip(!0,!0)}}catch(e){}},tick:()=>{if(X.applyValueLocks(),Y.noclip&&window.$gamePlayer&&!window.$gamePlayer.isThrough()&&window.$gamePlayer.setThrough(!0),Y.gold!==null&&window.$gameParty){let e=window.$gameParty.gold();e!==Y.gold&&Hc&&Hc.call(window.$gameParty,Y.gold-e)}if(Y.stats.size>0&&window.$gameActors)for(let[e,t]of Y.stats.entries()){let[n,r]=e.split(`:`),i=parseInt(n,10),a=window.$gameActors.actor(i);if(a){if(r===`hp`&&a.hp!==t)J.setHp(i,t);else if(r===`mp`&&a.mp!==t)J.setMp(i,t);else if(r===`tp`&&a.tp!==t)J.setTp(i,t);else if(r===`level`&&(typeof a.level==`function`?a.level():a._level)!==t)J.setLevel(i,t);else if(r===`exp`&&(a.currentExp?a.currentExp():0)!==t)J.setExp(i,t);else if(r.startsWith(`param_`)){let e=parseInt(r.split(`_`)[1],10);a.param&&a.param(e)!==t&&J.setParam(i,e,t)}}}if(Y.items.size>0&&window.$gameParty)for(let[e,t]of Y.items.entries()){let[n,r]=e.split(`:`),i=parseInt(r,10),a=n;q.inv.setCount(a,i,t)}},applyValueLocks:()=>{if(Y.vars.size>0&&window.$gameVariables)for(let[e,t]of Y.vars.entries())window.$gameVariables.value(e)!==t&&window.$gameVariables.setValue(e,t);if(Y.switches.size>0&&window.$gameSwitches)for(let[e,t]of Y.switches.entries())window.$gameSwitches.value(e)!==t&&window.$gameSwitches.setValue(e,t)},freezeVar:(e,t)=>{t?Y.vars.set(e,q.vars.get(e)):Y.vars.delete(e),Y.vars=new Map(Y.vars),X.saveToStorage()},freezeSwitch:(e,t)=>{t?Y.switches.set(e,q.switches.get(e)):Y.switches.delete(e),Y.switches=new Map(Y.switches),X.saveToStorage()},freezeItem:(e,t,n)=>{let r=`${e}:${t}`;n?Y.items.set(r,q.inv.count(e,t)):Y.items.delete(r),Y.items=new Map(Y.items),X.saveToStorage()},freezeGold:e=>{e?Y.gold=q.gold.get():Y.gold=null,X.saveToStorage()},freezeStat:(e,t,n)=>{let r=`${e}:${t}`;if(n){let n=J.get(e),i=0;if(n){if(t===`hp`||t===`mp`||t===`tp`||t===`level`||t===`exp`)i=n[t];else if(t.startsWith(`param_`)){let e=parseInt(t.split(`_`)[1],10),r=n.params.find(t=>t.id===e);r&&(i=r.value)}}Y.stats.set(r,i)}else Y.stats.delete(r);Y.stats=new Map(Y.stats),X.saveToStorage()},setNoclip:(e,t=!1)=>{Y.noclip=e,window.$gamePlayer&&window.$gamePlayer.setThrough(e),t||zc.show(`Noclip: ${e?`ON`:`OFF`}`,e?`success`:`info`)},clearAll:()=>{Y.vars.clear(),Y.vars=new Map,Y.switches.clear(),Y.switches=new Map,Y.items.clear(),Y.items=new Map,Y.stats.clear(),Y.stats=new Map,Y.gold=null,X.setNoclip(!1,!0),X.saveToStorage()},summary:()=>{let e=[];return Y.vars.forEach((t,n)=>e.push({type:`var`,id:n,label:q.vars.name(n),value:t})),Y.switches.forEach((t,n)=>e.push({type:`switch`,id:n,label:q.switches.name(n),value:t})),Y.items.forEach((t,n)=>{let[r,i]=n.split(`:`),a=parseInt(i,10),o=q.inv.data(r,a);e.push({type:`item`,key:n,label:o?o.name:n,value:t})}),Y.gold!==null&&e.push({type:`gold`,id:`gold`,label:`Gold`,value:Y.gold}),Y.stats.forEach((t,n)=>{var r;let[i,a]=n.split(`:`),o=parseInt(i,10),s=((r=J.get(o))==null?void 0:r.name)||`Actor ${o}`,c=`${s} ${a.toUpperCase()}`,l=`stat`;a.startsWith(`param_`)&&(l=`param`,c=`${s} ${[`Max HP`,`Max MP`,`Attack`,`Defense`,`M. Attack`,`M. Defense`,`Agility`,`Luck`][parseInt(a.split(`_`)[1],10)]||a}`),e.push({type:l,key:n,label:c,value:t})}),e}},Z=I({god:!1,ohko:!1,noEncounter:!1,speed:1,speedBoost:2,speedUseKey:!0,speedHeld:!1,messageSkip:!1}),Uc=!1,Wc={install:()=>{if(!Uc&&!(typeof window>`u`)&&!window.__FORGE_CHEATS__){if(window.__FORGE_CHEATS__=!0,window.Game_Action&&window.Game_Action.prototype.executeHpDamage){let e=window.Game_Action.prototype.executeHpDamage;window.Game_Action.prototype.executeHpDamage=function(t,n){Z.god&&t.isActor()&&n>0&&(n=0),Z.ohko&&this.subject().isActor()&&t.isEnemy()&&(n=t.hp),e.call(this,t,n)}}if(window.Game_Battler&&window.Game_Battler.prototype.gainHp){let e=window.Game_Battler.prototype.gainHp;window.Game_Battler.prototype.gainHp=function(t){Z.god&&this.isActor()&&t<0&&(t=0),e.call(this,t)}}if(window.Game_Actor&&window.Game_Actor.prototype.executeFloorDamage){let e=window.Game_Actor.prototype.executeFloorDamage;window.Game_Actor.prototype.executeFloorDamage=function(){Z.god||e.call(this)}}if(window.Game_Player&&window.Game_Player.prototype.encounterProgressValue){let e=window.Game_Player.prototype.encounterProgressValue;window.Game_Player.prototype.encounterProgressValue=function(){return Z.noEncounter?0:e.call(this)}}if(window.SceneManager&&window.SceneManager.updateScene){let e=window.SceneManager.updateScene,t=0,n=e=>{if(e.isCurrentSceneStarted){if(!e.isCurrentSceneStarted())return!1}else if(e._scene&&e._scene.isStarted&&!e._scene.isStarted())return!1;return!(e.isSceneChanging&&e.isSceneChanging()||window.$gamePlayer&&window.$gamePlayer.isTransferring&&window.$gamePlayer.isTransferring()||window.DataManager&&window.DataManager.isMapLoaded&&!window.DataManager.isMapLoaded())};window.SceneManager.updateScene=function(){let r=Z.speedHeld?Z.speedBoost:Z.speed;if(Z.speedUseKey&&!Z.speedHeld&&(r=1),r>=1)if(e.call(this),r>1&&this._scene&&typeof this._scene.update==`function`&&n(this)){t+=r-1;let e=0;for(;t>=1&&e++<64;){--t;try{this._scene.update()}catch(e){t=0;break}}}else t=0;else if(t+=r,t>=1)--t,e.call(this);else if(this._scene){let t=this._scene.update;this._scene.update=function(){};try{e.call(this)}finally{this._scene.update=t}}}}if(window.Window_Message&&window.Window_Message.prototype.updateShowFast){let e=window.Window_Message.prototype.updateShowFast;window.Window_Message.prototype.updateShowFast=function(){e.call(this),Z.messageSkip&&(this._showFast=!0,this._pauseSkip=!0)}}if(window.Window_Message&&window.Window_Message.prototype.updateInput){let e=window.Window_Message.prototype.updateInput;window.Window_Message.prototype.updateInput=function(){let t=e.call(this);return this.pause&&Z.messageSkip?(this.pause=!1,this._textState||this.terminateMessage(),!0):t}}if(window.Window_ScrollText&&window.Window_ScrollText.prototype.scrollSpeed){let e=window.Window_ScrollText.prototype.scrollSpeed;window.Window_ScrollText.prototype.scrollSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t*=100),t}}if(window.Window_BattleLog&&window.Window_BattleLog.prototype.messageSpeed){let e=window.Window_BattleLog.prototype.messageSpeed;window.Window_BattleLog.prototype.messageSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t=1),t}}Uc=!0}},setGod:e=>{Z.god=e},setOhko:e=>{Z.ohko=e},setNoEncounter:e=>{Z.noEncounter=e},setSpeed:e=>{Z.speed=e},setSpeedBoost:e=>{Z.speedBoost=e},setSpeedUseKey:e=>{Z.speedUseKey=e},startSpeedHold:()=>{Z.speedHeld=!0},stopSpeedHold:()=>{Z.speedHeld=!1},setMessageSkip:e=>{Z.messageSkip=e}},Gc={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":19,capslock:20,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,meta:91,rightclick:93,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,"numpad*":106,"numpad+":107,"numpad-":109,"numpad.":110,"numpad/":111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,numlock:144,scrolllock:145,mycomputer:182,mycalculator:183,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},Kc={};for(let e of Object.keys(Gc))Kc[e.toLowerCase()]=Gc[e];var qc={};for(let e of Object.keys(Kc))qc[Kc[e]]=e;var Jc=new Set([17,18,16,91]),Yc=class e{constructor(e,t,n,r,i){S(this,`code`,void 0),S(this,`ctrl`,void 0),S(this,`alt`,void 0),S(this,`shift`,void 0),S(this,`meta`,void 0),this.code=e,this.ctrl=t,this.alt=n,this.shift=r,this.meta=i}static createEmpty(){return new e(256,!1,!1,!1,!1)}static fromKey(t){return new e(t.code,t.ctrl,t.alt,t.shift,t.meta)}static fromString(t){if(!t||t===``)return e.createEmpty();let n=t.toLowerCase().split(` `);if(n.length===0)throw Error(`No keymap found`);let r=null,i=!1,a=!1,o=!1,s=!1;for(let e of n)switch(e=e.trim(),e){case`ctrl`:case`control`:i=!0;break;case`alt`:a=!0;break;case`shift`:o=!0;break;case`meta`:s=!0;break;default:if(r!==null)throw Error(`Cannot combine multiple standard keys`);if(!Object.prototype.hasOwnProperty.call(Kc,e))throw Error(`Unknown key: ${e}`);r=Kc[e]}return r===null&&(r=256),new e(r,i,a,o,s)}static fromEvent(t){return Jc.has(t.keyCode)?e._fromCombiningAloneEvent(t):new e(t.keyCode,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey)}static _fromCombiningAloneEvent(t){return new e(256,t.keyCode===17||t.ctrlKey,t.keyCode===18||t.altKey,t.keyCode===16||t.shiftKey,t.keyCode===91||t.metaKey)}isEmpty(){return this.code===256&&!this.ctrl&&!this.alt&&!this.shift&&!this.meta}isCombiningKey(){return this.code===256&&!this.isEmpty()}equals(e){return this.code===e.code&&this.ctrl===e.ctrl&&this.alt===e.alt&&this.shift===e.shift&&this.meta===e.meta}contains(e){return(!e.ctrl||this.ctrl)&&(!e.alt||this.alt)&&(!e.shift||this.shift)&&(!e.meta||this.meta)&&(e.isCombiningKey()||e.code===this.code)}countPressingKeys(){let e=0;return this.code!==256&&(e+=1),this.ctrl&&(e+=1),this.alt&&(e+=1),this.shift&&(e+=1),this.meta&&(e+=1),e}asStringArray(){if(this.isEmpty())return[];let e=[];return this.ctrl&&e.push(`ctrl`),this.alt&&e.push(`alt`),this.shift&&e.push(`shift`),this.meta&&e.push(`meta`),this.code!==256&&e.push(qc[this.code]||`key_${this.code}`),e}adjustCombiningKey(e){this.ctrl=e.ctrlKey,this.alt=e.altKey,this.shift=e.shiftKey,this.meta=e.metaKey}add(e){if(Jc.has(e)){this._setCombiningKey(e,!0);return}this.code=e}remove(e){if(Jc.has(e)){this._setCombiningKey(e,!1);return}this.code===e&&(this.code=256)}_setCombiningKey(e,t){switch(e){case 17:this.ctrl=t;break;case 18:this.alt=t;break;case 16:this.shift=t;break;case 91:this.meta=t;break}}capitalize(e){return e.length===0?``:e.length===1?e.charAt(0).toUpperCase():e.charAt(0).toUpperCase()+e.slice(1)}asString(){return this.asStringArray().join(` `)}asDisplayString(){return this.asStringArray().map(e=>this.capitalize(e)).join(` + `)}},Q=I({visible:!1,activeTab:Ic.General,targetActorId:null,targetActorStat:null,targetVarId:null,targetSwitchId:null,targetItemKey:null}),$={currentKey:Yc.createEmpty(),shortcuts:[],activeShortcutIds:new Set,init:e=>{let t=localStorage.getItem(`forge:shortcuts`),n={};if(t)try{n=JSON.parse(t)}catch(e){}$.shortcuts=e.map(e=>{let t=n[e.id];return{...e,keyStr:(t==null?void 0:t.keyStr)===void 0?e.keyStr:t.keyStr,enabled:(t==null?void 0:t.enabled)===void 0?e.enabled:t.enabled,params:(t==null?void 0:t.params)||e.params}}),window.addEventListener(`keydown`,$.onKeyDown.bind($),{capture:!0}),window.addEventListener(`keyup`,$.onKeyUp.bind($),{capture:!0})},save:()=>{let e={};$.shortcuts.forEach(t=>{e[t.id]={keyStr:t.keyStr,enabled:t.enabled,params:t.params}}),localStorage.setItem(`forge:shortcuts`,JSON.stringify(e))},get:e=>$.shortcuts.find(t=>t.id===e),update:(e,t)=>{let n=$.get(e);n&&(Object.assign(n,t),$.save())},_isFocusedOnInput:()=>{let e=document.activeElement;for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable)},_hasSelection:()=>{var e;if(!Q.visible)return!1;let t=((e=window.getSelection())==null?void 0:e.toString())||``;if(!t){let e=document.getElementById(`forge-mvmz-host`);e&&e.shadowRoot&&e.shadowRoot.getSelection&&(t=e.shadowRoot.getSelection().toString()||``)}return t.trim().length>0},onKeyDown:e=>{if(!$._isFocusedOnInput()&&!$._hasSelection()){if(e.repeat){let t=!1;for(let e of $.activeShortcutIds){let n=$.get(e);n&&n.onRepeat&&(n.onRepeat(n.params),t=!0)}t&&(e.preventDefault(),e.stopPropagation());return}$.currentKey.add(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e)}},onKeyUp:e=>{$._isFocusedOnInput()||($.currentKey.remove(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e))},processTransitions:e=>{let t=new Set;for(let e of $.shortcuts)if(!(!e.enabled||!e.keyStr))try{let n=Yc.fromString(e.keyStr),r=!1;r=e.combiningKeyAlone?$.currentKey.contains(n):n.equals($.currentKey),r&&t.add(e.id)}catch(t){console.error(`[FORGE] Error parsing keyStr for ${e.id}:`,t)}let n=Array.from($.activeShortcutIds);for(let e of n)if(!t.has(e)){let t=$.get(e);if(t){var r;(r=t.onLeave)==null||r.call(t,t.params)}$.activeShortcutIds.delete(e)}let i=!1;for(let e of t)if(!$.activeShortcutIds.has(e)){let t=$.get(e);if(t){var a;(a=t.onEnter)==null||a.call(t,t.params),$.activeShortcutIds.add(e),i=!0}}i&&e.type===`keydown`&&(e.preventDefault(),e.stopPropagation())}},Xc=I({inactiveOpacity:80,autoOpen:!1,rememberPosition:!0,favorites:{},showLauncher:!0,quickSaveSlot:1}),Zc={load:()=>{try{let e=localStorage.getItem(`forge:config`);if(e){let t=JSON.parse(e);typeof t.inactiveOpacity==`number`&&(Xc.inactiveOpacity=t.inactiveOpacity),typeof t.autoOpen==`boolean`&&(Xc.autoOpen=t.autoOpen),typeof t.rememberPosition==`boolean`&&(Xc.rememberPosition=t.rememberPosition),t.favorites&&typeof t.favorites==`object`&&(Xc.favorites=t.favorites),typeof t.showLauncher==`boolean`&&(Xc.showLauncher=t.showLauncher),typeof t.quickSaveSlot==`number`&&(Xc.quickSaveSlot=t.quickSaveSlot)}}catch(e){}},save:()=>{localStorage.setItem(`forge:config`,JSON.stringify({inactiveOpacity:Xc.inactiveOpacity,autoOpen:Xc.autoOpen,rememberPosition:Xc.rememberPosition,favorites:Xc.favorites,showLauncher:Xc.showLauncher,quickSaveSlot:Xc.quickSaveSlot}))},toggleFavorite:(e,t)=>{Xc.favorites[e]||(Xc.favorites[e]=[]);let n=Xc.favorites[e].indexOf(t);n===-1?Xc.favorites[e].push(t):Xc.favorites[e].splice(n,1),Zc.save()},isFavorite:(e,t)=>{var n;return((n=Xc.favorites[e])==null?void 0:n.includes(t))||!1},resetAll:()=>{confirm(`Are you sure you want to reset all Forge settings, locks, and saved data? This cannot be undone.`)&&(localStorage.clear(),window.location.reload())}},Qc=I({entries:[]}),$c=!1,el=1,tl={install:()=>{if(!$c&&!(typeof window>`u`)&&!window.__FORGE_LOGS__){if(window.__FORGE_LOGS__=!0,window.Game_Message&&window.Game_Message.prototype.add){let e=window.Game_Message.prototype.add;window.Game_Message.prototype.add=function(t){e.call(this,t);let n=``;typeof this.speakerName==`function`&&(n=this.speakerName()||``),tl.addEntry(n,t)}}$c=!0}},addEntry:(e,t)=>{let n=t;if(n=n.replace(/\\\\/g,`\x1B`),n=n.replace(/\\x1b/g,`\x1B`),n=n.replace(/\\V\[(\d+)\]/gi,(e,t)=>window.$gameVariables?String(window.$gameVariables.value(parseInt(t))):``),n=n.replace(/\\N\[(\d+)\]/gi,(e,t)=>{var n;return window.$gameActors&&((n=window.$gameActors.actor(parseInt(t)))==null?void 0:n.name())||``}),n=n.replace(/\\P\[(\d+)\]/gi,(e,t)=>{let n=(window.$gameParty?window.$gameParty.members():[])[parseInt(t)-1];return n?n.name():``}),n=n.replace(/\\G/gi,()=>window.TextManager?window.TextManager.currencyUnit:``),n=n.replace(/\x1bC\[\d+\]/gi,``),n=n.replace(/\x1bI\[\d+\]/gi,``),n=n.replace(/\x1b[\\{\\}\.\|!><\^]/g,``),n=n.replace(/\x1b[A-Z]\[.*?\]/gi,``),n=n.replace(/\x1b/g,``),!e){let t=n.match(/^\\n<([^>]+)>/i);t&&(e=t[1],n=n.replace(/^\\n<([^>]+)>/i,``))}if(n=n.replace(/\n/g,` `),n=n.replace(/\s+/g,` `),n=n.trim(),!n)return;let r=Date.now(),i=Qc.entries[Qc.entries.length-1];i&&i.speaker===e&&r-i.timestamp<100?(i.text+=` ${n}`,i.timestamp=r):Qc.entries.push({id:el++,speaker:e,text:n,timestamp:r})},clear:()=>{Qc.entries=[]}},nl=[{id:`toggle_ui`,name:`Toggle Cheat UI`,desc:`Show/Hide the cheat panel`,keyStr:`Ctrl C`,enabled:!0,required:!0,onEnter:()=>Q.visible=!Q.visible},{id:`toggle_save_recall`,name:`Toggle Save Locations Tab`,desc:`Open/close panel on Bookmarks`,keyStr:`Ctrl M`,enabled:!0,onEnter:()=>{Q.visible=!0,Q.activeTab=Ic.Map}},{id:`quick_save`,name:`Quick Save`,desc:`Quick save to configured slot`,keyStr:`Ctrl S`,enabled:!0,onEnter:()=>q.scene.quickSave(Xc.quickSaveSlot)},{id:`quick_load`,name:`Quick Load`,desc:`Quick load from configured slot`,keyStr:`Ctrl Q`,enabled:!0,onEnter:()=>q.scene.quickLoad(Xc.quickSaveSlot)},{id:`open_save_scene`,name:`Open Save Scene`,desc:`Push or pop Save scene`,keyStr:`Ctrl [`,enabled:!0,onEnter:()=>q.scene.toggleSaveScene()},{id:`open_load_scene`,name:`Open Load Scene`,desc:`Push or pop Load scene`,keyStr:`Ctrl ]`,enabled:!0,onEnter:()=>q.scene.toggleLoadScene()},{id:`goto_title`,name:`Go to Title`,desc:`Return to title screen`,keyStr:`Ctrl T`,enabled:!0,onEnter:()=>q.scene.gotoTitle()},{id:`force_victory`,name:`Force Victory`,desc:`Force battle victory`,keyStr:`Ctrl V`,enabled:!0,onEnter:()=>q.battle.forceVictory()},{id:`force_defeat`,name:`Force Defeat`,desc:`Force battle defeat`,keyStr:`Ctrl D`,enabled:!0,onEnter:()=>q.battle.forceDefeat()},{id:`force_escape`,name:`Force Escape`,desc:`Force battle escape`,keyStr:`Ctrl E`,enabled:!0,onEnter:()=>q.battle.forceEscape()},{id:`toggle_noclip`,name:`Toggle Noclip`,desc:`Walk through walls`,keyStr:`Alt W`,enabled:!0,onEnter:()=>X.setNoclip(!Y.noclip)},{id:`enemy_wound`,name:`Enemies HP to 1`,desc:`Wound all active enemies`,keyStr:`Alt 1`,enabled:!0,onEnter:()=>q.battle.changeAllEnemyHealth(1)},{id:`enemy_recovery`,name:`Recover Enemies`,desc:`Fully recover enemies`,keyStr:`Alt 0`,enabled:!0,onEnter:()=>q.battle.recoverAllEnemy()},{id:`party_wound`,name:`Party HP to 1`,desc:`Wound all party members`,keyStr:`Alt 2`,enabled:!0,onEnter:()=>q.battle.changeAllPartyHealth(1)},{id:`party_recovery`,name:`Recover Party`,desc:`Fully recover party members`,keyStr:`Alt 9`,enabled:!0,onEnter:()=>q.battle.recoverAllParty()},{id:`trigger_encounter`,name:`Trigger Encounter`,desc:`Next step triggers random battle`,keyStr:``,enabled:!0,onEnter:()=>{window.$gamePlayer&&(window.$gamePlayer._encounterCount=0)}},{id:`speed_hold`,name:`Speed Hold Key`,desc:`Hold to fast forward game`,keyStr:`Ctrl`,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.startSpeedHold(),onLeave:()=>Wc.stopSpeedHold()},{id:`skip_message`,name:`Skip Message Key`,desc:`Hold to skip dialogs`,keyStr:``,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.setMessageSkip(!0),onLeave:()=>Wc.setMessageSkip(!1)},{id:`open_dev_tool`,name:`Open Dev Tools`,desc:`Show Nw.js developer tools`,keyStr:`F12`,enabled:!0,onEnter:()=>q.system.openDevTool()}],rl=W(``);function il(e,t){var n=rl();U(`mousedown`,n,function(...e){var n;(n=t.onmousedown)==null||n.apply(this,e)}),G(e,n)}Wa([`mousedown`]);var al=W(``);function ol(e,t){Mt(t,!0);let n=P(0),r=P(0);Ws(()=>{try{let e=JSON.parse(localStorage.getItem(`forge:launcherPos`)||`null`);e?(F(n,e.x,!0),F(r,e.y,!0)):(F(n,(window.innerWidth||800)-56),F(r,(window.innerHeight||600)-56))}catch(e){F(n,100),F(r,100)}});let i=P(!1),a=P(0),o=P(0),s=P(0),c=P(0),l=P(!1),u=e=>{if(!H(i))return;e.stopPropagation(),e.preventDefault();let t=e.clientX-H(a),u=e.clientY-H(o);Math.abs(t)+Math.abs(u)>3&&F(l,!0),F(n,Math.max(4,Math.min(window.innerWidth-46,H(s)+t)),!0),F(r,Math.max(4,Math.min(window.innerHeight-46,H(c)+u)),!0)},d=e=>{H(i)&&(e.stopPropagation(),e.preventDefault()),F(i,!1),window.removeEventListener(`mousemove`,u,!0),window.removeEventListener(`mouseup`,d,!0);try{localStorage.setItem(`forge:launcherPos`,JSON.stringify({x:H(n),y:H(r)}))}catch(e){}setTimeout(()=>{F(l,!1)},0)},f=e=>{e.preventDefault(),F(i,!0),F(l,!1),F(a,e.clientX,!0),F(o,e.clientY,!0),F(s,H(n),!0),F(c,H(r),!0),window.addEventListener(`mousemove`,u,!0),window.addEventListener(`mouseup`,d,!0)},p=()=>{H(l)||(Q.visible=!Q.visible)};var m=eo(),h=_i(m),g=e=>{var t=al();Ac(L(t),{size:20}),D(t),z(()=>{var e,i;return Xo(t,`left: ${(e=H(n))==null?``:e}px; top: ${(i=H(r))==null?``:i}px;`)}),U(`mousedown`,t,e=>{e.stopPropagation(),f(e)}),U(`click`,t,e=>{e.stopPropagation(),p()}),G(e,t)};mo(h,e=>{Xc.showLauncher&&e(g)}),G(e,m),Nt()}Wa([`mousedown`,`click`]);var sl=W(``),cl=W(`Nothing here`),ll=W(` `);function ul(e,t){Mt(t,!0);let n=Hs(t,`items`,19,()=>[]),r=Hs(t,`itemHeight`,3,32),i=Hs(t,`containerHeight`,3,400),a=P(0),o=P(void 0),s=Wn(()=>n().length*r()),c=Wn(()=>Math.floor(H(a)/r())),l=Wn(()=>Math.min(n().length-1,H(c)+Math.ceil(i()/r())+2)),u=Wn(()=>n().slice(H(c),H(l)+1).map((e,t)=>({...e,_index:H(c)+t}))),d=e=>{F(a,e.target.scrollTop,!0)};var f={resetScroll:()=>{H(o)&&(H(o).scrollTop=0)},scrollToBottom:()=>{H(o)&&(H(o).scrollTop=H(o).scrollHeight)},scrollToIndex:e=>{setTimeout(()=>{H(o)&&(F(a,e*r()),H(o).scrollTop=e*r())},100)}},p=ll(),m=L(p),h=L(m);yo(h,21,()=>H(u),e=>e.id,(e,n)=>{var i=sl();Eo(L(i),()=>t.itemTemplate,()=>H(n),()=>H(n)._index),D(i),z(()=>{var e;return Xo(i,`height: ${(e=r())==null?``:e}px;`)}),G(e,i)}),D(h),D(m);var g=R(m,2),_=e=>{G(e,cl())};return mo(g,e=>{n().length===0&&e(_)}),D(p),Ps(p,e=>F(o,e),()=>H(o)),z(()=>{var e;Xo(m,`height: ${(e=H(s))==null?``:e}px;`),Xo(h,`transform: translateY(${H(c)*r()}px);`)}),Ua(`scroll`,p,d),G(e,p),Nt(f)}var dl=W(`- +`);function fl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,0),r=Hs(t,`min`,19,()=>-1/0),i=Hs(t,`max`,3,1/0),a=P(I(String(n())));Mi(()=>{F(a,String(n()),!0)});let o=()=>{var e;let o=parseFloat(H(a));isNaN(o)&&(o=n()),o=Math.max(r(),Math.min(i(),o)),n(o),F(a,String(o),!0),(e=t.onchange)==null||e.call(t,n())},s=(e,o)=>{var s;o.shiftKey&&(e*=10);let c=n()+e;c=Math.max(r(),Math.min(i(),c)),n(c),F(a,String(c),!0),(s=t.onchange)==null||s.call(t,n())},c=e=>{e.stopPropagation(),e.key===`Enter`?(o(),e.target.blur()):e.key===`Escape`&&(F(a,String(n()),!0),e.target.blur())};var l=dl(),u=L(l),d=R(u,2);us(d);var f=R(d,2);D(l),U(`click`,u,e=>s(-1,e)),Ua(`blur`,d,o),U(`keydown`,d,c),Cs(d,()=>H(a),e=>F(a,e)),U(`click`,f,e=>s(1,e)),G(e,l),Nt()}Wa([`click`,`keydown`]);var pl=W(``);function ml(e,t){Mt(t,!0);let n=Hs(t,`locked`,3,!1);var r=pl(),i=L(r),a=e=>{uc(e,{size:14})},o=e=>{cc(e,{size:14})};mo(i,e=>{n()?e(a):e(o,-1)}),D(r),z(()=>{Jo(r,1,`flex h-6 w-6 shrink-0 items-center justify-center rounded transition-colors focus:outline-none ${n()?`bg-frozen/20 text-frozen hover:bg-frozen/30`:`hover:bg-border text-gray-500 hover:text-gray-300`}`),ps(r,`title`,n()?`Unfreeze`:`Freeze`),ps(r,`aria-label`,n()?`Unfreeze state`:`Freeze state`)}),U(`click`,r,()=>{var e;return(e=t.ontoggle)==null?void 0:e.call(t,!n())}),G(e,r),Nt()}Wa([`click`]);var hl=W(`TrueFalse`),gl=W(``),_l=W(` `),vl=W(` `);function yl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetVarId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetVarId);e!==-1&&H(a).scrollToIndex(e),Q.targetVarId=null}});let o,s=P(!1),c=new Set,l=I({}),u=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||t.value!==void 0&&t.value!==null&&String(t.value).toLowerCase().includes(e));c=new Set(t.map(e=>e.id))}},d=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`variables`,e.id),r=Zc.isFavorite(`variables`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},f=()=>{F(n,q.vars.list(),!0),u(),d()},p=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(s)||(F(n,q.vars.list(),!0),d())},1e3);return()=>clearInterval(e)});let h=(e,t)=>{q.vars.set(e,t),Y.vars.has(e)&&X.freezeVar(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)};var g=vl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y);D(y),D(_);var x=R(_,2);Ps(ul(L(x),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{let r=Wn(()=>l[t().id]||typeof t().value);var i=_l(),a=L(i),o=L(a,!0);D(a);var c=R(a,2),u=L(c),f=L(u,!0);D(u),D(c);var p=R(c,2),g=L(p),_=L(g);{let e=Wn(()=>Zc.isFavorite(`variables`,t().id)?`fill-current`:``);bc(_,{size:16,get class(){return H(e)}})}D(g);var v=R(g,2),y=L(v,!0);D(v);var b=R(v,2),x=e=>{{let n=Wn(()=>Number(t().value)||0);fl(e,{get value(){return H(n)},onchange:e=>h(t().id,e)})}},S=e=>{var n=hl(),r=L(n);r.value=r.__value=`true`;var i=R(r);i.value=i.__value=`false`,D(n);var a;Qo(n),z(()=>{a!==(a=t().value?`true`:`false`)&&(n.value=n.__value=t().value?`true`:`false`,Zo(n,t().value?`true`:`false`))}),U(`change`,n,e=>h(t().id,e.currentTarget.value===`true`)),G(e,n)},ee=e=>{var n=gl();us(n),z(e=>ds(n,e),[()=>String(t().value===void 0||t().value===null?``:t().value)]),Ua(`blur`,n,e=>h(t().id,e.currentTarget.value)),U(`keydown`,n,e=>{e.stopPropagation(),e.key===`Enter`&&e.currentTarget.blur()}),G(e,n)};mo(b,e=>{H(r)===`number`?e(x):H(r)===`boolean`?e(S,1):e(ee,-1)});var C=R(b,2),w=L(C);{let e=Wn(()=>Y.vars.has(t().id));ml(w,{get locked(){return H(e)},ontoggle:e=>{X.freezeVar(t().id,e),F(n,[...H(n)],!0),d()}})}D(C),D(p),D(i),z((e,n,a)=>{Jo(i,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(o,n),ps(u,`title`,t().name),K(f,t().name),Jo(g,1,`mr-2 flex items-center justify-center transition-colors ${a==null?``:a}`),K(y,H(r)===`number`?`NUM`:H(r)===`string`?`STR`:`BOOL`)},[()=>Y.vars.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`variables`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,p,()=>F(s,!0)),U(`focusout`,p,()=>F(s,!1)),U(`click`,g,()=>{Zc.toggleFavorite(`variables`,t().id),d()}),U(`click`,v,()=>{(l[t().id]||typeof t().value)===`number`?l[t().id]=`string`:l[t().id]=`number`}),G(e,i)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(x),D(g),z(()=>{var e;ds(v,H(i)),K(b,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,p),G(e,g),Nt()}Wa([`input`,`focusin`,`focusout`,`click`,`change`,`keydown`]);var bl=W(``);function xl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,!1),r=()=>{var e;n(!n()),(e=t.onchange)==null||e.call(t,n())};var i=bl(),a=L(i);D(i),z(()=>{Jo(i,1,`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors ${n()?`bg-ok`:`bg-[#3a3f4d]`}`),Jo(a,1,`absolute top-[4px] h-4 w-4 rounded-full bg-white shadow transition-all ${n()?`left-[24px]`:`left-[4px]`}`)}),U(`click`,i,r),G(e,i),Nt()}Wa([`click`]);var Sl=W(` `),Cl=W(` All ON All OFF `);function wl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetSwitchId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetSwitchId);e!==-1&&H(a).scrollToIndex(e),Q.targetSwitchId=null}});let o,s=P(!1),c=new Set,l=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||(t.value?`true`:`false`).includes(e));c=new Set(t.map(e=>e.id))}},u=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`switches`,e.id),r=Zc.isFavorite(`switches`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},d=()=>{F(n,q.switches.list(),!0),l(),u()},f=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{l(),u()},300)};Ws(()=>{d();let e=setInterval(()=>{H(s)||(F(n,q.switches.list(),!0),u())},1e3);return()=>clearInterval(e)});let p=(e,t)=>{q.switches.set(e,t),Y.switches.has(e)&&X.freezeSwitch(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)},h=e=>{H(r).forEach(t=>p(t.id,e)),d(),zc.show(`All filtered switches turned ${e?`ON`:`OFF`}`,`success`)};var g=Cl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y),x=R(b,2),S=R(x,2),ee=L(S);D(S),D(y),D(_);var C=R(_,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{var r=Sl(),i=L(r),a=L(i,!0);D(i);var o=R(i,2),c=L(o),l=L(c,!0);D(c),D(o);var d=R(o,2),f=L(d),h=L(f);{let e=Wn(()=>Zc.isFavorite(`switches`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(f);var g=R(f,2);xl(g,{get value(){return t().value},onchange:e=>p(t().id,e)});var _=R(g,2),v=L(_);{let e=Wn(()=>Y.switches.has(t().id));ml(v,{get locked(){return H(e)},ontoggle:e=>{X.freezeSwitch(t().id,e),F(n,[...H(n)],!0),u()}})}D(_),D(d),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),Jo(c,1,`truncate text-sm select-text cursor-text ${t().value?`text-white font-bold`:`text-gray-400`}`),K(l,t().name),Jo(f,1,`flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.switches.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`switches`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),Ua(`mouseenter`,d,()=>F(s,!0)),Ua(`mouseleave`,d,()=>F(s,!1)),U(`click`,f,()=>{Zc.toggleFavorite(`switches`,t().id),u()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(g),z(()=>{var e;ds(v,H(i)),K(ee,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,f),U(`click`,b,()=>h(!0)),U(`click`,x,()=>h(!1)),G(e,g),Nt()}Wa([`input`,`click`]);var Tl=W(` `),El=W(` `),Dl=W(`Items Weapons Armors `);function Ol(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetItemKey!==null&&H(a)){let[e,t]=Q.targetItemKey.split(`:`);if(e===H(o)){if(H(r).length>0){let e=H(r).findIndex(e=>e.id===parseInt(t,10));e!==-1&&H(a).scrollToIndex(e),Q.targetItemKey=null}}else p(e)}});let o=P(I(Fc.Item)),s,c=P(!1),l=new Set,u=()=>{if(!H(i).trim())l=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||String(t.count).includes(e)||t.description&&t.description.toLowerCase().includes(e));l=new Set(t.map(e=>e.id))}},d=()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;F(r,H(n).filter(e=>l.has(e.id)).sort((t,n)=>{let r=Zc.isFavorite(e,t.id),i=Zc.isFavorite(e,n.id);return r&&!i?-1:!r&&i?1:t.id-n.id}),!0)},f=()=>{F(n,q.inv.list(H(o)),!0),u(),d()},p=e=>{F(o,e,!0),f(),H(a)&&H(a).resetScroll()},h=e=>{F(i,e.target.value,!0),clearTimeout(s),s=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(c)||(F(n,q.inv.list(H(o)),!0),d())},1e3);return()=>clearInterval(e)});let g=(e,t)=>{q.inv.setCount(H(o),e,t),Y.items.has(`${H(o)}:${e}`)&&X.freezeItem(H(o),e,!0)};var _=Dl(),v=L(_),y=L(v),b=L(y),x=R(b,2),S=R(x,2);D(y);var ee=R(y,2);us(ee),D(v);var C=R(v,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:48,itemTemplate:(e,t=m)=>{var r=El(),i=L(r),a=L(i,!0);D(i);var s=R(i,2),l=L(s),u=L(l,!0);D(l);var f=R(l,2),p=e=>{var n=Tl(),r=L(n,!0);D(n),z((e,t)=>{ps(n,`title`,e),K(r,t)},[()=>t().description.replace(/\n/g,` `),()=>t().description.replace(/\n/g,` `)]),G(e,n)};mo(f,e=>{t().description&&e(p)}),D(s);var h=R(s,2),_=L(h),v=L(_);{let e=Wn(()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`fill-current`:``);bc(v,{size:16,get class(){return H(e)}})}D(_);var y=R(_,2);{let e=Wn(()=>q.inv.maxStack(H(o),t().id));fl(y,{get value(){return t().count},min:0,get max(){return H(e)},onchange:e=>g(t().id,e)})}var b=R(y,2),x=L(b);{let e=Wn(()=>Y.items.has(`${H(o)}:${t().id}`));ml(x,{get locked(){return H(e)},ontoggle:e=>{X.freezeItem(H(o),t().id,e),F(n,[...H(n)],!0),d()}})}D(b),D(h),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),ps(l,`title`,t().name),K(u,t().name),Jo(_,1,`mr-1 flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.items.has(`${H(o)}:${t().id}`)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,h,()=>F(c,!0)),U(`focusout`,h,()=>F(c,!1)),U(`click`,_,()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;Zc.toggleFavorite(e,t().id),d()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(_),z(()=>{Jo(b,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Item?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(x,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Weapon?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(S,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Armor?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),ds(ee,H(i))}),U(`click`,b,()=>p(Fc.Item)),U(`click`,x,()=>p(Fc.Weapon)),U(`click`,S,()=>p(Fc.Armor)),U(`input`,ee,h),G(e,_),Nt()}Wa([`click`,`input`,`focusin`,`focusout`]);var kl=W(``),Al=W(` `),jl=W(` `),Ml=W(` `),Nl=W(`No skills in database.`),Pl=W(`Clear All States`),Fl=W(` ×`),Il=W(`No active states.`),Ll=W(` `),Rl=W(` Recover All Core Status Level EXP HP MP TP Parameters Skills States Select a state to apply... Add State`,1),zl=W(`Start a game or select an actor to edit stats.`),Bl=W(`Actors `);function Vl(e,t){Mt(t,!0);let n=P(I([])),r=P(null),i=P(null),a=P(null),o=P(``),s=P(``);Mi(()=>{Q.targetActorId!==null&&H(n).length>0&&(F(r,Q.targetActorId,!0),Q.targetActorId=null,Q.targetActorStat=null,c())});let c=()=>{F(n,J.list(),!0),H(r)===null&&H(n).length>0&&F(r,H(n)[0].id,!0),H(r)!==null&&F(i,J.get(H(r)),!0)};Ws(()=>{c();let e=setInterval(()=>{c()},1e3);return()=>clearInterval(e)});let l=e=>{F(r,e,!0),F(i,J.get(e),!0)},u=(e,t)=>{H(r)!==null&&(e===`hp`?J.setHp(H(r),t):e===`mp`?J.setMp(H(r),t):e===`tp`&&J.setTp(H(r),t),Y.stats.has(`${H(r)}:${e}`)&&X.freezeStat(H(r),e,!0),F(i,J.get(H(r)),!0))},d=(e,t)=>{H(r)!==null&&(J.setParam(H(r),e,t),F(i,J.get(H(r)),!0))},f=()=>{H(r)===null||!H(i)||(H(i).inParty?J.removeFromParty(H(r)):J.addToParty(H(r)),c())},p=(e,t)=>{H(r)!==null&&(t?J.forgetSkill(H(r),e):J.learnSkill(H(r),e),F(i,J.get(H(r)),!0))},m={[Lc.MHP]:`Max HP`,[Lc.MMP]:`Max MP`,[Lc.ATK]:`Attack`,[Lc.DEF]:`Defense`,[Lc.MAT]:`M. Attack`,[Lc.MDF]:`M. Defense`,[Lc.AGI]:`Agility`,[Lc.LUK]:`Luck`};var h=Bl(),g=L(h),_=R(L(g),2);yo(_,21,()=>H(n),ho,(e,t)=>{var n=Al(),i=L(n),a=L(i),o=e=>{G(e,kl())};mo(a,e=>{H(t).inParty&&e(o)});var s=R(a,2),c=L(s,!0);D(s),D(i);var u=R(i,2),d=L(u);D(u),D(n),z(()=>{var e;ps(n,`id`,`actor-btn-${H(t).id}`),Jo(n,1,`flex w-full items-center justify-between rounded px-2.5 py-2 text-left text-sm transition-colors ${H(r)===H(t).id?`bg-accent text-white font-semibold`:`hover:bg-border/50 text-gray-300`}`),K(c,H(t).name),K(d,`Lv.${(e=H(t).level)==null?``:e}`)}),U(`click`,n,()=>l(H(t).id)),G(e,n)}),D(_),D(g);var v=R(g,2),y=L(v),b=e=>{var t,n=Rl(),l=_i(n),h=L(l),g=L(h),_=L(g,!0);D(g);var v=R(g,2),y=L(v);D(v),D(h);var b=R(h,2),x=L(b),S=R(x,2),ee=L(S,!0);D(S),D(b),D(l);var C=R(l,2),w=L(C),te=R(L(w),2),ne=R(L(te),2),re=L(ne);fl(re,{get value(){return H(i).level},min:1,max:99,onchange:e=>{H(r)!==null&&(J.setLevel(H(r),e),Y.stats.has(`${H(r)}:level`)&&X.freezeStat(H(r),`level`,!0),F(i,J.get(H(r)),!0),c())}});var ie=R(re,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:level`));ml(ie,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`level`,e),F(i,J.get(H(r)),!0))}})}D(ne),D(te);var ae=R(te,2),oe=R(L(ae),2),se=L(oe);fl(se,{get value(){return H(i).exp},min:0,onchange:e=>{H(r)!==null&&(J.setExp(H(r),e),Y.stats.has(`${H(r)}:exp`)&&X.freezeStat(H(r),`exp`,!0),F(i,J.get(H(r)),!0),c())}});var ce=R(se,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:exp`));ml(ce,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`exp`,e),F(i,J.get(H(r)),!0))}})}D(oe),D(ae);var le=R(ae,2),ue=R(L(le),2),de=L(ue);fl(de,{get value(){return H(i).hp},min:0,get max(){return H(i).mhp},onchange:e=>u(`hp`,e)});var fe=R(de,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:hp`));ml(fe,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`hp`,e),F(i,J.get(H(r)),!0))}})}D(ue),D(le);var pe=R(le,2),me=R(L(pe),2),he=L(me);fl(he,{get value(){return H(i).mp},min:0,get max(){return H(i).mmp},onchange:e=>u(`mp`,e)});var ge=R(he,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:mp`));ml(ge,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`mp`,e),F(i,J.get(H(r)),!0))}})}D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve);fl(ye,{get value(){return H(i).tp},min:0,get max(){return H(i).mtp},onchange:e=>u(`tp`,e)});var be=R(ye,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:tp`));ml(be,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`tp`,e),F(i,J.get(H(r)),!0))}})}D(ve),D(_e),D(w);var xe=R(w,2);yo(R(L(xe),2),17,()=>H(i).params,e=>e.id,(e,t)=>{var n=jl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2),c=L(s);fl(c,{get value(){return H(t).value},min:1,onchange:e=>{d(H(t).id,e),Y.stats.has(`${H(r)}:param_${H(t).id}`)&&X.freezeStat(H(r),`param_${H(t).id}`,!0)}});var l=R(c,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:param_${H(t).id}`));ml(l,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`param_${H(t).id}`,e),F(i,J.get(H(r)),!0))}})}D(s),D(n),z(()=>{ps(n,`id`,`stat-param_${H(t).id}`),K(o,m[H(t).id]||`Stat`)}),G(e,n)}),D(xe),D(C);var Se=R(C,2),Ce=L(Se),we=R(L(Ce),2);us(we),D(Ce);var Te=R(Ce,2);yo(Te,21,()=>H(i).skills.filter(e=>!H(o).trim()||e.name.toLowerCase().includes(H(o).trim().toLowerCase())||e.id.toString().includes(H(o).trim())),e=>e.id,(e,t)=>{var n=Ml(),r=L(n),i=L(r);D(r);var a=R(r,2),o=L(a,!0);D(a),D(n),z(e=>{var n;K(i,`${e==null?``:e}: ${(n=H(t).name)==null?``:n}`),Jo(a,1,`rounded border px-3 py-1 text-xs font-semibold transition-colors ${H(t).learned?`border-danger/30 text-danger bg-danger/10 hover:bg-danger/20`:`border-accent/30 text-accent bg-accent/10 hover:bg-accent/20`}`),K(o,H(t).learned?`Forget`:`Learn`)},[()=>H(t).id.toString().padStart(3,`0`)]),U(`click`,a,()=>p(H(t).id,H(t).learned)),G(e,n)},e=>{G(e,Nl())}),D(Te),D(Se);var Ee=R(Se,2),De=L(Ee),Oe=R(L(De),2),ke=L(Oe);us(ke);var Ae=R(ke,2),je=e=>{var t=Pl();U(`click`,t,()=>{H(r)!==null&&(J.clearStates(H(r)),F(i,J.get(H(r)),!0))}),G(e,t)};mo(Ae,e=>{H(i).states.length>0&&e(je)}),D(Oe),D(De);var Me=R(De,2);yo(Me,21,()=>H(i).states,ho,(e,t)=>{var n=Fl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2);D(n),z(()=>K(o,H(t).name)),U(`click`,s,()=>{H(r)!==null&&(J.removeState(H(r),H(t).id),F(i,J.get(H(r)),!0))}),G(e,n)},e=>{G(e,Il())}),D(Me);var Ne=R(Me,2),Pe=L(Ne),Fe=L(Pe);Fe.value=(t=Fe.__value=null)!=null&&t!==void 0?t:``,yo(R(Fe),17,()=>J.listStates().filter(e=>!H(s).trim()||e.name.toLowerCase().includes(H(s).trim().toLowerCase())||e.id.toString().includes(H(s).trim())),ho,(e,t)=>{var n=Ll(),r=L(n);D(n);var i={};z(e=>{var a;if(K(r,`${e==null?``:e}: ${(a=H(t).name)==null?``:a}`),i!==(i=H(t).id)){var o;n.value=(o=n.__value=H(t).id)==null?``:o}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,n)}),D(Pe);var Ie=R(Pe,2);D(Ne),D(Ee),z(()=>{var e;K(_,H(i).name),K(y,`Actor ID: ${(e=H(i).id)==null?``:e}`),Jo(S,1,`rounded border px-3 py-1.5 text-xs font-semibold transition-colors ${H(i).inParty?`border-danger/30 bg-danger/20 text-danger hover:bg-danger/30`:`border-ok/30 bg-ok/20 text-ok hover:bg-ok/30`}`),K(ee,H(i).inParty?`Remove Party`:`Add Party`),Ie.disabled=H(a)===null}),U(`click`,x,()=>{H(r)!==null&&(J.recover(H(r)),F(i,J.get(H(r)),!0))}),U(`click`,S,f),Cs(we,()=>H(o),e=>F(o,e)),Cs(ke,()=>H(s),e=>F(s,e)),$o(Pe,()=>H(a),e=>F(a,e)),U(`click`,Ie,()=>{H(r)!==null&&H(a)!==null&&(J.addState(H(r),H(a)),F(i,J.get(H(r)),!0),F(a,null))}),G(e,n)},x=e=>{G(e,zl())};mo(y,e=>{H(i)?e(b):e(x,-1)}),D(v),D(h),G(e,h),Nt()}Wa([`click`]);function Hl(e){let t=e-1;return t*t*t+1}function Ul(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Hl}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=Wl(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function Wl(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var Gl=W(` `),Kl=W(` `),ql=W(` `),Jl=W(`Configure the hold key in the Keys panel.`),Yl=W(`Warning: Game is permanently sped up. Turn this back on to require holding a key.`),Xl=W(` `),Zl=W(` `),Ql=W(`Active Enemies `),$l=W(`LEAD`),eu=W(`⋮⋮ `),tu=W(`No active party members found (start/load a game).`),nu=W(`Quick Actions Party Resources Gold Steps Playtime Battle Settings God Mode One-Hit Kill Disable Encounters Movement Noclip (Walk Through Walls) Move Speed Game Speed Hold Key to Fast Forward Speed Multiplier Party Members Status `);function ru(e,t){Mt(t,!0);let n=P(0),r=P(0),i=P(0),a=P(4),o=P(!1),s=P(I([])),c=P(I([])),l=[{title:`System & Menus`,actions:[`quick_save`,`quick_load`,`open_save_scene`,`open_load_scene`,`goto_title`]},{title:`Battle Actions`,actions:[`force_victory`,`force_defeat`,`force_escape`,`trigger_encounter`]},{title:`Health Controls`,actions:[`party_recovery`,`party_wound`,`enemy_recovery`,`enemy_wound`]}],u=()=>{F(n,q.gold.get(),!0),F(r,q.party.steps(),!0),F(i,q.party.playtime(),!0),window.$gamePlayer&&F(a,window.$gamePlayer._moveSpeed||4,!0),F(o,!!(window.SceneManager&&window.SceneManager._scene&&window.SceneManager._scene.constructor.name===`Scene_Battle`)),H(o)&&window.$gameTroop?F(s,window.$gameTroop.members().map(e=>({ref:e,name:e.name(),hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(s,[],!0),window.$gameParty?F(c,window.$gameParty.members().map(e=>({ref:e,id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1,hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(c,[],!0)};Ws(()=>{u();let e=setInterval(u,1e3);return()=>clearInterval(e)});let d=e=>{q.gold.set(e),Y.gold!==null&&X.freezeGold(!0),F(n,q.gold.get(),!0)},f=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`},p=(e,t)=>{e.ref.setHp(t),u()},m=(e,t)=>{e.ref.setMp(t),u()},h=(e,t)=>{e.ref.setTp?e.ref.setTp(t):e.ref.tp=t,u()},g=P(null),_=(e,t)=>{e!==t&&window.$gameParty&&typeof window.$gameParty.swapOrder==`function`&&(window.$gameParty.swapOrder(e,t),u())};var v=nu(),y=L(v),b=R(L(y),2);yo(b,21,()=>l,ho,(e,t)=>{var n=ql(),r=L(n),i=L(r,!0);D(r);var a=R(r,2);yo(a,21,()=>H(t).actions,ho,(e,t)=>{let n=Wn(()=>nl.find(e=>e.id===H(t)));var r=eo(),i=_i(r),a=e=>{var t=Kl(),r=L(t),i=L(r,!0);D(r);var a=R(r,2),o=e=>{var t=Gl(),r=L(t,!0);D(t),z(e=>K(r,e),[()=>{var e;return Yc.fromString(((e=$.get(H(n).id))==null?void 0:e.keyStr)||``).asDisplayString()}]),G(e,t)},s=Wn(()=>{var e;return(e=$.get(H(n).id))==null?void 0:e.keyStr});mo(a,e=>{H(s)&&e(o)}),D(t),z(()=>K(i,H(n).name)),U(`click`,t,()=>{var e,t;(e=(t=H(n)).onEnter)==null||e.call(t),u()}),G(e,t)};mo(i,e=>{H(n)&&e(a)}),G(e,r)}),D(a),D(n),z(()=>K(i,H(t).title)),G(e,n)}),D(b),D(y);var x=R(y,2),S=L(x),ee=R(L(S),2),C=R(L(ee),2),w=L(C);fl(w,{get value(){return H(n)},min:0,max:99999999,onchange:d});var te=R(w,2);{let e=Wn(()=>Y.gold!==null);ml(te,{get locked(){return H(e)},ontoggle:e=>{X.freezeGold(e),u()}})}D(C),D(ee);var ne=R(ee,2),re=R(L(ne),2),ie=L(re,!0);D(re),D(ne);var ae=R(ne,2),oe=R(L(ae),2),se=L(oe,!0);D(oe),D(ae),D(S);var ce=R(S,2),le=R(L(ce),2),ue=L(le);xl(R(L(ue),2),{get value(){return Z.god},onchange:e=>Wc.setGod(e)}),D(ue);var de=R(ue,2);xl(R(L(de),2),{get value(){return Z.ohko},onchange:e=>Wc.setOhko(e)}),D(de);var fe=R(de,2);xl(R(L(fe),2),{get value(){return Z.noEncounter},onchange:e=>Wc.setNoEncounter(e)}),D(fe),D(le),D(ce),D(x);var pe=R(x,2),me=R(L(pe),2),he=L(me);xl(R(L(he),2),{get value(){return Y.noclip},onchange:e=>X.setNoclip(e)}),D(he);var ge=R(he,2);fl(R(L(ge),2),{get value(){return H(a)},min:1,max:8,onchange:e=>q.map.speed(e)}),D(ge),D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve),be=L(ye);xl(R(L(be),2),{get value(){return Z.speedUseKey},onchange:e=>{Wc.setSpeedUseKey(e),e?Wc.setSpeed(1):Wc.setSpeed(Z.speedBoost)}}),D(be);var xe=R(be,2),Se=e=>{G(e,Jl())},Ce=e=>{G(e,Yl())};mo(xe,e=>{Z.speedUseKey?e(Se):e(Ce,-1)}),D(ye);var we=R(ye,2),Te=R(L(we),2);yo(Te,20,()=>[.5,1,2,3,5,8],ho,(e,t)=>{var n=Xl(),r=L(n);D(n),z(()=>{Jo(n,1,`border-border h-7 w-9 rounded border text-xs transition-colors ${Z.speedBoost===t?`border-accent bg-accent text-white font-semibold`:`bg-bg hover:bg-border/50 text-gray-300`}`),K(r,`${t==null?``:t}x`)}),U(`click`,n,()=>{Wc.setSpeedBoost(t),Z.speedUseKey||Wc.setSpeed(t)}),G(e,n)}),D(Te),D(we),D(ve),D(_e);var Ee=R(_e,2),De=e=>{var t=Ql(),n=R(L(t),2);yo(n,21,()=>H(s),ho,(e,t)=>{var n=Zl(),r=L(n),i=L(r),a=L(i,!0);D(i),D(r);var o=R(r,2),s=L(o),c=L(s),l=L(c);D(c),fl(R(c,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(s);var u=R(s,2),d=L(u),f=L(d);D(d),fl(R(d,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(u);var g=R(u,2),_=L(g),v=L(_);D(_),fl(R(_,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(g),D(o),D(n),z(()=>{var e,n,r,i,o;K(a,H(t).name),K(l,`HP (${(e=H(t).hp)==null?``:e}/${(n=H(t).mhp)==null?``:n})`),K(f,`MP (${(r=H(t).mp)==null?``:r}/${(i=H(t).mmp)==null?``:i})`),K(v,`TP (${(o=H(t).tp)==null?``:o})`)}),G(e,n)}),D(n),D(t),G(e,t)};mo(Ee,e=>{H(o)&&H(s).length>0&&e(De)});var Oe=R(Ee,2),ke=R(L(Oe),2);yo(ke,31,()=>H(c),e=>e.id,(e,t,n)=>{var r=eu(),i=L(r),a=L(i),o=L(a),s=R(L(o),2),c=L(s),l=R(c),u=e=>{G(e,$l())};mo(l,e=>{H(n)===0&&e(u)}),D(s),D(o);var d=R(o,2),f=L(d);D(d),D(a);var v=R(a,2),y=L(v),b=L(y),x=L(b);D(b),fl(R(b,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(y);var S=R(y,2),ee=L(S),C=L(ee);D(ee),fl(R(ee,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(S);var w=R(S,2),te=L(w),ne=L(te);D(te),fl(R(te,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(w),D(v),D(i),D(r),z(()=>{var e,o,s,l,u,d,p;Jo(r,1,`rounded p-2.5 transition-all duration-200 ${H(g)===H(n)?`border border-dashed border-accent/50 bg-accent/5`:`border border-border bg-bg`}`),Jo(i,1,`space-y-2 ${H(g)===H(n)?`invisible`:``}`),Jo(a,1,`flex w-full items-center justify-between pb-2 text-xs font-bold text-white ${H(g)===null?`cursor-grab active:cursor-grabbing`:``}`),K(c,`${(e=H(t).name)==null?``:e} `),K(f,`Lv.${(o=H(t).level)==null?``:o}`),K(x,`HP (${(s=H(t).hp)==null?``:s}/${(l=H(t).mhp)==null?``:l})`),K(C,`MP (${(u=H(t).mp)==null?``:u}/${(d=H(t).mmp)==null?``:d})`),K(ne,`TP (${(p=H(t).tp)==null?``:p})`)}),Ua(`dragenter`,r,e=>e.preventDefault()),Ua(`dragover`,r,e=>{if(e.preventDefault(),H(g)!==null&&H(g)!==H(n)){let t=e.currentTarget.getBoundingClientRect(),r=t.top+t.height/2;if(H(g)H(n)&&e.clientY>r)return;_(H(g),H(n)),F(g,H(n),!0)}}),Ua(`dragstart`,a,e=>{if(e.dataTransfer){e.dataTransfer.effectAllowed=`move`;let t=e.currentTarget.closest(`[role="listitem"]`);t&&e.dataTransfer.setDragImage(t,20,20)}setTimeout(()=>{F(g,H(n),!0)},0)}),Ua(`dragend`,a,()=>{F(g,null)}),Io(r,()=>Ul,()=>({duration:250})),G(e,r)},e=>{G(e,tu())}),D(ke),D(Oe),D(v),z(e=>{K(ie,H(r)),K(se,e)},[()=>f(H(i))]),Ua(`dragenter`,Oe,e=>e.preventDefault()),Ua(`dragover`,Oe,e=>e.preventDefault()),Ua(`dragenter`,ke,e=>e.preventDefault()),Ua(`dragover`,ke,e=>e.preventDefault()),G(e,v),Nt()}Wa([`click`]);var iu=W(` `),au=W(`No saved locations yet.`),ou=W(` Teleport `),su=W(`Teleport Target Map Point of Interest (POI) -- Select a POI -- X Y Teleport Now Saved Locations Save Current `);function cu(e,t){Mt(t,!0);let n=P(I({mapId:0,x:0,y:0,dir:0})),r=P(I([])),i=P(0),a=P(0),o=P(0),s=P(I([])),c=P(``),l=P(``),u=P(``);Mi(()=>{H(o)>0&&q.map.loadMapEvents(H(o)).then(e=>{F(s,e,!0),e.find(e=>e.id.toString()===H(c))||F(c,``)})});let d=P(I([])),f=P(``),p=()=>{let e=q.map.current();e&&(F(n,e,!0),F(o,H(o)||e.mapId,!0),F(i,e.x,!0),F(a,e.y,!0)),F(r,q.map.list(),!0);try{let e=localStorage.getItem(`forge:locations`);e&&F(d,JSON.parse(e),!0)}catch(e){}};Ws(()=>{p();let e=setInterval(()=>{let e=q.map.current();e&&(e.mapId!==H(n).mapId||e.x!==H(n).x||e.y!==H(n).y)&&F(n,e,!0)},1e3);return()=>clearInterval(e)});let m=()=>{q.map.teleport(H(o),H(i),H(a),0,0)},h=()=>{let e=q.map.current();if(!e)return;let t=H(r).find(t=>t.id===e.mapId);F(d,[...H(d),{id:Date.now().toString(),name:H(f)||`Saved Location`,mapId:e.mapId,mapName:t?t.name:`Map ${e.mapId}`,x:e.x,y:e.y}],!0),F(f,``),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},g=e=>{F(d,H(d).filter(t=>t.id!==e),!0),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},_=e=>{q.map.teleport(e.mapId,e.x,e.y,0,0)};var v=su(),y=L(v),b=R(L(y),2),x=L(b);D(b);var S=R(b,2),ee=L(S),C=L(ee),w=R(L(C),2);us(w),D(C);var te=R(C,2);yo(te,21,()=>H(r).filter(e=>!H(l).trim()||e.name.toLowerCase().includes(H(l).trim().toLowerCase())||e.id.toString().includes(H(l).trim())),ho,(e,t)=>{var r=iu(),i=L(r);D(r);var a={};z(e=>{var o;if(K(i,`${H(t).id===H(n).mapId?`[CURRENT] `:``}${e==null?``:e}: ${(o=H(t).name)==null?``:o}`),a!==(a=H(t).id)){var s;r.value=(s=r.__value=H(t).id)==null?``:s}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,r)}),D(te),D(ee);var ne=R(ee,2),re=L(ne),ie=R(L(re),2);us(ie),D(re);var ae=R(re,2),oe=L(ae);oe.value=oe.__value=``,yo(R(oe),17,()=>H(s).filter(e=>!H(u).trim()||e.name.toLowerCase().includes(H(u).trim().toLowerCase())||e.id.toString().includes(H(u).trim())),ho,(e,t)=>{var n=iu(),r=L(n);D(n);var i={};z(()=>{var e,a,o;if(K(r,`${(e=H(t).name)==null?``:e} (X:${(a=H(t).x)==null?``:a}, Y:${(o=H(t).y)==null?``:o})`),i!==(i=H(t).id)){var s;n.value=(s=n.__value=H(t).id)==null?``:s}}),G(e,n)}),D(ae),D(ne);var se=R(ne,2),ce=L(se),le=R(L(ce),2);us(le),D(ce);var ue=R(ce,2),de=R(L(ue),2);us(de),D(ue),D(se);var fe=R(se,2);D(S),D(y);var pe=R(y,2),me=R(L(pe),2),he=L(me);us(he);var ge=R(he,2);D(me);var _e=R(me,2),ve=L(_e),ye=e=>{G(e,au())},be=e=>{var t=eo();yo(_i(t),17,()=>H(d),e=>e.id,(e,t)=>{var n=ou(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o);D(o),D(r);var c=R(r,2),l=L(c),u=R(l,2);Ec(L(u),{size:14}),D(u),D(c),D(n),z(()=>{var e,n,r,i;K(a,H(t).name),K(s,`${(e=H(t).mapName)==null?``:e} (Map ${(n=H(t).mapId)==null?``:n}) • X:${(r=H(t).x)==null?``:r} Y:${(i=H(t).y)==null?``:i}`)}),U(`click`,l,()=>_(H(t))),U(`click`,u,()=>g(H(t).id)),G(e,n)}),G(e,t)};mo(ve,e=>{H(d).length===0?e(ye):e(be,-1)}),D(_e),D(pe),D(v),z(()=>{var e,t,r;return K(x,`Current: Map ${(e=H(n).mapId)==null?``:e} (${(t=H(n).x)==null?``:t}, ${(r=H(n).y)==null?``:r})`)}),Cs(w,()=>H(l),e=>F(l,e)),$o(te,()=>H(o),e=>F(o,e)),Cs(ie,()=>H(u),e=>F(u,e)),U(`change`,ae,e=>{let t=parseInt(e.target.value);if(isNaN(t))return;let n=H(s).find(e=>e.id===t);n&&(F(i,n.x,!0),F(a,n.y,!0))}),$o(ae,()=>H(c),e=>F(c,e)),Cs(le,()=>H(i),e=>F(i,e)),Cs(de,()=>H(a),e=>F(a,e)),U(`click`,fe,m),U(`keydown`,he,e=>{e.stopPropagation(),e.key===`Enter`&&h()}),Cs(he,()=>H(f),e=>F(f,e)),U(`click`,ge,h),G(e,v),Nt()}Wa([`change`,`click`,`keydown`]);var lu=W(`Confirm? Cancel`,1),uu=W(`Run`),du=W(` `),fu=W(` `);function pu(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(null),o,s=()=>{let e=H(n);if(H(i).trim()){let t=H(i).trim().toLowerCase();e=H(n).filter(e=>String(e.id)===t||e.name.toLowerCase().includes(t))}F(r,e.sort((e,t)=>{let n=Zc.isFavorite(`commonEvents`,e.id),r=Zc.isFavorite(`commonEvents`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},c=()=>{F(n,q.commonev.list(),!0),s()},l=e=>{F(i,e.target.value,!0),s()};Ws(()=>{c()});let u=e=>{H(a)===e?(q.commonev.run(e),F(a,null),clearTimeout(o)):(F(a,e,!0),clearTimeout(o),o=setTimeout(()=>{H(a)===e&&F(a,null)},3e3))},d=()=>{F(a,null),clearTimeout(o)};var f=fu(),p=L(f),h=L(p);us(h);var g=R(h,2),_=L(g);D(g),D(p);var v=R(p,2);ul(L(v),{get items(){return H(r)},itemHeight:38,itemTemplate:(e,t=m)=>{var n=du(),r=L(n),i=L(r),o=L(i,!0);D(i);var c=R(i,2),l=L(c,!0);D(c),D(r);var f=R(r,2),p=L(f),h=L(p);{let e=Wn(()=>Zc.isFavorite(`commonEvents`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(p);var g=R(p,2),_=L(g),v=e=>{var n=lu(),r=_i(n),i=R(r,2);U(`click`,r,()=>u(t().id)),U(`click`,i,d),G(e,n)},y=e=>{var n=uu();U(`click`,n,()=>u(t().id)),G(e,n)};mo(_,e=>{H(a)===t().id?e(v):e(y,-1)}),D(g),D(f),D(n),z((e,n)=>{K(o,e),ps(c,`title`,t().name),K(l,t().name),Jo(p,1,`mr-2 flex items-center justify-center transition-colors ${n==null?``:n}`)},[()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`commonEvents`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`click`,p,()=>{Zc.toggleFavorite(`commonEvents`,t().id),s()}),G(e,n)},$$slots:{itemTemplate:!0}}),D(v),D(f),z(()=>{var e;ds(h,H(i)),K(_,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,h,l),G(e,f),Nt()}Wa([`input`,`click`]);var mu=W(`Unfreeze All`),hu=W(` Unfreeze`),gu=W(`No active data locks. Use the lock icon on variables, switches, items, or stats to freeze their value.`),_u=W(` `);function vu(e,t){Mt(t,!0);let n=P(I([])),r=()=>{F(n,X.summary(),!0)};Ws(()=>{r();let e=setInterval(r,1e3);return()=>clearInterval(e)});let i=e=>{if(e.type===`var`)X.freezeVar(e.id,!1);else if(e.type===`switch`)X.freezeSwitch(e.id,!1);else if(e.type===`item`){let[t,n]=e.key.split(`:`);X.freezeItem(t,parseInt(n,10),!1)}else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);X.freezeStat(parseInt(t,10),n,!1)}else e.type===`gold`&&X.freezeGold(!1);r()},a=e=>{if(e.type===`var`)Q.targetVarId=e.id,Q.activeTab=Ic.Vars;else if(e.type===`switch`)Q.targetSwitchId=e.id,Q.activeTab=Ic.Switches;else if(e.type===`item`)Q.targetItemKey=e.key,Q.activeTab=Ic.Inv;else if(e.type===`gold`)Q.activeTab=Ic.General;else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);Q.targetActorId=parseInt(t,10),Q.targetActorStat=n,Q.activeTab=Ic.Actors}},o=()=>{X.clearAll(),r()},s=e=>e===`var`?`VAR`:e===`switch`?`SW`:e===`item`?`ITEM`:e===`stat`?`STAT`:e===`param`?`PARAM`:e===`gold`?`GOLD`:`LOCK`,c=e=>e===`var`?`border-accent/30 bg-accent/10 text-accent`:e===`switch`?`border-ok/30 bg-ok/10 text-ok`:e===`item`?`border-warn/30 bg-warn/10 text-warn`:e===`stat`?`border-danger/30 bg-danger/10 text-danger`:e===`param`?`border-fuchsia-500/30 bg-fuchsia-500/10 text-fuchsia-500`:e===`gold`?`border-yellow-500/30 bg-yellow-500/10 text-yellow-500`:`border-gray-500/30 bg-gray-500/10 text-gray-400`;var l=_u(),u=L(l),d=L(u),f=L(d);D(d);var p=R(d,2),m=e=>{var t=mu();U(`click`,t,o),G(e,t)};mo(p,e=>{H(n).length>0&&e(m)}),D(u);var h=R(u,2);yo(h,21,()=>H(n),ho,(e,t)=>{var n=hu(),r=L(n),o=L(r),l=L(o,!0);D(o);var u=R(o,2),d=L(u,!0);D(u),D(r);var f=R(r,2),p=L(f),m=L(p,!0);D(p);var h=R(p,2);D(f),D(n),z((e,n)=>{Jo(o,1,`rounded border px-1.5 py-0.5 text-[10px] font-bold font-mono tracking-wide ${e==null?``:e}`),K(l,n),ps(u,`title`,H(t).label),K(d,H(t).label),K(m,typeof H(t).value==`boolean`?H(t).value?`ON`:`OFF`:H(t).value)},[()=>c(H(t).type),()=>s(H(t).type)]),U(`keydown`,n,e=>e.key===`Enter`&&a(H(t))),U(`click`,n,()=>a(H(t))),U(`click`,h,e=>{e.stopPropagation(),i(H(t))}),G(e,n)},e=>{G(e,gu())}),D(h),D(l),z(()=>{var e;return K(f,`${(e=H(n).length)==null?``:e} active locks`)}),G(e,l),Nt()}Wa([`click`,`keydown`]);var yu=W(`Press a key...`),bu=W(` `),xu=W(``),Su=W(` `);function Cu(e,t){Mt(t,!0);let n=Hs(t,`value`,15,``),r=Hs(t,`required`,3,!1),i=Hs(t,`combiningKeyAlone`,3,!1),a=P(!1),o=()=>{F(a,!0);let e=e=>{var a;e.preventDefault(),e.stopPropagation();let o=Yc.fromEvent(e);o.isCombiningKey()&&!i()||(n(o.asString()),(a=t.onchange)==null||a.call(t,n()),r())},r=()=>{F(a,!1),window.removeEventListener(`keydown`,e,{capture:!0})};window.addEventListener(`keydown`,e,{capture:!0}),setTimeout(()=>{window.addEventListener(`click`,r,{capture:!0,once:!0})},100)},s=e=>{if(!e)return`None`;try{return Yc.fromString(e).asDisplayString()}catch(t){return e}};var c=Su(),l=L(c),u=e=>{G(e,yu())},d=e=>{var t=bu(),r=L(t,!0);D(t),z(e=>{Jo(t,1,`border-border bg-bg2 hover:bg-border/50 flex h-8 flex-1 items-center rounded border px-3 text-sm font-medium transition-colors ${n()?`text-white`:`text-gray-500`}`),K(r,e)},[()=>s(n())]),U(`click`,t,o),G(e,t)};mo(l,e=>{H(a)?e(u):e(d,-1)});var f=R(l,2),p=e=>{var r=xu();Mc(L(r),{size:14}),D(r),U(`click`,r,()=>{var e;n(``),(e=t.onchange)==null||e.call(t,n())}),G(e,r)};mo(f,e=>{!r()&&n()&&!H(a)&&e(p)}),D(c),G(e,c),Nt()}Wa([`click`]);var wu=W(` `),Tu=W(` Restore Defaults `);function Eu(e,t){Mt(t,!0);let n=P(I([])),r=P(``),i=P(I([])),a=()=>{if(!H(r).trim())F(i,H(n),!0);else{let e=H(r).trim().toLowerCase();F(i,H(n).filter(t=>t.name.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)||t.keyStr.toLowerCase().includes(e)),!0)}},o=()=>{F(n,$.shortcuts.map(e=>({...e})),!0),a()};Ws(()=>{o()});let s=e=>{F(r,e.target.value,!0),a()},c=(e,t)=>{$.update(e,{keyStr:t}),o()},l=(e,t)=>{$.update(e,{enabled:t}),o()},u=()=>{localStorage.removeItem(`forge:shortcuts`),zc.show(`Defaults restored. Please reload the game.`,`success`)};var d=Tu(),f=L(d),p=L(f);us(p);var m=R(p,2);D(f);var h=R(f,2);yo(h,21,()=>H(i),e=>e.id,(e,t)=>{var n=wu(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o,!0);D(o),D(r);var u=R(r,2),d=L(u);{let e=Wn(()=>H(t).id===`speed_hold`||H(t).id===`skip_message`);Cu(d,{get value(){return H(t).keyStr},get required(){return H(t).required},get combiningKeyAlone(){return H(e)},onchange:e=>c(H(t).id,e)})}D(u);var f=R(u,2);xl(L(f),{get value(){return H(t).enabled},onchange:e=>l(H(t).id,e)}),D(f),D(n),z(()=>{Jo(i,1,`font-semibold text-sm ${H(t).enabled?`text-white`:`text-gray-500`}`),K(a,H(t).name),K(s,H(t).desc)}),G(e,n)}),D(h),D(d),z(()=>ds(p,H(r))),U(`input`,p,s),U(`click`,m,u),G(e,d),Nt()}Wa([`input`,`click`]),yt();var Du=Ls(()=>Xc),Ou=W(`UI Preferences Inactive Opacity Controls how transparent the panel becomes when the mouse leaves. Remember Window Position Save the exact window dimensions and position between game boots. Auto-Open on Boot Automatically display the Forge panel when the game finishes loading. Show Launcher Icon Display a draggable icon to open the panel without a shortcut. Gameplay Quick Save / Load Slot The save file slot used by the Quick Save and Quick Load shortcuts. Data Management Factory Reset Wipes all Forge settings, locks, and saved layout data. Reset Everything`);function ku(e,t){Mt(t,!1);let n=()=>Zc.save();Fs();var r=Ou(),i=L(r),a=R(L(i),2),o=R(L(a),2);fl(L(o),{get value(){return Du().inactiveOpacity},min:10,max:100,onchange:e=>{Du(Du().inactiveOpacity=e),n()}}),D(o),D(a);var s=R(a,2);xl(R(L(s),2),{onchange:()=>n(),get value(){return Du().rememberPosition},set value(e){Du(Du().rememberPosition=e)},$$legacy:!0}),D(s);var c=R(s,2);xl(R(L(c),2),{onchange:()=>n(),get value(){return Du().autoOpen},set value(e){Du(Du().autoOpen=e)},$$legacy:!0}),D(c);var l=R(c,2);xl(R(L(l),2),{onchange:()=>n(),get value(){return Du().showLauncher},set value(e){Du(Du().showLauncher=e)},$$legacy:!0}),D(l),D(i);var u=R(i,2),d=R(L(u),2),f=R(L(d),2);fl(L(f),{get value(){return Du().quickSaveSlot},min:1,max:20,onchange:e=>{Du(Du().quickSaveSlot=e),n()}}),D(f),D(d),D(u);var p=R(u,2),m=R(L(p),2),h=R(L(m),2);D(m),D(p),D(r),U(`click`,h,()=>Zc.resetAll()),G(e,r),Nt()}Wa([`click`]);var Au=W(` No logs recorded yet.`),ju=W(` `),Mu=W(`Narrator / Unknown`),Nu=W(` `),Pu=W(`Game Dialogue Logs CLEAR `);function Fu(e,t){Mt(t,!0);let n=P(void 0),r=e=>{let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`};Mi(()=>{Qc.entries.length&&setTimeout(()=>{var e,t;H(n)&&((e=(t=H(n)).scrollToBottom)==null||e.call(t))},10)});var i=Pu(),a=L(i),o=L(a),s=R(L(o),2);wc(L(s),{size:14}),ut(2),D(s),D(o);var c=R(o,2),l=L(c),u=e=>{var t=Au();mc(L(t),{size:32,class:`opacity-50`}),ut(2),D(t),G(e,t)},d=e=>{Ps(ul(e,{get items(){return Qc.entries},itemHeight:80,containerHeight:400,itemTemplate:(e,t=m)=>{var n=Nu(),i=L(n),a=L(i),o=e=>{var n=ju(),r=L(n,!0);D(n),z(()=>K(r,t().speaker)),G(e,n)},s=e=>{G(e,Mu())};mo(a,e=>{t().speaker?e(o):e(s,-1)});var c=R(a,2),l=L(c,!0);D(c),D(i);var u=R(i,2),d=L(u,!0);D(u),D(n),z(e=>{K(l,e),K(d,t().text)},[()=>r(t().timestamp)]),G(e,n)},$$slots:{itemTemplate:!0}}),e=>F(n,e,!0),()=>H(n))};mo(l,e=>{Qc.entries.length===0?e(u):e(d,-1)}),D(c),D(a),D(i),U(`click`,s,()=>tl.clear()),G(e,i),Nt()}Wa([`click`]);var Iu=W(` `),Lu=W(`Forge `),Ru=W(` `),zu=W(` `,1);function Bu(e,t){Mt(t,!0),Mi(()=>{let e=document.getElementById(`forge-mvmz-host`);if(!e)return;let t=!1,n=()=>{t=!1},r=[`mousedown`,`mousemove`,`mouseup`,`click`,`dblclick`,`pointerdown`,`pointermove`,`pointerup`,`contextmenu`,`wheel`,`touchstart`,`touchmove`,`touchend`,`keydown`,`keyup`],i=e=>{(e.type===`mousedown`||e.type===`pointerdown`||e.type===`touchstart`)&&(t=!0);let n=e.type===`mousemove`||e.type===`pointermove`||e.type===`touchmove`,r=e.type===`mouseup`||e.type===`pointerup`||e.type===`touchend`;if(n){let n=!1;if(`buttons`in e?n=e.buttons>0:`touches`in e&&(n=e.touches.length>0),n&&!t)return}r&&!t||e.stopPropagation()};if(window.addEventListener(`mouseup`,n,{capture:!0}),window.addEventListener(`pointerup`,n,{capture:!0}),window.addEventListener(`touchend`,n,{capture:!0}),Q.visible)for(let t of r)e.addEventListener(t,i,!1);else for(let t of r)e.removeEventListener(t,i,!1);return()=>{window.removeEventListener(`mouseup`,n,{capture:!0}),window.removeEventListener(`pointerup`,n,{capture:!0}),window.removeEventListener(`touchend`,n,{capture:!0});for(let t of r)e.removeEventListener(t,i,!1)}});let n=[{id:Ic.General,label:`General`},{id:Ic.Vars,label:`Variables`},{id:Ic.Switches,label:`Switches`},{id:Ic.Inv,label:`Inventory`},{id:Ic.Actors,label:`Actors`},{id:Ic.Map,label:`Map`},{id:Ic.CommonEv,label:`Events`},{id:Ic.Locks,label:`Locks`},{id:Ic.Logs,label:`Logs`},{id:Ic.Shortcuts,label:`Keys`},{id:Ic.Settings,label:`Settings`}],r=P(0),i=P(0),a=P(840),o=P(520),s=P(!1);Ws(()=>{Zc.load(),X.install(),Wc.install(),tl.install(),$.init(nl);try{let e=JSON.parse(localStorage.getItem(`forge:panel`)||`null`);e&&Xc.rememberPosition?(F(r,e.x,!0),F(i,e.y,!0),F(a,e.w,!0),F(o,e.h,!0)):typeof window<`u`&&(F(r,0),F(i,0),F(a,Math.min(840,window.innerWidth||840),!0),F(o,Math.min(520,window.innerHeight||520),!0));let t=localStorage.getItem(`forge:lastTab`);t&&Object.values(Ic).includes(t)&&(Q.activeTab=t)}catch(e){}Xc.autoOpen&&!Q.visible&&(Q.visible=!0)});let c=()=>{Xc.rememberPosition&&localStorage.setItem(`forge:panel`,JSON.stringify({x:H(r),y:H(i),w:H(a),h:H(o)})),localStorage.setItem(`forge:lastTab`,Q.activeTab)},l=P(!1),u=P(0),d=P(0),f=P(0),p=P(0),m=e=>{H(l)&&(F(r,Math.max(0,Math.min(window.innerWidth-H(a),H(f)+e.clientX-H(u))),!0),F(i,Math.max(0,Math.min(window.innerHeight-H(o),H(p)+e.clientY-H(d))),!0))},h=()=>{F(l,!1),window.removeEventListener(`mousemove`,m,!0),window.removeEventListener(`mouseup`,h,!0),c()},g=e=>{e.target.closest(`button, input, select`)||(F(l,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(f,H(r),!0),F(p,H(i),!0),window.addEventListener(`mousemove`,m,!0),window.addEventListener(`mouseup`,h,!0))},_=P(!1),v=P(0),y=P(0),b=e=>{H(_)&&(F(a,Math.max(560,Math.min(window.innerWidth-H(r),H(v)+e.clientX-H(u))),!0),F(o,Math.max(360,Math.min(window.innerHeight-H(i),H(y)+e.clientY-H(d))),!0))},x=()=>{F(_,!1),window.removeEventListener(`mousemove`,b,!0),window.removeEventListener(`mouseup`,x,!0),c()},S=e=>{F(_,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(v,H(a),!0),F(y,H(o),!0),window.addEventListener(`mousemove`,b,!0),window.addEventListener(`mouseup`,x,!0),e.stopPropagation()};var ee=zu(),C=_i(ee),w=e=>{var t=Lu(),u=L(t),d=L(u),f=R(d,2);yo(f,21,()=>n,ho,(e,t)=>{var n=Iu(),r=L(n),i=e=>{Ac(e,{size:14})},a=e=>{ic(e,{size:14})},o=e=>{Sc(e,{size:14})},s=e=>{gc(e,{size:14})},l=e=>{Oc(e,{size:14})},u=e=>{fc(e,{size:14})},d=e=>{Pc(e,{size:14})},f=e=>{uc(e,{size:14})},p=e=>{mc(e,{size:14})},m=e=>{oc(e,{size:14})},h=e=>{vc(e,{size:14})};mo(r,e=>{H(t).id===`general`?e(i):H(t).id===`vars`?e(a,1):H(t).id===`switches`?e(o,2):H(t).id===`inv`?e(s,3):H(t).id===`actors`?e(l,4):H(t).id===`map`?e(u,5):H(t).id===`commonev`?e(d,6):H(t).id===`locks`?e(f,7):H(t).id===`logs`?e(p,8):H(t).id===`shortcuts`?e(m,9):H(t).id===`settings`&&e(h,10)});var g=R(r,2),_=L(g,!0);D(g),D(n),z(()=>{Jo(n,1,`w-full text-left rounded px-3 py-2 text-xs font-semibold transition-all flex items-center space-x-2.5 focus:outline-none ${Q.activeTab===H(t).id?`bg-[#7ba4ff]/10 text-[#7ba4ff] shadow-sm`:`text-gray-400 hover:bg-[#2a2d3a] hover:text-gray-200`}`),K(_,H(t).label)}),U(`click`,n,()=>{var e;Q.activeTab=H(t).id,(e=window.getSelection())==null||e.removeAllRanges(),c()}),G(e,n)}),D(f);var p=R(f,2),m=L(p);ps(m,`title`,`1.0.0`),m.textContent=`1.0.0`,D(p),D(u);var h=R(u,2),v=L(h),y=L(v),b=L(y,!0);D(y);var x=R(y,2);Mc(L(x),{size:14}),D(x),D(v);var ee=R(v,2),C=L(ee),w=e=>{yl(e,{})},te=e=>{wl(e,{})},ne=e=>{Ol(e,{})},re=e=>{Vl(e,{})},ie=e=>{ru(e,{})},ae=e=>{cu(e,{})},oe=e=>{pu(e,{})},se=e=>{vu(e,{})},ce=e=>{Fu(e,{})},le=e=>{Eu(e,{})},ue=e=>{ku(e,{})};mo(C,e=>{Q.activeTab===Ic.Vars?e(w):Q.activeTab===Ic.Switches?e(te,1):Q.activeTab===Ic.Inv?e(ne,2):Q.activeTab===Ic.Actors?e(re,3):Q.activeTab===Ic.General?e(ie,4):Q.activeTab===Ic.Map?e(ae,5):Q.activeTab===Ic.CommonEv?e(oe,6):Q.activeTab===Ic.Locks?e(se,7):Q.activeTab===Ic.Logs?e(ce,8):Q.activeTab===Ic.Shortcuts?e(le,9):Q.activeTab===Ic.Settings&&e(ue,10)}),D(ee),D(h),il(R(h,2),{onmousedown:S}),D(t),z(e=>{var n,c,u,d;Xo(t,`opacity: ${H(l)||H(_)||H(s)?1:Xc.inactiveOpacity/100}; left: ${(n=H(r))==null?``:n}px; top: ${(c=H(i))==null?``:c}px; width: ${(u=H(a))==null?``:u}px; height: ${(d=H(o))==null?``:d}px; background: #13151a; color: #d4d8e3;`),K(b,e)},[()=>{var e;return((e=n.find(e=>e.id===Q.activeTab))==null?void 0:e.label)||``}]),Ua(`mouseenter`,t,()=>F(s,!0)),Ua(`mouseleave`,t,()=>F(s,!1)),U(`mousedown`,d,g),U(`mousedown`,v,g),U(`click`,x,()=>Q.visible=!1),G(e,t)};mo(C,e=>{Q.visible&&e(w)});var te=R(C,2);yo(te,21,()=>zc.toasts,e=>e.id,(e,t)=>{var n=Ru(),r=L(n),i=R(r,2),a=L(i,!0);D(i),D(n),z(()=>{Xo(n,`background: #1a1d24; border-color: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`}; opacity: 0.95; min-width: 160px; max-width: 320px;`),Xo(r,`background: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`};`),K(a,H(t).message)}),G(e,n)}),D(te),ol(R(te,2),{}),G(e,ee),Nt()}Wa([`mousedown`,`click`]);var Vu=`forge-mvmz-host`,Hu=document.getElementById(Vu);Hu||(Hu=document.createElement(`div`),Hu.id=Vu,Hu.style.position=`fixed`,Hu.style.top=`0`,Hu.style.left=`0`,Hu.style.width=`100vw`,Hu.style.height=`100vh`,Hu.style.pointerEvents=`none`,Hu.style.zIndex=`2147483647`,document.body.appendChild(Hu));var Uu=document.createElement(`style`);Uu.textContent=`#${Vu} { z-index: 2147483647 !important; }`,document.head.appendChild(Uu);var Wu=null,Gu;typeof Hu.attachShadow==`function`?(Wu=Hu.attachShadow({mode:`open`}),Gu=Wu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,Wu.appendChild(e)}}},0)):(Gu=Hu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,document.head.appendChild(e)}}},0));var Ku=document.createElement(`div`);Ku.style.pointerEvents=`none`,Ku.style.width=`100%`,Ku.style.height=`100%`,Gu.appendChild(Ku);try{to(Bu,{target:Ku})}catch(e){console.error(`[FORGE] Error mounting Svelte App:`,e)}if(window.Input!==void 0&&window.Input._onKeyDown){let e=window.Input._onKeyDown;window.Input._onKeyDown=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}if(window.Input!==void 0&&window.Input._onKeyUp){let e=window.Input._onKeyUp;window.Input._onKeyUp=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}})(); \ No newline at end of file diff --git a/util/forge/Forge_MZ.js b/util/forge/Forge_MZ.js index 98111b9..7023672 100644 --- a/util/forge/Forge_MZ.js +++ b/util/forge/Forge_MZ.js @@ -1,1115 +1,28 @@ //============================================================================= -// Forge_MZ.js — In-game cheat & editor overlay for RPG Maker MZ +// forge.js - In-game cheat & editor overlay for RPG Maker MV/MZ //============================================================================= /*: - * @target MZ - * @plugindesc Forge — modern in-game editor: variables, switches, items, actors, gold, teleport, common events, freeze/lock & battle cheats. (MZ) - * @author len (Forge - clean-room, MTool-inspired) - * @url - * - * @param hotkey - * @text Toggle Hotkey - * @desc Key to toggle the panel. - * @type string - * @default F10 - * - * @param speedKey - * @text Speedhack Key - * @desc Key to toggle fast-forward (e.g. Control, Shift, Alt, or a letter). - * @type string - * @default Control - * - * @param startOpen - * @text Open on start - * @desc Open the panel automatically on new game / load. - * @type boolean - * @default false - * - * @param itemMaxOverride - * @text Item "Max" value - * @desc Value used by the "Max" button for item stacks (0 = use engine maxItems). - * @type number - * @min 0 - * @default 0 - * - * @command open - * @text Open / Toggle Panel - * @desc Toggle the Forge overlay. - * - * @help - * Forge — drop-in cheat & editor for RPG Maker MZ. - * Place in js/plugins/ and enable in the Plugin Manager. Press F10 to open. - * - * Sections: Variables · Switches · Items/Weapons/Armors · Actors · Party/Gold · - * Map/Teleport · Common Events · Data Lock (freeze) · Battle cheats. - * - * All edits are RAM-only and never written to save files. No external requests. - * Plugin command "Open / Toggle Panel" toggles the overlay from events. + * @target MZ MV + * @plugindesc Forge - modern in-game editor + * @author len, shellawa + * @url https://gitgud.io/zero64801/forge-mvmz/ */ - -/* =================================================================================== - * Forge — in-game cheat & editor overlay for RPG Maker MV / MZ (shared core) - * Clean-room reimplementation of MTool's variable/value editor. Vanilla JS, zero deps. - * This file is the engine-agnostic core; the MV/MZ ship files prepend the plugin header. - * Layers: ops (DOM-free, testable) · locks (prototype monkeypatches) · cheats · ui (Shadow DOM) - * =================================================================================== */ -(function (root) { - 'use strict'; - if (root && root.__FORGE_CORE__) return; - - // ---------- environment ---------- - var IS_MZ = (typeof Utils !== 'undefined' && Utils.RPGMAKER_NAME === 'MZ'); - var nodeFs = null, nodePath = null; - try { if (typeof require === 'function') { nodeFs = require('fs'); nodePath = require('path'); } } catch (e) {} - function gameCwd() { try { return process.cwd(); } catch (e) { return '.'; } } - - var PARAM_NAMES = ['Max HP', 'Max MP', 'Attack', 'Defense', 'M.Attack', 'M.Defense', 'Agility', 'Luck']; - - // ---------- small utils ---------- - function clampInt(v, lo, hi) { v = Math.floor(Number(v) || 0); if (v < lo) v = lo; if (hi != null && v > hi) v = hi; return v; } - function defined(x) { return typeof x !== 'undefined' && x !== null; } - function dataName(d) { return d && d.name ? d.name : ''; } - // actor.level may be a getter (number), a method, or only the _level field across engines/plugins. - function actorLevel(a) { if (!a) return 0; if (typeof a.level === 'number') return a.level; if (typeof a.level === 'function') return a.level(); return a._level || 1; } - - // =================================================================================== - // OPS — pure logic, only touches $game*/$data* globals. Unit-testable. - // =================================================================================== - var ops = {}; - - ops.vars = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.variables.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.variables[id]) || ('Variable ' + id); }, - get: function (id) { return defined(window.$gameVariables) ? $gameVariables.value(id) : 0; }, - set: function (id, v) { if (!defined(window.$gameVariables)) return; $gameVariables.setValue(id, typeof v === 'string' && v.trim() !== '' && !isNaN(v) ? Number(v) : v); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - ops.switches = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.switches.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.switches[id]) || ('Switch ' + id); }, - get: function (id) { return defined(window.$gameSwitches) ? $gameSwitches.value(id) : false; }, - set: function (id, v) { if (!defined(window.$gameSwitches)) return; $gameSwitches.setValue(id, !!v); }, - toggle: function (id) { this.set(id, !this.get(id)); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - var INV_TABLES = { item: '$dataItems', weapon: '$dataWeapons', armor: '$dataArmors' }; - ops.inv = { - table: function (kind) { return window[INV_TABLES[kind]] || []; }, - data: function (kind, id) { return this.table(kind)[id] || null; }, - count: function (kind, id) { var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.numItems(d) : 0; }, - maxStack: function (kind, id) { if (MTC._itemMaxOverride > 0) return MTC._itemMaxOverride; var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.maxItems(d) : 99; }, - grant: function (kind, id, n) { var d = this.data(kind, id); if (d && defined(window.$gameParty)) $gameParty.gainItem(d, n, false); if (locks.isItemFrozen(kind, id)) LOCK.items.set(itemKey(kind, id), { kind: kind, id: id, value: this.count(kind, id) }); }, - setCount: function (kind, id, target) { this.grant(kind, id, clampInt(target, 0, null) - this.count(kind, id)); }, - max: function (kind, id) { this.setCount(kind, id, this.maxStack(kind, id)); }, - list: function (kind) { - var t = this.table(kind), out = []; - for (var id = 1; id < t.length; id++) { - var d = t[id]; if (!d || !d.name) continue; - out.push({ id: id, name: d.name, description: d.description || '', iconIndex: d.iconIndex || 0, count: $gameParty.numItems(d) }); - } - return out; - } - }; - - ops.gold = { - get: function () { return defined(window.$gameParty) ? $gameParty.gold() : 0; }, - max: function () { return defined(window.$gameParty) && $gameParty.maxGold ? $gameParty.maxGold() : 99999999; }, - add: function (n) { - if (!defined(window.$gameParty)) return; - if (LOCK.gold != null) { LOCK.gold = clampInt(LOCK.gold + n, 0, this.max()); (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); return; } - if (n >= 0) $gameParty.gainGold(n); else $gameParty.loseGold(-n); - }, - set: function (target) { this.add(clampInt(target, 0, this.max()) - this.get()); } - }; - - ops.actors = { - list: function () { - var out = []; - if (!defined(window.$dataActors)) return out; - for (var id = 1; id < $dataActors.length; id++) { - var d = $dataActors[id]; if (!d) continue; - var a = $gameActors.actor(id); - out.push({ id: id, name: a ? a.name() : d.name, level: a ? actorLevel(a) : (d.initialLevel || 1), inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false }); - } - return out; - }, - get: function (id) { - var a = $gameActors.actor(id); if (!a) return null; - var params = []; - for (var p = 0; p < 8; p++) params.push({ id: p, name: PARAM_NAMES[p], value: a.param(p) }); - var skills = []; - if (defined(window.$dataSkills)) for (var s = 1; s < $dataSkills.length; s++) { var sk = $dataSkills[s]; if (sk && sk.name) skills.push({ id: s, name: sk.name, learned: a.isLearnedSkill ? a.isLearnedSkill(s) : (a.skills().indexOf(sk) >= 0) }); } - var equips = [], slots = a.equipSlots ? a.equipSlots() : [], cur = a.equips(); - for (var e = 0; e < slots.length; e++) equips.push({ slot: e, etypeId: slots[e], current: cur[e] ? cur[e].name : '(none)' }); - return { - id: id, name: a.name(), level: actorLevel(a), exp: a.currentExp ? a.currentExp() : 0, - nextExp: a.nextLevelExp ? a.nextLevelExp() : 0, - hp: a.hp, mp: a.mp, tp: a.tp, mhp: a.mhp, mmp: a.mmp, - params: params, skills: skills, equips: equips, - inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false - }; - }, - setLevel: function (id, lv) { var a = $gameActors.actor(id); if (a) { var cap = a.maxLevel ? a.maxLevel() : 99; a.changeLevel(clampInt(lv, 1, cap), false); a.refresh(); } }, - setExp: function (id, exp) { var a = $gameActors.actor(id); if (a) { a.changeExp(clampInt(exp, 0, null), false); a.refresh(); } }, - setHp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setHp(clampInt(v, 0, a.mhp)); a.refresh(); } }, - setMp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setMp(clampInt(v, 0, a.mmp)); a.refresh(); } }, - setTp: function (id, v) { var a = $gameActors.actor(id); if (a && a.setTp) { a.setTp(clampInt(v, 0, 100)); a.refresh(); } }, - addParam: function (id, pid, delta) { var a = $gameActors.actor(id); if (a) { a.addParam(pid, Math.floor(delta)); a.refresh(); } }, - // param(pid) = round((paramBase+paramPlus) * paramRate * paramBuffRate) clamped to [paramMin,paramMax]. - // addParam only mutates paramPlus, so invert the rate to land the *visible* param on target. - setParam: function (id, pid, target) { - var a = $gameActors.actor(id); if (!a) return; - var rate = (a.paramRate ? a.paramRate(pid) : 1) * (a.paramBuffRate ? a.paramBuffRate(pid) : 1) || 1; - var cap = a.paramMax ? a.paramMax(pid) : null; - var want = clampInt(target, a.paramMin ? a.paramMin(pid) : 0, cap); - var base = a.paramBase ? a.paramBase(pid) : 0, plus = (a.paramPlus ? a.paramPlus(pid) : (a._paramPlus ? a._paramPlus[pid] : 0)) || 0; - a.addParam(pid, Math.round(want / rate) - base - plus); - a.refresh(); - }, - learn: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.learnSkill(skillId); }, - forget: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.forgetSkill(skillId); }, - equip: function (id, slotId, kind, itemId) { var a = $gameActors.actor(id); if (!a) return; var item = itemId ? ops.inv.data(kind, itemId) : null; if (a.forceChangeEquip) a.forceChangeEquip(slotId, item); else a.changeEquip(slotId, item); a.refresh(); }, - recover: function (id) { var a = $gameActors.actor(id); if (a) { a.recoverAll(); a.refresh(); } }, - setName: function (id, name) { var a = $gameActors.actor(id); if (a) a.setName(String(name)); }, - addToParty: function (id) { $gameParty.addActor(id); }, - removeFromParty: function (id) { $gameParty.removeActor(id); } - }; - - ops.party = { - members: function () { return defined(window.$gameParty) ? $gameParty.members().map(function (a) { return { id: a.actorId(), name: a.name(), level: actorLevel(a) }; }) : []; }, - add: function (id) { if (defined(window.$gameParty)) $gameParty.addActor(id); }, - remove: function (id) { if (defined(window.$gameParty)) $gameParty.removeActor(id); }, - steps: function () { return defined(window.$gameParty) ? $gameParty.steps() : 0; }, - // RPG Maker derives playtime from frame count (Game_System has no playtime()). - playtime: function () { return (typeof Graphics !== 'undefined' && Graphics.frameCount) ? Math.floor(Graphics.frameCount / 60) : 0; } - }; - - ops.map = { - list: function () { - var out = []; - if (!defined(window.$dataMapInfos)) return out; - for (var id = 1; id < $dataMapInfos.length; id++) { var m = $dataMapInfos[id]; if (m) out.push({ id: id, name: m.name || ('Map ' + id) }); } - return out; - }, - current: function () { if (!defined(window.$gameMap) || !defined(window.$gamePlayer)) return { mapId: 0, x: 0, y: 0, dir: 2 }; return { mapId: $gameMap.mapId(), x: $gamePlayer.x, y: $gamePlayer.y, dir: $gamePlayer.direction ? $gamePlayer.direction() : 2 }; }, - teleport: function (mapId, x, y, dir, fade) { $gamePlayer.reserveTransfer(mapId, clampInt(x, 0, null), clampInt(y, 0, null), dir || 0, fade == null ? 0 : fade); }, - loadMapFile: function (mapId) { - if (!nodeFs) return null; - try { var f = 'Map' + String(mapId).padStart(3, '0') + '.json'; return JSON.parse(nodeFs.readFileSync(nodePath.join(gameCwd(), 'data', f), 'utf8')); } - catch (e) { return null; } - }, - noclip: function (b) { locks.state.noclip = !!b; if (defined(window.$gamePlayer)) $gamePlayer.setThrough(!!b); }, - isNoclip: function () { return !!locks.state.noclip; }, - speed: function (n) { if (defined(window.$gamePlayer)) $gamePlayer.setMoveSpeed(clampInt(n, 1, 8)); } - }; - - ops.commonev = { - list: function () { - var out = []; - if (!defined(window.$dataCommonEvents)) return out; - for (var id = 1; id < $dataCommonEvents.length; id++) { var c = $dataCommonEvents[id]; if (c) out.push({ id: id, name: c.name || ('Common Event ' + id) }); } - return out; - }, - run: function (id) { if (defined(window.$gameTemp)) $gameTemp.reserveCommonEvent(id); } - }; - - ops.battle = { - inBattle: function () { - if (typeof SceneManager === 'undefined' || !SceneManager._scene) return false; - if (typeof Scene_Battle !== 'undefined' && SceneManager._scene instanceof Scene_Battle) return true; - var c = SceneManager._scene.constructor; // fallback if class binding unavailable - return !!(c && c.name === 'Scene_Battle'); - }, - instantWin: function () { - if (typeof $gameTroop === 'undefined' || !$gameTroop) return; - $gameTroop.members().forEach(function (e) { - e.setHp(0); - if (e.deathStateId && e.addState) e.addState(e.deathStateId()); // mark actually dead - else if (e.die) e.die(); - if (e.performCollapse) e.performCollapse(); // visual collapse - e.refresh(); - }); - if (typeof BattleManager !== 'undefined' && BattleManager.checkBattleEnd) BattleManager.checkBattleEnd(); - }, - flee: function () { if (typeof BattleManager !== 'undefined' && BattleManager.processAbort) BattleManager.processAbort(); } - }; - - // =================================================================================== - // LOCKS — prototype-level monkeypatches + per-frame re-assertion. Installed once. - // =================================================================================== - var LOCK = { vars: new Map(), switches: new Map(), items: new Map(), gold: null, stats: new Map(), noclip: false }; - function itemKey(kind, id) { return kind + ':' + id; } - - var locks = { - state: LOCK, - _installed: false, - install: function () { - if (this._installed) return; this._installed = true; - // Variables - if (typeof Game_Variables !== 'undefined') { - var _sv = Game_Variables.prototype.setValue; - Game_Variables.prototype.setValue = function (id, value) { if (LOCK.vars.has(id)) value = LOCK.vars.get(id); _sv.call(this, id, value); }; - } - // Switches - if (typeof Game_Switches !== 'undefined') { - var _ss = Game_Switches.prototype.setValue; - Game_Switches.prototype.setValue = function (id, value) { if (LOCK.switches.has(id)) value = LOCK.switches.get(id); _ss.call(this, id, value); }; - } - // Gold: substitute (not block) so freezeGold can re-snapshot on edit; item freeze is tick-based - // (NOT a gainItem block) so equip bookkeeping / give-take still runs, corrected next frame. - if (typeof Game_Party !== 'undefined') { - var _gg = Game_Party.prototype.gainGold; - locks._origGainGold = _gg; - Game_Party.prototype.gainGold = function (n) { if (LOCK.gold != null) return; _gg.call(this, n); }; - } - // Battle: god mode + OHKO via one executeHpDamage override - if (typeof Game_Action !== 'undefined') { - var _ehd = Game_Action.prototype.executeHpDamage; - Game_Action.prototype.executeHpDamage = function (target, value) { - if (CHEAT.god && target.isActor && target.isActor() && value > 0) value = 0; - if (CHEAT.ohko && this.subject().isActor && this.subject().isActor() && target.isEnemy && target.isEnemy()) value = target.hp; - _ehd.call(this, target, value); - }; - } - // God mode also blocks non-action HP loss for actors (slip/regen, event Change-HP) + floor damage. - if (typeof Game_Battler !== 'undefined' && Game_Battler.prototype.gainHp) { - var _gh = Game_Battler.prototype.gainHp; - Game_Battler.prototype.gainHp = function (value) { if (CHEAT.god && this.isActor && this.isActor() && value < 0) value = 0; _gh.call(this, value); }; - } - if (typeof Game_Actor !== 'undefined' && Game_Actor.prototype.executeFloorDamage) { - var _efd = Game_Actor.prototype.executeFloorDamage; - Game_Actor.prototype.executeFloorDamage = function () { if (CHEAT.god) return; _efd.call(this); }; - } - // No encounters - if (typeof Game_Player !== 'undefined') { - var _epv = Game_Player.prototype.encounterProgressValue; - Game_Player.prototype.encounterProgressValue = function () { return CHEAT.noEncounter ? 0 : _epv.call(this); }; - } - // Speedhack: drive the scene update extra times per frame (speed>1) or skip frames (speed<1). - // Input is still read once per real frame, so the whole game (movement, anim, battle, messages, - // events, timers) runs faster/slower. Works for MV and MZ (both expose SceneManager.updateScene). - if (typeof SceneManager !== 'undefined' && SceneManager.updateScene) { - var _updateScene = SceneManager.updateScene, _spdAcc = 0; - // Extra updates are only safe in a steady scene: the scene must be started, not changing, and - // (on a map) not mid-transfer — otherwise $dataMap is briefly null and the scroll code throws. - function speedSafe(mgr) { - if (mgr.isCurrentSceneStarted) { if (!mgr.isCurrentSceneStarted()) return false; } // MV - else if (mgr._scene && mgr._scene.isStarted) { if (!mgr._scene.isStarted()) return false; } // MZ - if (mgr.isSceneChanging && mgr.isSceneChanging()) return false; // mid scene transition - if (typeof $gamePlayer !== 'undefined' && $gamePlayer && $gamePlayer.isTransferring && $gamePlayer.isTransferring()) return false; - if (typeof DataManager !== 'undefined' && DataManager.isMapLoaded && !DataManager.isMapLoaded()) return false; // map (re)loading - return true; - } - SceneManager.updateScene = function () { - var sp = CHEAT.speed || 1; - if (sp >= 1) { - _updateScene.call(this); - if (sp > 1 && this._scene && typeof this._scene.update === 'function' && speedSafe(this)) { - _spdAcc += (sp - 1); - var guard = 0; - while (_spdAcc >= 1 && guard++ < 64) { _spdAcc -= 1; try { this._scene.update(); } catch (e) { _spdAcc = 0; break; } } - } else { _spdAcc = 0; } // not safe / not boosting -> don't bank up a burst of catch-up updates - } else { - _spdAcc += sp; - if (_spdAcc >= 1) { _spdAcc -= 1; _updateScene.call(this); } - else if (this._scene) { // skip the game advance this frame, keep start/ready bookkeeping - var u = this._scene.update; this._scene.update = function () {}; - try { _updateScene.call(this); } finally { this._scene.update = u; } - } - } - }; - } - // Clear stale freeze snapshots when the engine swaps in fresh game objects (new game / load). - if (typeof DataManager !== 'undefined') { - if (DataManager.setupNewGame) { var _sng = DataManager.setupNewGame; DataManager.setupNewGame = function () { locks.clearAll(); _sng.call(this); }; } - if (DataManager.extractSaveContents) { var _esc = DataManager.extractSaveContents; DataManager.extractSaveContents = function (c) { locks.clearAll(); return _esc.call(this, c); }; } - } - }, - // Freeze setters update both the lock map and the live value once. Maps store parsed objects so - // the per-frame tick never re-parses string keys. - freezeVar: function (id, on) { if (on) { LOCK.vars.set(id, ops.vars.get(id)); ops.vars.set(id, ops.vars.get(id)); } else LOCK.vars.delete(id); }, - freezeSwitch: function (id, on) { if (on) LOCK.switches.set(id, ops.switches.get(id)); else LOCK.switches.delete(id); }, - freezeItem: function (kind, id, on) { var k = itemKey(kind, id); if (on) LOCK.items.set(k, { kind: kind, id: id, value: ops.inv.count(kind, id) }); else LOCK.items.delete(k); }, - freezeGold: function (on) { LOCK.gold = on ? ops.gold.get() : null; }, - freezeStat: function (actorId, stat, on) { var k = actorId + ':' + stat; if (on) { var a = defined(window.$gameActors) ? $gameActors.actor(actorId) : null; LOCK.stats.set(k, { actorId: actorId, stat: stat, value: a ? a[stat] : 0 }); } else LOCK.stats.delete(k); }, - isVarFrozen: function (id) { return LOCK.vars.has(id); }, - isSwitchFrozen: function (id) { return LOCK.switches.has(id); }, - isItemFrozen: function (kind, id) { return LOCK.items.has(itemKey(kind, id)); }, - isStatFrozen: function (actorId, stat) { return LOCK.stats.has(actorId + ':' + stat); }, - // Per-frame: re-assert values the overrides can't catch (hp/mp/tp, gold target, item counts, noclip). - tick: function () { - if (!LOCK.noclip && LOCK.gold == null && !LOCK.stats.size && !LOCK.items.size) return; // early-out - if (LOCK.noclip && defined(window.$gamePlayer) && !$gamePlayer.isThrough()) $gamePlayer.setThrough(true); - if (LOCK.gold != null && defined(window.$gameParty) && $gameParty.gold() !== LOCK.gold) (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); - if (LOCK.stats.size && defined(window.$gameActors)) { - LOCK.stats.forEach(function (e) { - var a = $gameActors.actor(e.actorId); if (!a) return; - if (e.stat === 'hp' && a.hp !== e.value) a.setHp(Math.min(e.value, a.mhp)); - else if (e.stat === 'mp' && a.mp !== e.value) a.setMp(Math.min(e.value, a.mmp)); - else if (e.stat === 'tp' && a.tp !== e.value && a.setTp) a.setTp(e.value); - }); - } - if (LOCK.items.size && defined(window.$gameParty)) { - LOCK.items.forEach(function (e) { if (ops.inv.count(e.kind, e.id) !== e.value) { var d = ops.inv.data(e.kind, e.id); if (d) $gameParty.gainItem(d, e.value - ops.inv.count(e.kind, e.id), false); } }); - } - }, - summary: function () { - var out = []; - LOCK.vars.forEach(function (v, id) { out.push({ type: 'var', id: id, label: 'Var ' + id + ' · ' + ops.vars.name(id), value: v }); }); - LOCK.switches.forEach(function (v, id) { out.push({ type: 'switch', id: id, label: 'Switch ' + id + ' · ' + ops.switches.name(id), value: v ? 'ON' : 'OFF' }); }); - LOCK.items.forEach(function (e, key) { out.push({ type: 'item', key: key, label: e.kind + ' ' + e.id + ' · ' + (ops.inv.data(e.kind, e.id) ? ops.inv.data(e.kind, e.id).name : ''), value: e.value }); }); - LOCK.stats.forEach(function (e, key) { out.push({ type: 'stat', key: key, label: 'Actor ' + e.actorId + ' · ' + e.stat.toUpperCase(), value: e.value }); }); - if (LOCK.gold != null) out.push({ type: 'gold', label: 'Gold (frozen)', value: LOCK.gold }); - if (LOCK.noclip) out.push({ type: 'noclip', label: 'Noclip (active)', value: 'ON' }); - return out; - }, - clearAll: function () { LOCK.vars.clear(); LOCK.switches.clear(); LOCK.items.clear(); LOCK.stats.clear(); LOCK.gold = null; if (LOCK.noclip) ops.map.noclip(false); } - }; - - // =================================================================================== - // CHEATS — global toggles consumed by the lock overrides + battle actions. - // =================================================================================== - var CHEAT = { god: false, ohko: false, noEncounter: false, speed: 1, uiFocused: false }; - var cheats = { - state: CHEAT, - setGod: function (b) { CHEAT.god = !!b; }, - setOhko: function (b) { CHEAT.ohko = !!b; }, - setNoEncounter: function (b) { CHEAT.noEncounter = !!b; }, - setSpeed: function (n) { CHEAT.speed = Math.max(0.1, Math.min(Number(n) || 1, 16)); }, - toggleSpeed: function () { this.setSpeed(CHEAT.speed !== 1 ? 1 : (MTC._speedBoost || 2)); return CHEAT.speed; }, - instantWin: function () { ops.battle.instantWin(); }, - flee: function () { ops.battle.flee(); } - }; - - // expose the assembled API (UI is attached below if a real DOM is present) - var MTC = { env: { IS_MZ: IS_MZ }, ops: ops, locks: locks, cheats: cheats, LOCK: LOCK, CHEAT: CHEAT, PARAM_NAMES: PARAM_NAMES, _itemMaxOverride: 0, _hotkey: 'F10', _speedKey: 'Control', _speedBoost: 2 }; - if (root) { root.Forge = MTC; root.__FORGE_CORE__ = true; } - if (typeof module !== 'undefined' && module.exports) module.exports = MTC; - - // ---- engine boot hooks (guarded; only when classes exist) ---- - if (typeof Scene_Base !== 'undefined') { - var _su = Scene_Base.prototype.update; - Scene_Base.prototype.update = function () { _su.call(this); try { locks.tick(); } catch (e) {} }; - } - // install lock overrides as soon as the game classes are available - try { locks.install(); } catch (e) {} - - // ---- UI: attach only when a real browser DOM is available (skipped in Node tests) ---- - if (typeof document !== 'undefined' && document.body && typeof document.body.attachShadow === 'function' && typeof window !== 'undefined') { - try { MTC.ui = buildUI(MTC); } catch (e) { try { console.error('[Forge] UI init failed', e); } catch (_) {} } - } - - // =================================================================================== - // UI — Shadow-DOM overlay. Inlined so the single ship file works with zero deps. - // =================================================================================== - function buildUI(API) { - var LS = 'forge:'; - function store(k, v) { try { localStorage.setItem(LS + k, JSON.stringify(v)); } catch (e) {} } - function load(k, d) { try { var s = localStorage.getItem(LS + k); return s == null ? d : JSON.parse(s); } catch (e) { return d; } } - // persisted speed settings (UI-controlled; override core/param defaults if the user changed them) - API._speedKey = load('speedKey', API._speedKey || 'Control'); - API._speedUseKey = load('speedUseKey', true); - API._speedBoost = load('speedBoost', API._speedBoost || 2); - if (!API._speedUseKey) API.cheats.setSpeed(API._speedBoost); // "always on" mode applies immediately - - function el(tag, props, kids) { - var n = document.createElement(tag); - if (props) for (var k in props) { - if (k === 'class') n.className = props[k]; - else if (k === 'text') n.textContent = props[k]; - else if (k === 'html') n.innerHTML = props[k]; - else if (k === 'style') n.setAttribute('style', props[k]); - else if (k.slice(0, 2) === 'on' && typeof props[k] === 'function') n.addEventListener(k.slice(2).toLowerCase(), props[k]); - else if (props[k] != null) n.setAttribute(k, props[k]); - } - if (kids) (Array.isArray(kids) ? kids : [kids]).forEach(function (c) { if (c != null) n.appendChild(typeof c === 'string' ? document.createTextNode(c) : c); }); - return n; - } - - // Inline SVG icons (no font/emoji dependency -> render identically on Windows/macOS/Linux). - function svg(inner) { return '' + inner + ''; } - var ICONS = { - vars: svg(''), - switches: svg(''), - inv: svg(''), - actors: svg(''), - party: svg(''), - map: svg(''), - commonev: svg(''), - locks: svg(''), - battle: svg(''), - tool: svg(''), - refresh: svg(''), - theme: svg(''), - close: svg(''), - lock: svg(''), - unlock: svg('') - }; - - var CSS = "\ -:host{position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important;contain:none}\ -*{box-sizing:border-box;font-family:var(--font-ui);-webkit-user-select:none;user-select:none}\ -#forge-root{--font-ui:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--font-mono:ui-monospace,'Cascadia Code',Consolas,monospace;\ ---fg-bg:#15171c;--fg-bg-elev:#1c1f27;--fg-bg-input:#21242d;--fg-bg-row-alt:#181b22;--fg-border:#2b2f3a;--fg-border-strong:#3a3f4d;\ ---fg-text:#e6e9ef;--fg-text-dim:#9aa1b1;--fg-text-faint:#646b7d;--fg-accent:#5b8cff;--fg-accent-weak:#2a3a63;--fg-success:#3ecf8e;--fg-warn:#f0b132;--fg-danger:#f0556a;--fg-frozen:#8b5cf6;\ ---sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--rad-sm:4px;--rad-md:7px;--rad-lg:11px;--rad-pill:999px;\ ---sh-panel:0 18px 50px rgba(0,0,0,.5),0 0 0 1px var(--fg-border);--row-h:30px;--rail-w:64px;--ease:cubic-bezier(.2,.7,.3,1);--dur:120ms;\ ---fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;color:var(--fg-text);font-size:var(--fs-md)}\ -#forge-root[data-theme=light]{--fg-bg:#f6f7f9;--fg-bg-elev:#fff;--fg-bg-input:#eef0f4;--fg-bg-row-alt:#f0f2f5;--fg-border:#dde0e7;--fg-border-strong:#c7ccd8;--fg-text:#1a1d24;--fg-text-dim:#5a6172;--fg-text-faint:#9097a6;--fg-accent-weak:#dce6ff}\ -.fg-panel{position:fixed;display:flex;flex-direction:column;background:var(--fg-bg);border-radius:var(--rad-lg);box-shadow:var(--sh-panel);overflow:hidden;z-index:2147483000;min-width:480px;min-height:360px;pointer-events:auto}\ -.fg-titlebar{display:flex;align-items:center;gap:6px;height:33px;padding:0 6px 0 10px;background:var(--fg-bg-elev);border-bottom:1px solid var(--fg-border);cursor:move;flex:0 0 auto}\ -.fg-brand{font-weight:700;font-size:var(--fs-md);letter-spacing:.3px;color:var(--fg-text);margin-right:8px;white-space:nowrap}\ -.fg-brand b{color:var(--fg-accent)}\ -.fg-search{flex:1;height:23px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:var(--rad-md);color:var(--fg-text);padding:0 9px;font-size:var(--fs-sm);outline:none;min-width:80px}\ -.fg-search:focus{border-color:var(--fg-accent)}\ -.fg-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:var(--rad-md);background:transparent;color:var(--fg-text-dim);border:0;cursor:pointer;font-size:13px;transition:background var(--dur)}\ -.fg-iconbtn:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-body{flex:1;display:flex;min-height:0}\ -.fg-rail{flex:0 0 var(--rail-w);display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-1);background:var(--fg-bg-elev);border-right:1px solid var(--fg-border);overflow-y:auto}\ -.fg-rail__item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) 0;border-radius:var(--rad-md);cursor:pointer;color:var(--fg-text-dim);font-size:10px;transition:all var(--dur);border:0;background:transparent}\ -.fg-rail__item .ic{display:flex;align-items:center;justify-content:center}\n.fg-rail__item .ic svg{width:19px;height:19px}\n.fg-iconbtn svg{width:15px;height:15px}\n.fg-lock svg{width:15px;height:15px}\n.fg-launcher svg{width:21px;height:21px}\ -.fg-rail__item:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-rail__item.is-active{background:var(--fg-accent-weak);color:var(--fg-accent)}\ -.fg-content{flex:1;display:flex;flex-direction:column;min-width:0}\ -.fg-section-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4) var(--sp-2);flex:0 0 auto}\ -.fg-section-head h2{margin:0;font-size:var(--fs-lg);font-weight:600}\ -.fg-count{font-size:var(--fs-xs);color:var(--fg-text-faint);background:var(--fg-bg-input);padding:2px 7px;border-radius:var(--rad-pill)}\ -.fg-spacer{flex:1}\ -.fg-subtoolbar{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-2);flex-wrap:wrap}\ -.fg-segmented{display:inline-flex;background:var(--fg-bg-input);border-radius:var(--rad-md);padding:2px}\ -.fg-segmented button{border:0;background:transparent;color:var(--fg-text-dim);padding:3px 12px;border-radius:5px;cursor:pointer;font-size:var(--fs-sm)}\ -.fg-segmented button.is-active{background:var(--fg-accent);color:#fff}\ -.fg-btn{border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text);padding:4px 11px;border-radius:var(--rad-md);cursor:pointer;font-size:var(--fs-sm);transition:all var(--dur)}\ -.fg-btn:hover{border-color:var(--fg-accent);color:var(--fg-accent)}\ -.fg-btn--ghost{background:transparent;border-color:transparent;color:var(--fg-text-dim)}\ -.fg-btn--danger:hover{border-color:var(--fg-danger);color:var(--fg-danger)}\ -.fg-list{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;border-top:1px solid var(--fg-border)}\ -.fg-list__sizer{position:relative;width:100%}\ -.fg-list__window{position:absolute;top:0;left:0;right:0}\ -.fg-row{display:flex;align-items:center;gap:var(--sp-2);height:var(--row-h);padding:0 var(--sp-4);border-bottom:1px solid var(--fg-border);font-size:var(--fs-sm)}\ -.fg-row:nth-child(even){background:var(--fg-bg-row-alt)}\ -.fg-row.is-frozen{box-shadow:inset 3px 0 0 var(--fg-frozen)}\ -.fg-row.is-selected{background:var(--fg-accent-weak)!important;box-shadow:inset 2px 0 0 var(--fg-accent)}\ -.fg-cell--id{flex:0 0 52px;color:var(--fg-text-faint);font-family:var(--font-mono);font-size:var(--fs-xs)}\ -.fg-cell--name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\ -.fg-cell--name .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--fg-accent);margin-right:6px;vertical-align:middle}\ -.fg-cell--val{flex:0 0 auto;display:flex;align-items:center;gap:4px}\ -.fg-stepper{display:inline-flex;align-items:center;gap:3px}\ -.fg-step{min-width:30px;width:auto;padding:0 5px;height:22px;white-space:nowrap;border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text-dim);border-radius:5px;cursor:pointer;font-size:var(--fs-xs);font-family:var(--font-mono)}\ -.fg-step:hover{color:var(--fg-accent);border-color:var(--fg-accent)}\ -.fg-num{width:68px;height:22px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:5px;color:var(--fg-text);text-align:right;padding:0 6px;font-family:var(--font-mono);font-size:var(--fs-sm);outline:none}\ -.fg-num:focus{border-color:var(--fg-accent)}\ -.fg-toggle{width:38px;height:21px;border-radius:var(--rad-pill);background:var(--fg-border-strong);position:relative;cursor:pointer;transition:background var(--dur);border:0;flex:0 0 auto}\ -.fg-toggle::after{content:'';position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform var(--dur)}\ -.fg-toggle.is-on{background:var(--fg-success)}\ -.fg-toggle.is-on::after{transform:translateX(17px)}\ -.fg-lock{width:24px;height:24px;border:0;background:transparent;color:var(--fg-text-faint);cursor:pointer;border-radius:5px;font-size:13px;flex:0 0 auto}\ -.fg-lock:hover{color:var(--fg-frozen);background:var(--fg-bg-input)}\ -.fg-lock.is-frozen{color:var(--fg-frozen)}\ -.fg-statusbar{display:flex;align-items:center;gap:var(--sp-2);height:24px;padding:0 var(--sp-3);background:var(--fg-bg-elev);border-top:1px solid var(--fg-border);font-size:var(--fs-xs);color:var(--fg-text-faint);flex:0 0 auto}\ -.fg-detail{padding:var(--sp-3) var(--sp-4);overflow-y:auto;flex:1}\ -.fg-field{display:flex;align-items:center;gap:var(--sp-2);padding:5px 0;border-bottom:1px solid var(--fg-border);min-width:0}\n.fg-field .fg-stepper{margin-left:auto;flex:0 0 auto}\ -.fg-field label{flex:0 0 96px;color:var(--fg-text-dim);font-size:var(--fs-sm)}\ -.fg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--sp-2) var(--sp-4)}\ -.fg-toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;z-index:2147483100;pointer-events:none}\ -.fg-toast{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-left:3px solid var(--fg-accent);color:var(--fg-text);padding:8px 14px;border-radius:var(--rad-md);font-size:var(--fs-sm);box-shadow:var(--sh-panel);animation:fgin var(--dur) var(--ease)}\ -.fg-toast.warn{border-left-color:var(--fg-warn)}.fg-toast.danger{border-left-color:var(--fg-danger)}.fg-toast.ok{border-left-color:var(--fg-success)}\ -@keyframes fgin{from{opacity:0;transform:translateY(6px)}to{opacity:1}}\ -.fg-launcher{position:fixed;pointer-events:auto;width:42px;height:42px;border-radius:50%;background:var(--fg-accent);color:#fff;border:0;cursor:pointer;font-size:18px;z-index:2147482999;box-shadow:var(--sh-panel);display:flex;align-items:center;justify-content:center}\ -.fg-launcher:hover{filter:brightness(1.1)}\ -.fg-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize}\ -.fg-resize::after{content:'';position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-right:2px solid var(--fg-text-faint);border-bottom:2px solid var(--fg-text-faint)}\ -.fg-empty{padding:var(--sp-5);text-align:center;color:var(--fg-text-faint);font-size:var(--fs-sm)}\ -.fg-confirm{position:fixed;pointer-events:auto;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);z-index:2147483200}\ -.fg-confirm__box{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-radius:var(--rad-lg);padding:var(--sp-4);max-width:340px;box-shadow:var(--sh-panel)}\ -.fg-confirm__box p{margin:0 0 var(--sp-4)}.fg-confirm__row{display:flex;justify-content:flex-end;gap:var(--sp-2)}\ -input::placeholder{color:var(--fg-text-faint)}\ -::-webkit-scrollbar{width:9px;height:9px}\ -::-webkit-scrollbar-track{background:transparent}\ -::-webkit-scrollbar-thumb{background:var(--fg-border-strong);border-radius:5px}\ -::-webkit-scrollbar-thumb:hover{background:var(--fg-text-faint)}"; - - // ---------- shadow host ---------- - var host = el('div', { id: 'forge-host' }); - host.style.cssText = 'position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important'; - document.body.appendChild(host); - var shadow = host.attachShadow({ mode: 'open' }); - var rootEl = el('div', { id: 'forge-root' }); - rootEl.setAttribute('data-theme', load('theme', 'dark')); - shadow.appendChild(el('style', { text: CSS })); - shadow.appendChild(rootEl); - - // Swallow events so panel interaction never leaks to the game. BUBBLE phase: the panel's own - // inputs receive the event first (target phase), then we stop it before it reaches document - // (where RPG Maker's Input/TouchInput listen). Capture phase would block the inputs themselves. - ['keydown', 'keyup', 'keypress', 'wheel', 'mousedown', 'mouseup', 'mousemove', 'click', 'dblclick', - 'pointerdown', 'pointerup', 'pointermove', 'pointercancel', 'touchstart', 'touchend', 'touchmove', 'touchcancel', 'contextmenu'].forEach(function (t) { - rootEl.addEventListener(t, function (e) { e.stopPropagation(); }, false); - }); - function isEditable(el) { return el && (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA'); } - rootEl.addEventListener('focusin', function (e) { if (isEditable(e.target)) API.CHEAT.uiFocused = true; }, true); - rootEl.addEventListener('focusout', function () { setTimeout(function () { API.CHEAT.uiFocused = !!(shadow.activeElement && isEditable(shadow.activeElement)); }, 0); }, true); - window.addEventListener('blur', function () { API.CHEAT.uiFocused = false; }); // never latch the game-input gate - // Backup engine-level gate: while a panel input is focused, drop the game's keyboard handler. - if (typeof Input !== 'undefined' && Input._onKeyDown) { var _okd = Input._onKeyDown; Input._onKeyDown = function (e) { if (API.CHEAT.uiFocused) return; _okd.call(this, e); }; } - if (typeof Input !== 'undefined' && Input._onKeyUp) { var _oku = Input._onKeyUp; Input._onKeyUp = function (e) { if (API.CHEAT.uiFocused) return; _oku.call(this, e); }; } - - // ---------- toasts ---------- - var toasts = el('div', { class: 'fg-toasts' }); rootEl.appendChild(toasts); - function toast(msg, kind) { var t = el('div', { class: 'fg-toast ' + (kind || ''), text: msg }); toasts.appendChild(t); setTimeout(function () { t.remove(); }, 2200); } - function confirmBox(msg, onYes) { - var box = el('div', { class: 'fg-confirm' }, el('div', { class: 'fg-confirm__box' }, [ - el('p', { text: msg }), - el('div', { class: 'fg-confirm__row' }, [ - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Cancel', onclick: function () { box.remove(); } }), - el('button', { class: 'fg-btn fg-btn--danger', text: 'Confirm', onclick: function () { box.remove(); onYes(); } }) - ]) - ])); - rootEl.appendChild(box); - } - - // ---------- panel skeleton ---------- - var vw = window.innerWidth || 816, vh = window.innerHeight || 624; - // Default size fits the window (many MV games are ~816x624); leave a margin. - var st = load('panel', { x: 16, y: 16, w: Math.min(880, vw - 32), h: Math.min(560, vh - 32) }); - st.w = Math.max(420, Math.min(st.w, vw - 8)); st.h = Math.max(320, Math.min(st.h, vh - 8)); - st.x = Math.max(0, Math.min(st.x, vw - st.w)); st.y = Math.max(0, Math.min(st.y, vh - st.h)); // keep fully on-screen - var panel = el('div', { class: 'fg-panel' }); - panel.style.left = st.x + 'px'; panel.style.top = st.y + 'px'; panel.style.width = st.w + 'px'; panel.style.height = st.h + 'px'; - var search = el('input', { class: 'fg-search', type: 'text', placeholder: 'Search… (Ctrl+K)' }); - var titlebar = el('div', { class: 'fg-titlebar' }, [ - el('span', { class: 'fg-brand', html: 'Forge' }), - search, - el('button', { class: 'fg-iconbtn', title: 'Rescan', html: ICONS.refresh, onclick: function () { render(); toast('Rescanned'); } }), - el('button', { class: 'fg-iconbtn', title: 'Theme', html: ICONS.theme, onclick: function () { var t = rootEl.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; rootEl.setAttribute('data-theme', t); store('theme', t); } }), - el('button', { class: 'fg-iconbtn', title: 'Close (F10)', html: ICONS.close, onclick: function () { hide(); } }) - ]); - var rail = el('div', { class: 'fg-rail' }); - var content = el('div', { class: 'fg-content' }); - var statusbar = el('div', { class: 'fg-statusbar' }); - panel.appendChild(titlebar); - panel.appendChild(el('div', { class: 'fg-body' }, [rail, content])); - panel.appendChild(statusbar); - var resize = el('div', { class: 'fg-resize' }); panel.appendChild(resize); - rootEl.appendChild(panel); - - // ---------- launcher (docks to bottom-right corner by default; 'launcherPos' is a fresh key so - // any stale mid-screen position from older builds is ignored) ---------- - var lp = load('launcherPos', { x: vw - 56, y: vh - 56 }); - lp.x = Math.max(4, Math.min(lp.x, vw - 46)); lp.y = Math.max(4, Math.min(lp.y, vh - 46)); - var launcher = el('button', { class: 'fg-launcher', html: ICONS.tool, title: 'Forge (F10)' }); - launcher.style.left = lp.x + 'px'; launcher.style.top = lp.y + 'px'; - launcher.addEventListener('click', function (e) { if (!launcher._dragged) toggle(); }); - rootEl.appendChild(launcher); - makeDraggable(launcher, launcher, function (x, y) { store('launcherPos', { x: x, y: y }); }, true); - - // ---------- drag / resize ---------- - function makeDraggable(handle, target, onEnd, isLauncher) { - handle.addEventListener('mousedown', function (e) { - if (e.target.closest && e.target.closest('input,button.fg-iconbtn')) return; - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ox = parseInt(target.style.left) || 0, oy = parseInt(target.style.top) || 0, moved = false; - if (isLauncher) target._dragged = false; - function mv(ev) { ev.stopPropagation(); var dx = ev.clientX - sx, dy = ev.clientY - sy; if (Math.abs(dx) + Math.abs(dy) > 3) moved = true; var nx = Math.max(0, Math.min(window.innerWidth - target.offsetWidth, ox + dx)), ny = Math.max(0, Math.min(window.innerHeight - 30, oy + dy)); target.style.left = nx + 'px'; target.style.top = ny + 'px'; if (isLauncher) target._dragged = moved; } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); if (onEnd) onEnd(parseInt(target.style.left), parseInt(target.style.top)); setTimeout(function () { if (isLauncher) target._dragged = false; }, 0); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - } - makeDraggable(titlebar, panel, function (x, y) { st.x = x; st.y = y; store('panel', st); }); - resize.addEventListener('mousedown', function (e) { - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ow = panel.offsetWidth, oh = panel.offsetHeight; - function mv(ev) { ev.stopPropagation(); var w = Math.max(480, ow + ev.clientX - sx), h = Math.max(360, oh + ev.clientY - sy); panel.style.width = w + 'px'; panel.style.height = h + 'px'; if (activeRenderer && activeRenderer.onResize) activeRenderer.onResize(); } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); st.w = panel.offsetWidth; st.h = panel.offsetHeight; store('panel', st); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - - // ---------- reusable virtualized list ---------- - function VirtualList(opts) { - // opts: rowH, getModel()->[], renderRow(rowEl, item), matches(item, query) - var listEl = el('div', { class: 'fg-list' }); - var sizer = el('div', { class: 'fg-list__sizer' }); - var win = el('div', { class: 'fg-list__window' }); - sizer.appendChild(win); listEl.appendChild(sizer); - var rowH = opts.rowH || 30, pool = [], model = [], view = [], query = ''; - // ONE delegated row click (recycled rows must not accumulate per-draw listeners). - if (opts.onRowClick) listEl.addEventListener('click', function (e) { var r = e.target && e.target.closest ? e.target.closest('.fg-row') : null; if (r && r._item) opts.onRowClick(r._item); }); - function rebuild() { model = opts.getModel() || []; applyFilter(); } - function applyFilter() { - view = query ? model.filter(function (it) { return opts.matches(it, query); }) : model; - sizer.style.height = (view.length * rowH) + 'px'; - var em = listEl.querySelector('.fg-empty'); - if (!view.length) { pool.forEach(function (r) { r.style.display = 'none'; }); if (!em) listEl.appendChild(el('div', { class: 'fg-empty', text: 'Nothing here' })); } - else if (em) em.remove(); - lastFirst = -1; draw(true); // content changed -> force re-render - } - var lastFirst = -1; - function draw(force) { - var scroll = listEl.scrollTop, h = listEl.clientHeight || 400; - var first = Math.max(0, Math.floor(scroll / rowH) - 4); - if (!force && first === lastFirst) return; // window unchanged during scroll -> skip re-render - lastFirst = first; - var count = Math.ceil(h / rowH) + 8; - var last = Math.min(view.length, first + count); - win.style.transform = 'translateY(' + (first * rowH) + 'px)'; - var need = last - first; - while (pool.length < need) { var r = el('div', { class: 'fg-row' }); win.appendChild(r); pool.push(r); } - for (var i = 0; i < pool.length; i++) { - var r = pool[i]; - if (i < need) { r.style.display = 'flex'; r._item = view[first + i]; opts.renderRow(r, view[first + i]); } else { r.style.display = 'none'; r._item = null; } - } - } - var raf = null; - listEl.addEventListener('scroll', function () { if (raf) return; raf = requestAnimationFrame(function () { raf = null; draw(false); }); }); - return { el: listEl, rebuild: rebuild, applyFilter: applyFilter, draw: function () { draw(true); }, setQuery: function (q) { query = q; applyFilter(); }, onResize: function () { draw(true); }, - refresh: function () { draw(true); } }; - } - - // numeric stepper control - function stepper(getVal, setVal, opts) { - opts = opts || {}; - var wrap = el('div', { class: 'fg-stepper' }); - var input = el('input', { class: 'fg-num', type: 'text' }); - function sync() { input.value = getVal(); } - function commit(v) { setVal(v); sync(); if (opts.after) opts.after(); } - [['−100', -100], ['−1', -1]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - wrap.appendChild(input); - [['+1', 1], ['+100', 100]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - input.addEventListener('keydown', function (e) { if (e.key === 'Enter') { commit(parse(input.value)); input.blur(); } else if (e.key === 'Escape') { sync(); input.blur(); } }); - input.addEventListener('blur', function () { commit(parse(input.value)); }); - function parse(s) { var n = Number(String(s).replace(/[^0-9.\-]/g, '')); return isNaN(n) ? getVal() : n; } - sync(); - return { el: wrap, sync: sync }; - } - - // ---------- sections ---------- - var activeRenderer = null, currentSection = null; - var SECTIONS = []; - function section(id, icon, title, builder) { SECTIONS.push({ id: id, icon: icon, title: title, builder: builder }); } - - function listSection(getModel, renderRow, matches, headExtra) { - return function (body, head) { - if (headExtra) headExtra(head); - var vl = VirtualList({ getModel: getModel, renderRow: renderRow, matches: matches || defaultMatch }); - body.appendChild(vl.el); - vl.rebuild(); - return { vl: vl, onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return (getModel() || []).length; } }; - }; - } - function defaultMatch(it, q) { q = q.toLowerCase(); return String(it.id) === q || (it.name && it.name.toLowerCase().indexOf(q) >= 0); } - - // Variables - section('vars', ICONS.vars, 'Variables', listSection( - function () { return API.ops.vars.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isVarFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.vars.get(it.id); }, function (v) { API.ops.vars.set(it.id, v); if (API.locks.isVarFrozen(it.id)) API.locks.freezeVar(it.id, true); }, {}); - val.appendChild(sp.el); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isVarFrozen(it.id), function (on) { API.locks.freezeVar(it.id, on); refreshActive(); })); - } - )); - - // Switches - section('switches', ICONS.switches, 'Switches', listSection( - function () { return API.ops.switches.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isSwitchFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var tg = el('button', { class: 'fg-toggle' + (API.ops.switches.get(it.id) ? ' is-on' : '') }); - tg.addEventListener('click', function () { API.ops.switches.set(it.id, !API.ops.switches.get(it.id)); if (API.locks.isSwitchFrozen(it.id)) API.locks.freezeSwitch(it.id, true); tg.classList.toggle('is-on', API.ops.switches.get(it.id)); }); - val.appendChild(tg); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isSwitchFrozen(it.id), function (on) { API.locks.freezeSwitch(it.id, on); refreshActive(); })); - } - )); - - // Items / Weapons / Armors (segmented) - section('inv', ICONS.inv, 'Items', function (body, head) { - var kind = 'item'; - var seg = el('div', { class: 'fg-segmented' }); - ['item', 'weapon', 'armor'].forEach(function (k) { - var b = el('button', { class: k === kind ? 'is-active' : '', text: k.charAt(0).toUpperCase() + k.slice(1) + 's' }); - b.addEventListener('click', function () { kind = k; seg.querySelectorAll('button').forEach(function (x) { x.classList.remove('is-active'); }); b.classList.add('is-active'); vl.rebuild(); }); - seg.appendChild(b); - }); - head.appendChild(seg); - var vl = VirtualList({ - getModel: function () { return API.ops.inv.list(kind); }, - matches: defaultMatch, - renderRow: function (row, it) { - row.className = 'fg-row' + (API.locks.isItemFrozen(kind, it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.description || it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.inv.count(kind, it.id); }, function (v) { API.ops.inv.setCount(kind, it.id, v); }, {}); - val.appendChild(sp.el); - val.appendChild(el('button', { class: 'fg-step', text: 'Max', style: 'width:auto;padding:0 6px', onclick: function () { API.ops.inv.max(kind, it.id); sp.sync(); } })); - row.appendChild(val); - row.appendChild(lockBtn(API.locks.isItemFrozen(kind, it.id), function (on) { API.locks.freezeItem(kind, it.id, on); refreshActive(); })); - } - }); - body.appendChild(vl.el); vl.rebuild(); - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.inv.list(kind).length; } }; - }); - - // Actors (master-detail) - section('actors', ICONS.actors, 'Actors', function (body) { - var detail = el('div', { class: 'fg-detail' }); - var selectedId = null; - var vl = VirtualList({ - rowH: 30, matches: defaultMatch, - getModel: function () { return API.ops.actors.list(); }, - onRowClick: function (it) { showActor(it.id); }, - renderRow: function (row, it) { - row.className = 'fg-row' + (it.id === selectedId ? ' is-selected' : ''); - row.style.cursor = 'pointer'; - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', html: (it.inParty ? '' : '') + escapeHtml(it.name) })); - row.appendChild(el('span', { class: 'fg-cell--val', text: 'Lv ' + it.level })); - } - }); - var split = el('div', { style: 'flex:1;display:flex;min-height:0' }); - var left = el('div', { style: 'flex:0 0 240px;display:flex;flex-direction:column;border-right:1px solid var(--fg-border)' }); - left.appendChild(vl.el); - split.appendChild(left); split.appendChild(detail); - body.appendChild(split); vl.rebuild(); - var firstA = API.ops.actors.list()[0]; // auto-select first actor so detail isn't empty - if (firstA) showActor(firstA.id); - function showActor(id) { - selectedId = id; vl.draw(); // re-highlight the selected row in the (virtualized) list - var a = API.ops.actors.get(id); detail.innerHTML = ''; - if (!a) { detail.appendChild(el('div', { class: 'fg-empty', text: 'Actor not initialized (start a game first)' })); return; } - detail.appendChild(el('h2', { text: a.name + ' · Lv ' + a.level, style: 'margin:0 0 12px;font-size:15px' })); - var grid = el('div', { class: 'fg-grid' }); - grid.appendChild(numField('Level', function () { return API.ops.actors.get(id).level; }, function (v) { API.ops.actors.setLevel(id, v); showActor(id); })); - grid.appendChild(numField('EXP', function () { return API.ops.actors.get(id).exp; }, function (v) { API.ops.actors.setExp(id, v); showActor(id); })); - grid.appendChild(statField('HP', id, 'hp', function () { return API.ops.actors.get(id).hp; }, function () { return API.ops.actors.get(id).mhp; }, API.ops.actors.setHp)); - grid.appendChild(statField('MP', id, 'mp', function () { return API.ops.actors.get(id).mp; }, function () { return API.ops.actors.get(id).mmp; }, API.ops.actors.setMp)); - grid.appendChild(statField('TP', id, 'tp', function () { return API.ops.actors.get(id).tp; }, function () { return 100; }, API.ops.actors.setTp)); - a.params.forEach(function (p) { grid.appendChild(numField(p.name, function () { return API.ops.actors.get(id).params[p.id].value; }, function (v) { API.ops.actors.setParam(id, p.id, v); })); }); - detail.appendChild(grid); - var actbar = el('div', { style: 'display:flex;gap:8px;margin:14px 0' }, [ - el('button', { class: 'fg-btn', text: 'Recover All', onclick: function () { API.ops.actors.recover(id); showActor(id); } }), - el('button', { class: 'fg-btn', text: a.inParty ? 'Remove from Party' : 'Add to Party', onclick: function () { if (a.inParty) API.ops.actors.removeFromParty(id); else API.ops.actors.addToParty(id); vl.rebuild(); showActor(id); } }) - ]); - detail.appendChild(actbar); - // skills - detail.appendChild(el('h2', { text: 'Skills', style: 'font-size:13px;margin:10px 0 4px;color:var(--fg-text-dim)' })); - var skbox = el('div', { style: 'max-height:140px;overflow:auto;border:1px solid var(--fg-border);border-radius:7px' }); - a.skills.forEach(function (s) { - var r = el('div', { class: 'fg-field', style: 'padding:3px 10px' }, [ - el('span', { style: 'flex:1;font-size:12px', text: s.id + ': ' + s.name }), - el('button', { class: 'fg-btn fg-btn--ghost', text: s.learned ? 'Forget' : 'Learn', onclick: function () { if (s.learned) API.ops.actors.forget(id, s.id); else API.ops.actors.learn(id, s.id); showActor(id); } }) - ]); - skbox.appendChild(r); - }); - detail.appendChild(skbox); - } - function numField(label, get, set) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, set, {}).el); - f.appendChild(el('span', { style: 'flex:0 0 24px;width:24px' })); // empty lock slot -> steppers align with HP/MP/TP rows - return f; - } - function statField(label, id, stat, get, getMax, setFn) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, function (v) { setFn(id, v); if (API.locks.isStatFrozen(id, stat)) API.locks.freezeStat(id, stat, true); }, {}).el); - f.appendChild(lockBtn(API.locks.isStatFrozen(id, stat), function (on) { API.locks.freezeStat(id, stat, on); })); - return f; - } - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.actors.list().length; } }; - }); - - // Party / Main - section('party', ICONS.party, 'Party', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - d.appendChild(el('div', { class: 'fg-field' }, [ - el('label', { text: 'Gold' }), - stepper(function () { return API.ops.gold.get(); }, function (v) { API.ops.gold.set(v); }, {}).el, - lockBtn(API.LOCK.gold != null, function (on) { API.locks.freezeGold(on); rebuild(); }) - ])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Steps' }), el('span', { text: API.ops.party.steps() })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Members' }), el('span', { text: API.ops.party.members().map(function (m) { return m.name; }).join(', ') || '(none)' })])); - d.appendChild(el('h2', { text: 'Quick actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Gold = Max', onclick: function () { API.ops.gold.set(API.ops.gold.max()); rebuild(); toast('Gold maxed', 'ok'); } }), - el('button', { class: 'fg-btn', text: 'Heal Party', onclick: function () { API.ops.party.members().forEach(function (m) { API.ops.actors.recover(m.id); }); toast('Party healed', 'ok'); } }) - ])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.party.members().length; } }; - }); - - // Map / Teleport - section('map', ICONS.map, 'Map', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var cur = API.ops.map.current(); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Current' }), el('span', { text: 'Map ' + cur.mapId + ' @ (' + cur.x + ',' + cur.y + ')' })])); - var sel = el('select', { class: 'fg-search', style: 'flex:1' }); - API.ops.map.list().forEach(function (m) { sel.appendChild(el('option', { value: m.id, text: m.id + ': ' + m.name })); }); - sel.value = cur.mapId; - var xIn = el('input', { class: 'fg-num', value: cur.x }), yIn = el('input', { class: 'fg-num', value: cur.y }); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Teleport to' }), sel])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'X / Y' }), xIn, yIn, - el('button', { class: 'fg-btn', text: 'Go', onclick: function () { API.ops.map.teleport(Number(sel.value), Number(xIn.value), Number(yIn.value), 0, 2); toast('Teleporting…', 'ok'); } })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Noclip' }), - (function () { var t = el('button', { class: 'fg-toggle' + (API.ops.map.isNoclip() ? ' is-on' : '') }); t.addEventListener('click', function () { var on = !API.ops.map.isNoclip(); API.ops.map.noclip(on); t.classList.toggle('is-on', on); }); return t; })()])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Move speed' }), - stepper(function () { return (window.$gamePlayer && $gamePlayer._moveSpeed) || 4; }, function (v) { API.ops.map.speed(v); }, {}).el])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.map.list().length; } }; - }); - - // Common Events - section('commonev', ICONS.commonev, 'Common Ev.', listSection( - function () { return API.ops.commonev.list(); }, - function (row, it) { - row.className = 'fg-row'; row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - row.appendChild(el('span', { class: 'fg-cell--val' }, el('button', { class: 'fg-btn', text: 'Run', onclick: function () { confirmBox('Run common event ' + it.id + ' (' + it.name + ')?', function () { API.ops.commonev.run(it.id); toast('Reserved CE ' + it.id, 'ok'); }); } }))); - } - )); - - // Data Lock (aggregated frozen targets) - section('locks', ICONS.locks, 'Data Lock', function (body, head) { - head.appendChild(el('button', { class: 'fg-btn fg-btn--danger', text: 'Unfreeze all', onclick: function () { API.locks.clearAll(); rebuild(); toast('All unfrozen'); } })); - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var s = API.locks.summary(); - if (!s.length) { d.appendChild(el('div', { class: 'fg-empty', text: 'No frozen values. Use the lock icon on any row to freeze it.' })); return; } - s.forEach(function (row) { - d.appendChild(el('div', { class: 'fg-field' }, [ - el('span', { style: 'flex:1;font-size:12px', text: row.label }), - el('span', { style: 'color:var(--fg-frozen);font-family:var(--font-mono);margin-right:8px', text: String(row.value) }), - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Unfreeze', onclick: function () { unfreeze(row); rebuild(); } }) - ])); - }); - } - function unfreeze(row) { - if (row.type === 'var') API.locks.freezeVar(row.id, false); - else if (row.type === 'switch') API.locks.freezeSwitch(row.id, false); - else if (row.type === 'item') { var p = row.key.split(':'); API.LOCK.items.delete(row.key); } - else if (row.type === 'stat') { API.LOCK.stats.delete(row.key); } - else if (row.type === 'gold') API.locks.freezeGold(false); - else if (row.type === 'noclip') API.ops.map.noclip(false); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.locks.summary().length; } }; - }); - - // Battle cheats - section('battle', ICONS.battle, 'Cheats', function (body) { - var d = el('div', { class: 'fg-detail' }); - function tog(label, get, set) { - var t = el('button', { class: 'fg-toggle' + (get() ? ' is-on' : '') }); - t.addEventListener('click', function () { var v = !get(); set(v); t.classList.toggle('is-on', v); }); - return el('div', { class: 'fg-field' }, [el('label', { text: label }), t]); - } - d.appendChild(tog('God mode (blocks HP loss)', function () { return API.CHEAT.god; }, API.cheats.setGod)); - d.appendChild(tog('One-hit kill', function () { return API.CHEAT.ohko; }, API.cheats.setOhko)); - d.appendChild(tog('No random encounters', function () { return API.CHEAT.noEncounter; }, API.cheats.setNoEncounter)); - // ---- game speed (speedhack) ---- - d.appendChild(el('h2', { text: 'Game speed', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - var speedRow = el('div', { class: 'fg-field' }); - speedRow.appendChild(el('label', { text: 'Speed' })); - var seg = el('div', { class: 'fg-segmented', style: 'flex-wrap:wrap' }); - var presets = [['0.5×', 0.5], ['1×', 1], ['2×', 2], ['3×', 3], ['5×', 5], ['8×', 8]]; - function keyLabel(k) { return k === 'Control' ? 'Ctrl' : (k === ' ' ? 'Space' : k); } - // In KEY mode the highlight = the ARMED target (_speedBoost); in ALWAYS-ON mode = the live speed. - function targetSpeed() { return API._speedUseKey ? (API._speedBoost || 2) : (API.CHEAT.speed || 1); } - function syncSeg() { var t = targetSpeed(); Array.prototype.forEach.call(seg.children, function (b) { b.classList.toggle('is-active', Number(b.dataset.v) === t); }); if (typeof custom !== 'undefined' && custom) custom.value = t; } - // Picking a speed ARMS the target. It only changes the live game speed if key-mode is OFF, or if - // the speedhack is already active (then it live-updates). So buttons respect the key toggle. - function pick(v) { - API._speedBoost = v; store('speedBoost', v); - if (!API._speedUseKey || API.CHEAT.speed !== 1) { API.cheats.setSpeed(v); toast('Speed ' + v + '×', 'ok'); } - else { toast('Armed ' + v + '× — hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - syncSeg(); - } - presets.forEach(function (p) { - var b = el('button', { text: p[0] }); b.dataset.v = p[1]; - b.addEventListener('click', function () { pick(p[1]); }); - seg.appendChild(b); - }); - speedRow.appendChild(seg); - d.appendChild(speedRow); - var customRow = el('div', { class: 'fg-field' }); - customRow.appendChild(el('label', { text: 'Custom ×' })); - var custom = el('input', { class: 'fg-num', type: 'text', value: targetSpeed() }); - custom.addEventListener('keydown', function (e) { if (e.key === 'Enter') { pick(Number(custom.value) || 1); custom.blur(); } }); - custom.addEventListener('blur', function () { pick(Number(custom.value) || 1); }); - customRow.appendChild(custom); - d.appendChild(customRow); - - // ---- use-key toggle (off => speed is always on) ---- - var useKeyRow = el('div', { class: 'fg-field' }); - useKeyRow.appendChild(el('label', { text: 'Use hold key' })); - var ukTog = el('button', { class: 'fg-toggle' + (API._speedUseKey ? ' is-on' : '') }); - ukTog.addEventListener('click', function () { - speedHeld = false; // changing mode ends any active hold so a later key-release won't reset speed - var on = !API._speedUseKey; API._speedUseKey = on; store('speedUseKey', on); ukTog.classList.toggle('is-on', on); - keyRow.style.display = on ? '' : 'none'; - if (on) { API.cheats.setSpeed(1); toast('Speed: hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - else { API.cheats.setSpeed(API._speedBoost || 2); toast('Speed: always on at ' + (API._speedBoost || 2) + '×', 'ok'); } - syncSeg(); - }); - useKeyRow.appendChild(ukTog); - d.appendChild(useKeyRow); - - // ---- rebindable key ---- - var keyRow = el('div', { class: 'fg-field' }); - keyRow.appendChild(el('label', { text: 'Hold key' })); - var keyBtn = el('button', { class: 'fg-btn', text: keyLabel(API._speedKey) }); - keyBtn.addEventListener('click', function () { - keyBtn.textContent = 'Press a key…'; API._capturingSpeedKey = true; - function cap(ev) { - ev.preventDefault(); ev.stopPropagation(); - window.removeEventListener('keydown', cap, true); API._capturingSpeedKey = false; - if (ev.key !== 'Escape') { API._speedKey = ev.key; store('speedKey', ev.key); } - keyBtn.textContent = keyLabel(API._speedKey); - } - window.addEventListener('keydown', cap, true); - }); - keyRow.appendChild(keyBtn); - keyRow.style.display = API._speedUseKey ? '' : 'none'; - d.appendChild(keyRow); - syncSeg(); - d.appendChild(el('h2', { text: 'In-battle actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Instant Win', onclick: function () { API.cheats.instantWin(); toast(API.ops.battle.inBattle() ? 'Enemies downed' : 'Not in battle', API.ops.battle.inBattle() ? 'ok' : 'warn'); } }), - el('button', { class: 'fg-btn', text: 'Flee / Abort', onclick: function () { API.cheats.flee(); } }) - ])); - body.appendChild(d); - return { refresh: function () {}, count: function () { return 0; } }; - }); - - // ---------- render / navigation ---------- - function escapeHtml(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } - function lockBtn(frozen, onToggle) { - var b = el('button', { class: 'fg-lock' + (frozen ? ' is-frozen' : ''), html: frozen ? ICONS.lock : ICONS.unlock, title: 'Freeze value' }); - b.addEventListener('click', function () { frozen = !frozen; b.className = 'fg-lock' + (frozen ? ' is-frozen' : ''); b.innerHTML = frozen ? ICONS.lock : ICONS.unlock; onToggle(frozen); }); - return b; - } - function refreshActive() { if (activeRenderer && activeRenderer.refresh) activeRenderer.refresh(); updateStatus(); } - - SECTIONS.forEach(function (s) { - var item = el('button', { class: 'fg-rail__item', title: s.title }, [el('span', { class: 'ic', html: s.icon }), el('span', { text: s.title.split(' ')[0] })]); - item.addEventListener('click', function () { selectSection(s.id); }); - s._rail = item; rail.appendChild(item); - }); - - function selectSection(id) { - currentSection = id; - SECTIONS.forEach(function (s) { s._rail.classList.toggle('is-active', s.id === id); }); - render(); - store('lastSection', id); - } - function render() { - var s = SECTIONS.filter(function (x) { return x.id === currentSection; })[0]; if (!s) return; - content.innerHTML = ''; - var head = el('div', { class: 'fg-subtoolbar' }); - var sectionHead = el('div', { class: 'fg-section-head' }, [el('h2', { text: s.title }), el('span', { class: 'fg-count', text: '' }), el('span', { class: 'fg-spacer' })]); - content.appendChild(sectionHead); - content.appendChild(head); - var body = el('div', { style: 'flex:1;display:flex;flex-direction:column;min-height:0' }); - content.appendChild(body); - activeRenderer = s.builder(body, head) || {}; - if (head.children.length === 0) head.remove(); - var cnt = activeRenderer.count ? activeRenderer.count() : 0; - sectionHead.querySelector('.fg-count').textContent = cnt + (cnt === 1 ? ' entry' : ' entries'); - // Search only applies to list sections (those expose setQuery); hide it on form sections. - var searchable = !!activeRenderer.setQuery; - // keep the search box's flex space (invisible, not removed) so the titlebar buttons stay anchored right - search.style.visibility = searchable ? 'visible' : 'hidden'; - if (searchable && search.value) activeRenderer.setQuery(search.value.trim()); - updateStatus(); - } - function updateStatus() { - var frozen = API.locks.summary().length; - statusbar.innerHTML = ''; - statusbar.appendChild(el('span', { text: API.env.IS_MZ ? 'RPG Maker MZ' : 'RPG Maker MV' })); - statusbar.appendChild(el('span', { class: 'fg-spacer', style: 'flex:1' })); - statusbar.appendChild(el('span', { text: (frozen ? frozen + ' frozen · ' : '') + 'F10 to toggle' })); - } - - search.addEventListener('input', debounce(function () { if (activeRenderer && activeRenderer.setQuery) activeRenderer.setQuery(search.value.trim()); }, 120)); - function debounce(fn, ms) { var t; return function () { clearTimeout(t); t = setTimeout(fn, ms); }; } - - // ---------- show / hide / hotkeys ---------- - var visible = false; - function show() { visible = true; try { document.body.appendChild(host); } catch (e) {} panel.style.display = 'flex'; launcher.style.display = 'none'; if (!currentSection) selectSection(load('lastSection', 'vars')); else render(); } - function hide() { visible = false; panel.style.display = 'none'; launcher.style.display = 'flex'; API.CHEAT.uiFocused = false; if (typeof Input !== 'undefined' && Input.clear) Input.clear(); } - function toggle() { if (visible) hide(); else show(); } - panel.style.display = 'none'; - - // Speed key = HOLD to fast-forward: while the key is held the game runs at the armed boost speed; - // on release it returns to 1x. Only active when the "use key" option is on. Gated to !uiFocused so - // holding a key while typing in the panel never fast-forwards. - var speedHeld = false; - function isSpeedKey(k) { var sk = API._speedKey || 'Control'; return k === sk || (sk === 'Control' && k === 'Ctrl'); } - function holdStart() { if (!speedHeld) { speedHeld = true; API.cheats.setSpeed(API._speedBoost || 2); toast('Fast-forward ' + API.CHEAT.speed + '×', 'ok'); } } - function holdEnd() { if (speedHeld) { speedHeld = false; API.cheats.setSpeed(1); } } - window.addEventListener('keydown', function (e) { - if (API._capturingSpeedKey) return; // a key-rebind is in progress - var key = e.key || ''; - if (key === (API._hotkey || 'F10')) { e.preventDefault(); toggle(); return; } - if (visible && (e.ctrlKey || e.metaKey) && key.toLowerCase() === 'k') { e.preventDefault(); search.focus(); search.select(); } - else if (visible && key === 'Escape') { if (shadow.activeElement && shadow.activeElement.tagName === 'INPUT') shadow.activeElement.blur(); else hide(); } - if (API._speedUseKey && isSpeedKey(key) && !API.CHEAT.uiFocused) holdStart(); // hold to fast-forward - }, true); - window.addEventListener('keyup', function (e) { - if (API._capturingSpeedKey) return; - if (isSpeedKey(e.key || '')) holdEnd(); - }, true); - window.addEventListener('blur', holdEnd); // alt-tab / focus loss -> stop fast-forward (no stuck key) - - // expose - return { - show: show, hide: hide, toggle: toggle, toast: toast, render: render, - isVisible: function () { return visible; }, root: rootEl, host: host, - select: selectSection, sections: SECTIONS.map(function (s) { return s.id; }) - }; - } - -})(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this)); - -/* ---- MZ scaffolding (registerCommand + start-open) ---- */ -(function () { - var P = (typeof PluginManager !== 'undefined' && PluginManager.parameters) ? PluginManager.parameters('Forge_MZ') : {}; - if (window.Forge) { - window.Forge._hotkey = (P.hotkey || 'F10').trim(); - window.Forge._itemMaxOverride = Number(P.itemMaxOverride) || 0; - try { if (!localStorage.getItem('forge:speedKey')) window.Forge._speedKey = (P.speedKey || 'Control').trim(); } catch (e) { window.Forge._speedKey = (P.speedKey || 'Control').trim(); } - } - if (typeof PluginManager !== 'undefined' && PluginManager.registerCommand) { - PluginManager.registerCommand('Forge_MZ', 'open', function () { if (window.Forge && window.Forge.ui) window.Forge.ui.toggle(); }); - } - if (String(P.startOpen) === 'true' && typeof Scene_Map !== 'undefined') { - var _s = Scene_Map.prototype.start; - Scene_Map.prototype.start = function () { _s.call(this); if (window.Forge && window.Forge.ui && !window.Forge.ui.isVisible()) window.Forge.ui.show(); }; - } -})(); - +(function(){var e=document.createElement(`style`);e.textContent=`@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:#ff6568;--color-orange-400:#ff8b1a;--color-yellow-300:#ffe02a;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-fuchsia-500:#e12afb;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c10;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}@supports (color:lab(0% 0 0)){:root,:host{--color-red-400:lab(63.7053% 60.745 31.3109);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-yellow-300:lab(89.7033% -.480294 84.4917);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-fuchsia-500:lab(56.4256% 83.132 -64.639);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425)}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-left:20px}:where(select:is([multiple],[size])) optgroup option{padding-left:20px}::-webkit-file-upload-button{margin-right:4px}::file-selector-button{margin-right:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{top:0;bottom:0;left:0;right:0}.top-0{top:0}.top-4{top:calc(var(--spacing) * 4)}.top-\\[-0\\.5px\\]{top:-.5px}.top-\\[4px\\]{top:4px}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.left-4{left:calc(var(--spacing) * 4)}.left-\\[4px\\]{left:4px}.left-\\[24px\\]{left:24px}.z-2147482999{z-index:2147482999}.z-2147483000{z-index:2147483000}.z-2147483647{z-index:2147483647}.m-0{margin:0}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-0{min-height:0}.w-1\\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(140px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(160px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(260px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(300px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{grid-gap:calc(var(--spacing) * 2);gap:calc(var(--spacing) * 2)}.gap-3{grid-gap:calc(var(--spacing) * 3);gap:calc(var(--spacing) * 3)}.gap-4{grid-gap:calc(var(--spacing) * 4);gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(var(--spacing) * var(--tw-space-y-reverse));margin-bottom:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(var(--spacing) * var(--tw-space-x-reverse));margin-right:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 1.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border\\/50>:not(:last-child)){border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\\[\\#2a2d3a\\]{border-color:#2a2d3a}.border-accent{border-color:var(--color-accent)}.border-accent\\/30{border-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/30{border-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.border-accent\\/50{border-color:rgba(99,102,241,.5)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\\/50{border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.border-danger\\/30{border-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.border-danger\\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-fuchsia-500\\/30{border-color:rgba(225,42,251,.3)}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\\/30{border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.border-gray-500\\/30{border-color:rgba(106,114,130,.3)}@supports (color:color-mix(in lab, red, red)){.border-gray-500\\/30{border-color:color-mix(in oklab, var(--color-gray-500) 30%, transparent)}}.border-ok\\/30{border-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.border-ok\\/30{border-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.border-warn\\/30{border-color:rgba(251,146,60,.3)}@supports (color:color-mix(in lab, red, red)){.border-warn\\/30{border-color:color-mix(in oklab, var(--color-warn) 30%, transparent)}}.border-yellow-500\\/30{border-color:rgba(237,178,0,.3)}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-l-frozen{border-left-color:var(--color-frozen)}.bg-\\[\\#1a1d24\\]{background-color:#1a1d24}.bg-\\[\\#3a3f4d\\]{background-color:#3a3f4d}.bg-\\[\\#7ba4ff\\]\\/10{background-color:rgba(123,164,255,.1);background-color:lab(67.3388% 4.90472 -50.2993/.1)}.bg-\\[\\#13151a\\]{background-color:#13151a}.bg-accent{background-color:var(--color-accent)}.bg-accent-weak{background-color:var(--color-accent-weak)}.bg-accent\\/5{background-color:rgba(99,102,241,.05)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/5{background-color:color-mix(in oklab, var(--color-accent) 5%, transparent)}}.bg-accent\\/10{background-color:rgba(99,102,241,.1)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-accent\\/20{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/20{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.bg-bg{background-color:var(--color-bg)}.bg-bg2{background-color:var(--color-bg2)}.bg-border{background-color:var(--color-border)}.bg-border\\/50{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.bg-border\\/50{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\\/10{background-color:rgba(239,68,68,.1)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-danger\\/20{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/20{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.bg-frozen\\/20{background-color:rgba(139,92,246,.2)}@supports (color:color-mix(in lab, red, red)){.bg-frozen\\/20{background-color:color-mix(in oklab, var(--color-frozen) 20%, transparent)}}.bg-fuchsia-500\\/10{background-color:rgba(225,42,251,.1)}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-500\\/10{background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.bg-gray-500\\/10{background-color:rgba(106,114,130,.1)}@supports (color:color-mix(in lab, red, red)){.bg-gray-500\\/10{background-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.bg-ok{background-color:var(--color-ok)}.bg-ok\\/10{background-color:rgba(16,185,129,.1)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/10{background-color:color-mix(in oklab, var(--color-ok) 10%, transparent)}}.bg-ok\\/20{background-color:rgba(16,185,129,.2)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/20{background-color:color-mix(in oklab, var(--color-ok) 20%, transparent)}}.bg-transparent{background-color:transparent}.bg-warn\\/10{background-color:rgba(251,146,60,.1)}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-yellow-500\\/10{background-color:rgba(237,178,0,.1)}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\\/10{background-color:color-mix(in oklab, var(--color-yellow-500) 10%, transparent)}}.fill-current{fill:currentColor}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-left:var(--spacing);padding-right:var(--spacing)}.px-1\\.5{padding-left:calc(var(--spacing) * 1.5);padding-right:calc(var(--spacing) * 1.5)}.px-2{padding-left:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 2)}.px-2\\.5{padding-left:calc(var(--spacing) * 2.5);padding-right:calc(var(--spacing) * 2.5)}.px-3{padding-left:calc(var(--spacing) * 3);padding-right:calc(var(--spacing) * 3)}.px-3\\.5{padding-left:calc(var(--spacing) * 3.5);padding-right:calc(var(--spacing) * 3.5)}.px-4{padding-left:calc(var(--spacing) * 4);padding-right:calc(var(--spacing) * 4)}.py-0\\.5{padding-top:calc(var(--spacing) * .5);padding-bottom:calc(var(--spacing) * .5)}.py-1{padding-top:var(--spacing);padding-bottom:var(--spacing)}.py-1\\.5{padding-top:calc(var(--spacing) * 1.5);padding-bottom:calc(var(--spacing) * 1.5)}.py-2{padding-top:calc(var(--spacing) * 2);padding-bottom:calc(var(--spacing) * 2)}.py-3{padding-top:calc(var(--spacing) * 3);padding-bottom:calc(var(--spacing) * 3)}.pt-1{padding-top:var(--spacing)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#7ba4ff\\]{color:#7ba4ff}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-frozen{color:var(--color-frozen)}.text-fuchsia-500{color:var(--color-fuchsia-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-ok{color:var(--color-ok)}.text-orange-400{color:var(--color-orange-400)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,rgba(0,0,0,.1)), 0 4px 6px -4px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{user-select:none}.select-text{user-select:text}@media (hover:hover){.group-hover\\:text-accent:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.first-letter\\:text-\\[\\#7ba4ff\\]:first-letter{color:#7ba4ff}@media (hover:hover){.hover\\:bg-\\[\\#2a2d3a\\]:hover{background-color:#2a2d3a}.hover\\:bg-accent\\/20:hover{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/20:hover{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.hover\\:bg-accent\\/30:hover{background-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\\:bg-accent\\/80:hover{background-color:rgba(99,102,241,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/80:hover{background-color:color-mix(in oklab, var(--color-accent) 80%, transparent)}}.hover\\:bg-accent\\/85:hover{background-color:rgba(99,102,241,.85)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/85:hover{background-color:color-mix(in oklab, var(--color-accent) 85%, transparent)}}.hover\\:bg-border:hover{background-color:var(--color-border)}.hover\\:bg-border\\/30:hover{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/30:hover{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.hover\\:bg-border\\/50:hover{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/50:hover{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.hover\\:bg-border\\/80:hover{background-color:rgba(34,37,51,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/80:hover{background-color:color-mix(in oklab, var(--color-border) 80%, transparent)}}.hover\\:bg-danger\\/20:hover{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/20:hover{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-danger\\/80:hover{background-color:rgba(239,68,68,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/80:hover{background-color:color-mix(in oklab, var(--color-danger) 80%, transparent)}}.hover\\:bg-frozen\\/30:hover{background-color:rgba(139,92,246,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-frozen\\/30:hover{background-color:color-mix(in oklab, var(--color-frozen) 30%, transparent)}}.hover\\:bg-ok\\/30:hover{background-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-ok\\/30:hover{background-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-gray-200:hover{color:var(--color-gray-200)}.hover\\:text-gray-300:hover{color:var(--color-gray-300)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-red-400:hover{color:var(--color-red-400)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-yellow-300:hover{color:var(--color-yellow-300)}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.focus\\:bg-border\\/30:focus{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.focus\\:bg-border\\/30:focus{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\\:cursor-grabbing:active{cursor:grabbing}.disabled\\:opacity-50:disabled{opacity:.5}:host{--color-bg:#0b0c10;--color-bg-elev:#13151f;--color-bg-input:#1a1c29;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-text-faint:#646b7d;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#222533;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#6366f1}body,:host{color:#f1f5f9;font-family:Outfit,system-ui,-apple-system,sans-serif}*,:after,:before{--tw-border-style:solid}.cursor-grab{cursor:-webkit-grab;cursor:grab}.active\\:cursor-grabbing:active{cursor:-webkit-grabbing;cursor:grabbing}.space-x-1>:not([hidden])~:not([hidden]){margin-left:4px}.space-x-1\\.5>:not([hidden])~:not([hidden]){margin-left:6px}.space-x-2>:not([hidden])~:not([hidden]){margin-left:8px}.space-x-2\\.5>:not([hidden])~:not([hidden]){margin-left:10px}.space-x-3>:not([hidden])~:not([hidden]){margin-left:12px}.space-x-4>:not([hidden])~:not([hidden]){margin-left:16px}.space-y-0\\.5>:not([hidden])~:not([hidden]){margin-top:2px}.space-y-1>:not([hidden])~:not([hidden]){margin-top:4px}.space-y-2>:not([hidden])~:not([hidden]){margin-top:8px}.space-y-2\\.5>:not([hidden])~:not([hidden]){margin-top:10px}.space-y-3>:not([hidden])~:not([hidden]){margin-top:12px}.space-y-4>:not([hidden])~:not([hidden]){margin-top:16px}.space-y-6>:not([hidden])~:not([hidden]){margin-top:24px}.divide-y>:not([hidden])~:not([hidden]){border-top-width:1px;border-color:var(--color-border)}input,textarea,[contenteditable=true]{user-select:text!important}button,button:focus{outline:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 transparent;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 transparent;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 transparent;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 transparent;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 transparent;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}} +/*$vite$:1*/`,document.head.appendChild(e);var t=!1,n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){return e()}function g(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function v(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}function y(e){"@babel/helpers - typeof";return y=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},y(e)}function b(e,t){if(y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function x(e){var t=b(e,`string`);return y(t)==`symbol`?t:t+``}function S(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee,C=1<<24,w=1024,te=2048,ne=4096,re=8192,ie=16384,ae=32768,oe=1<<25,se=65536,ce=1<<19,le=1<<20,ue=1<<25,de=65536,fe=1<<21,pe=1<<22,me=1<<23,he=Symbol(`$state`),ge=Symbol(`legacy props`),_e=Symbol(``),ve=Symbol(`proxy path`),ye=Symbol(`attributes`),be=Symbol(`class`),xe=Symbol(`style`),Se=Symbol(`text`),Ce=Symbol(`form reset`),we=Symbol(`hmr anchor`),Te=new class extends Error{constructor(...e){super(...e),S(this,`name`,`StaleReactionError`),S(this,`message`,"The reaction that called `getAbortSignal()` was re-run or destroyed")}},Ee=!!((ee=globalThis.document)!=null&&ee.contentType)&&globalThis.document.contentType.includes(`xml`);function De(e){if(t){let t=Error(`invariant_violation\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${e}"\nhttps://svelte.dev/e/invariant_violation`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/invariant_violation`)}function Oe(e){if(t){let t=Error(`lifecycle_outside_component\n\`${e}(...)\` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ke(){if(t){let e=Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ae(){if(t){let e=Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/bind_invalid_checkbox_value`)}function je(){if(t){let e=Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/derived_references_self`)}function Me(e,n,r){if(t){let t=Error(`each_key_duplicate\n${r?`Keyed each block has duplicate key \`${r}\` at indexes ${e} and ${n}`:`Keyed each block has duplicate key at indexes ${e} and ${n}`}\nhttps://svelte.dev/e/each_key_duplicate`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ne(e,n,r){if(t){let t=Error(`each_key_volatile\nKeyed each block has key that is not idempotent — the key for item at index ${e} was \`${n}\` but is now \`${r}\`. Keys must be the same each time for a given item\nhttps://svelte.dev/e/each_key_volatile`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_volatile`)}function Pe(e){if(t){let t=Error(`effect_in_teardown\n\`${e}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Fe(){if(t){let e=Error(`effect_in_unowned_derived +Effect cannot be created inside a \`$derived\` value that was not itself created inside an effect +https://svelte.dev/e/effect_in_unowned_derived`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ie(e){if(t){let t=Error(`effect_orphan\n\`${e}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_orphan`)}function Le(){if(t){let e=Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Re(){if(t){let e=Error("invalid_snippet\nCould not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\nhttps://svelte.dev/e/invalid_snippet");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/invalid_snippet`)}function ze(e){if(t){let t=Error(`props_invalid_value\nCannot do \`bind:${e}={undefined}\` when \`${e}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_invalid_value`)}function Be(e){if(t){let t=Error(`props_rest_readonly\nRest element properties of \`$props()\` such as \`${e}\` are readonly\nhttps://svelte.dev/e/props_rest_readonly`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_rest_readonly`)}function Ve(e){if(t){let t=Error(`rune_outside_svelte\nThe \`${e}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/rune_outside_svelte`)}function He(){if(t){let e=Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ue(){if(t){let e=Error(`state_prototype_fixed +Cannot set prototype of \`$state\` object +https://svelte.dev/e/state_prototype_fixed`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function We(){if(t){let e=Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ge(){if(t){let e=Error("svelte_boundary_reset_onerror\nA `` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ke={},qe=Symbol(`uninitialized`),Je=Symbol(`filename`),Ye=`http://www.w3.org/1999/xhtml`,Xe=`http://www.w3.org/2000/svg`,Ze=`font-weight: bold`,Qe=`font-weight: normal`;function $e(e){t?console.warn(`%c[svelte] await_reactivity_loss\n%cDetected reactivity loss when reading \`${e}\`. This happens when state is read in an async function after an earlier \`await\`\nhttps://svelte.dev/e/await_reactivity_loss`,Ze,Qe):console.warn(`https://svelte.dev/e/await_reactivity_loss`)}function et(e,n){t?console.warn(`%c[svelte] await_waterfall\n%cAn async derived, \`${e}\` (${n}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\nhttps://svelte.dev/e/await_waterfall`,Ze,Qe):console.warn(`https://svelte.dev/e/await_waterfall`)}function tt(){t?console.warn(`%c[svelte] derived_inert +%cReading a derived belonging to a now-destroyed effect may result in stale values +https://svelte.dev/e/derived_inert`,Ze,Qe):console.warn(`https://svelte.dev/e/derived_inert`)}function nt(e,n,r){t?console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${e}\` attribute on \`${n}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_attribute_changed`)}function rt(e){t?console.warn(`%c[svelte] hydration_mismatch\n%c${e?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${e}`:`Hydration failed because the initial UI does not match what was rendered on the server`}\nhttps://svelte.dev/e/hydration_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_mismatch`)}function it(){t?console.warn("%c[svelte] select_multiple_invalid_value\n%cThe `value` property of a `` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value",Ze,Qe):console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function at(e){t?console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${e}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`)}function ot(){t?console.warn("%c[svelte] svelte_boundary_reset_noop\n%cA `` `reset` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop",Ze,Qe):console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function st(e){T=e}var E;function ct(e){if(e===null)throw rt(),Ke;return E=e}function lt(){return ct(gi(E))}function D(e){if(T){if(gi(E)!==null)throw rt(),Ke;E=e}}function ut(e=1){if(T){for(var t=e,n=E;t--;)n=gi(n);E=n}}function dt(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=gi(n);e&&n.remove(),n=i}}function ft(e){if(!e||e.nodeType!==8)throw rt(),Ke;return e.data}function pt(e){return e===this.v}function mt(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ht(e){return!mt(e,this.v)}var gt=!1,_t=!1,vt=!1;function yt(){_t=!0}var bt=null;function xt(e,t){return e.label=t,St(e.v,t),e}function St(e,t){var n;return e==null||(n=e[ve])==null||n.call(e,t),e}function Ct(e){let t=Error(),n=wt();return n.length===0?null:(n.unshift(` +`),o(t,`stack`,{value:n.join(` +`)}),o(t,`name`,{value:e}),t)}function wt(){let e=Error.stackTraceLimit;Error.stackTraceLimit=1/0;let t=Error().stack;if(Error.stackTraceLimit=e,!t)return[];let n=t.split(` +`),r=[];for(let e=0;e{t===Lt&&Rt()})}Lt.push(e)}function Bt(){for(;Lt.length>0;)Rt()}var Vt=new WeakMap;function Ht(e){var n=V;if(n===null)return B.f|=me,e;if(t&&e instanceof Error&&!Vt.has(e)&&Vt.set(e,Wt(e,n)),!(n.f&32768)&&!(n.f&4))throw t&&!n.parent&&e instanceof Error&&Gt(e),e;Ut(e,n)}function Ut(e,n){if(!(n!==null&&n.f&16384)){for(;n!==null;){if(n.f&128){if(!(n.f&32768))throw e;try{n.b.error(e);return}catch(t){e=t}}n=n.parent}throw t&&e instanceof Error&&Gt(e),e}}function Wt(e,t){var n,r;let i=s(e,`message`);if(!(i&&!i.configurable)){for(var a=ui?` `:` `,o=`\n${a}in ${((n=t.fn)==null?void 0:n.name)||``}`,c=t.ctx;c!==null;){var l;o+=`\n${a}in ${(l=c.function)==null?void 0:l[Je].split(`/`).pop()}`,c=c.p}return{message:e.message+`\n${o}\n`,stack:(r=e.stack)==null?void 0:r.split(` +`).filter(e=>!e.includes(`svelte/src/internal`)).join(` +`)}}}function Gt(e){let t=Vt.get(e);t&&(o(e,`message`,{value:t.message}),o(e,`stack`,{value:t.stack}))}var Kt=~(te|ne|w);function qt(e,t){e.f=e.f&Kt|t}function Jt(e){e.f&512||e.deps===null?qt(e,w):qt(e,ne)}function Yt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=de,Yt(t.deps))}function Xt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Yt(e.deps),qt(e,w)}var Zt=!1,Qt=!1;function $t(e){var t=Qt;try{return Qt=!1,[e(),Qt]}finally{Qt=t}}function en(e){let n=0,r=Xr(0),i;return t&&xt(r,`createSubscriber version`),()=>{Ai()&&(H(r),Ri(()=>(n===0&&(i=Ea(()=>e(()=>ei(r)))),n+=1,()=>{zt(()=>{--n,n===0&&(i==null||i(),i=void 0,ei(r))})})))}}function tn(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function nn(e,t){tn(e,t),t.add(e)}function k(e,t,n){tn(e,t),t.set(e,n)}function A(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function j(e,t,n){return e.set(A(e,t),n),n}function M(e,t){return e.get(A(e,t))}var rn=se|ce;function an(e,t,n,r){new Cn(e,t,n,r)}var on=new WeakMap,sn=new WeakMap,cn=new WeakMap,ln=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,pn=new WeakMap,mn=new WeakMap,hn=new WeakMap,gn=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakMap,bn=new WeakMap,xn=new WeakMap,Sn=new WeakSet,Cn=class{constructor(e,n,r,i){var a,o;nn(this,Sn),S(this,`parent`,void 0),S(this,`is_pending`,!1),S(this,`transform_error`,void 0),k(this,on,void 0),k(this,sn,T?E:null),k(this,cn,void 0),k(this,ln,void 0),k(this,un,void 0),k(this,dn,null),k(this,fn,null),k(this,pn,null),k(this,mn,null),k(this,hn,0),k(this,gn,0),k(this,_n,!1),k(this,vn,new Set),k(this,yn,new Set),k(this,bn,null),k(this,xn,en(()=>(j(bn,this,Xr(M(hn,this))),t&&xt(M(bn,this),`$effect.pending()`),()=>{j(bn,this,null)}))),j(on,this,e),j(cn,this,n),j(ln,this,e=>{var t=V;t.b=this,t.f|=128,r(e)}),this.parent=V.b,this.transform_error=(a=i==null?(o=this.parent)==null?void 0:o.transform_error:i)==null?(e=>e):a,j(un,this,zi(()=>{if(T){let e=M(sn,this);lt();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));A(Sn,this,Tn).call(this,t)}else t?A(Sn,this,En).call(this):A(Sn,this,wn).call(this)}else A(Sn,this,Dn).call(this)},rn)),T&&j(on,this,E)}defer_effect(e){Xt(e,M(vn,this),M(yn,this))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!M(cn,this).pending}update_pending_count(e,t){A(Sn,this,An).call(this,e,t),j(hn,this,M(hn,this)+e),!(!M(bn,this)||M(_n,this))&&(j(_n,this,!0),zt(()=>{j(_n,this,!1),M(bn,this)&&Qr(M(bn,this),M(hn,this))}))}get_effect_pending(){return M(xn,this).call(this),H(M(bn,this))}error(e){if(!M(cn,this).onerror&&!M(cn,this).failed)throw e;N!=null&&N.is_fork?(M(dn,this)&&N.skip_effect(M(dn,this)),M(fn,this)&&N.skip_effect(M(fn,this)),M(pn,this)&&N.skip_effect(M(pn,this)),N.oncommit(()=>{A(Sn,this,jn).call(this,e)})):A(Sn,this,jn).call(this,e)}};function wn(){try{j(dn,this,Vi(()=>M(ln,this).call(this,M(on,this))))}catch(e){this.error(e)}}function Tn(e){let t=M(cn,this).failed;t&&j(pn,this,Vi(()=>{t(M(on,this),()=>e,()=>()=>{})}))}function En(){let e=M(cn,this).pending;e&&(this.is_pending=!0,j(fn,this,Vi(()=>e(M(on,this)))),zt(()=>{var e=j(mn,this,document.createDocumentFragment()),t=mi();e.append(t),j(dn,this,A(Sn,this,kn).call(this,()=>Vi(()=>M(ln,this).call(this,t)))),M(gn,this)===0&&(M(on,this).before(e),j(mn,this,null),Ji(M(fn,this),()=>{j(fn,this,null)}),A(Sn,this,On).call(this,N))}))}function Dn(){try{if(this.is_pending=this.has_pending_snippet(),j(gn,this,0),j(hn,this,0),j(dn,this,Vi(()=>{M(ln,this).call(this,M(on,this))})),M(gn,this)>0){var e=j(mn,this,document.createDocumentFragment());Qi(M(dn,this),e);let t=M(cn,this).pending;j(fn,this,Vi(()=>t(M(on,this))))}else A(Sn,this,On).call(this,N)}catch(e){this.error(e)}}function On(e){this.is_pending=!1,e.transfer_effects(M(vn,this),M(yn,this))}function kn(e){var t=V,n=B,r=O;aa(M(un,this)),ia(M(un,this)),Et(M(un,this).ctx);try{return Dr.ensure(),e()}catch(e){return Ht(e),null}finally{aa(t),ia(n),Et(r)}}function An(e,t){if(!this.has_pending_snippet()){if(this.parent){var n;A(Sn,n=this.parent,An).call(n,e,t)}return}j(gn,this,M(gn,this)+e),M(gn,this)===0&&(A(Sn,this,On).call(this,t),M(fn,this)&&Ji(M(fn,this),()=>{j(fn,this,null)}),M(mn,this)&&(M(on,this).before(M(mn,this)),j(mn,this,null)))}function jn(e){M(dn,this)&&(Gi(M(dn,this)),j(dn,this,null)),M(fn,this)&&(Gi(M(fn,this)),j(fn,this,null)),M(pn,this)&&(Gi(M(pn,this)),j(pn,this,null)),T&&(ct(M(sn,this)),ut(),ct(dt()));var t=M(cn,this).onerror;let n=M(cn,this).failed;var r=!1,i=!1;let a=()=>{if(r){ot();return}r=!0,i&&Ge(),M(pn,this)!==null&&Ji(M(pn,this),()=>{j(pn,this,null)}),A(Sn,this,kn).call(this,()=>{A(Sn,this,Dn).call(this)})},o=e=>{try{i=!0,t==null||t(e,a),i=!1}catch(e){Ut(e,M(un,this)&&M(un,this).parent)}n&&j(pn,this,A(Sn,this,kn).call(this,()=>{try{return Vi(()=>{var t=V;t.b=this,t.f|=128,n(M(on,this),()=>e,()=>a)})}catch(e){return Ut(e,M(un,this).parent),null}}))};zt(()=>{var t;try{t=this.transform_error(e)}catch(e){Ut(e,M(un,this)&&M(un,this).parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ut(e,M(un,this)&&M(un,this).parent)):o(t)})}function Mn(e,t){this.v=e,this.k=t}function Nn(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof Mn;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}Nn.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},Nn.prototype.next=function(e){return this._invoke(`next`,e)},Nn.prototype.throw=function(e){return this._invoke(`throw`,e)},Nn.prototype.return=function(e){return this._invoke(`return`,e)};function Pn(e,n,r,i){let a=Pt()?Vn:Gn;var o=e.filter(e=>!e.settled),s=n.map(a);if(t&&s.forEach((e,t)=>{e.label=n[t].toString().replace(`() => `,``).replaceAll(`$.eager(() => `,`$state.eager(`).replace(/\$\.get\((.+?)\)/g,(e,t)=>t)}),r.length===0&&o.length===0){i(s);return}var c=V,l=Fn(),u=o.length===1?o[0].promise:o.length>1?Promise.all(o.map(e=>e.promise)):null;function d(e){if(!(c.f&16384)){l();try{i([...s,...e])}catch(e){Ut(e,c)}In()}}var f=Ln();if(r.length===0){u.then(()=>d([])).finally(f);return}function p(){Promise.all(r.map(e=>Un(e))).then(d).catch(e=>Ut(e,c)).finally(f)}u?u.then(()=>{l(),p(),In()}):p()}function Fn(){var e=V,n=B,r=O,i=N;if(t)var a=Dt;return function(o=!0){aa(e),ia(n),Et(r),o&&!(e.f&16384)&&(i==null||i.activate(),i==null||i.apply()),t&&(zn(null),Ot(a))}}function In(e=!0){aa(null),ia(null),Et(null),e&&(N==null||N.deactivate()),t&&(zn(null),Ot(null))}function Ln(){var e=V,t=e.b,n=N,r=!!(t!=null&&t.is_rendered());return t==null||t.update_pending_count(1,n),n.increment(r,e),()=>{t==null||t.update_pending_count(-1,n),n.decrement(r,e)}}var Rn=null;function zn(e){Rn=e}var Bn=new Set;function Vn(e){var n=2|te;V!==null&&(V.f|=ce);let r={ctx:O,deps:null,effects:null,equals:pt,f:n,fn:e,reactions:null,rv:0,v:qe,wv:0,parent:V,ac:null};return t&&vt&&(r.created=Ct(`created at`)),r}var Hn=Symbol(`obsolete`);function Un(e,n,r){let i=V;i===null&&ke();var a=void 0,o=Xr(qe);t&&(o.label=n==null?e.toString():n);var s=!B,c=new Set;return Li(()=>{var n=V;t&&(Rn={effect:n,effect_deps:new Set,warned:!1});var l=_();a=l.promise;try{Promise.resolve(e()).then(l.resolve,e=>{e!==Te&&l.reject(e)}).finally(In)}catch(e){l.reject(e),In()}if(t){if(Rn){if(n.deps!==null)for(let e=0;e{t&&(Rn=null),f==null||f(),c.delete(l),i!==Hn&&(u.activate(),i?(o.f|=me,Qr(o,i)):(o.f&8388608&&(o.f^=me),t&&r!==void 0&&!o.equals(e)&&(Bn.add(o),setTimeout(()=>{Bn.has(o)&&!(n.f&16384)&&(et(o.label,r),Bn.delete(o))})),Qr(o,e)),u.deactivate())};l.promise.then(m,e=>m(null,e||`unknown`))}),ji(()=>{for(let e of c)e.reject(Hn)}),t&&(o.f|=pe),new Promise(e=>{function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}t(a)})}function Wn(e){let t=Vn(e);return gt||sa(t),t}function Gn(e){let t=Vn(e);return t.equals=ht,t}function Kn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;nthis.schedule(e)){var n=M(Cr,this).get(e);if(n){M(Cr,this).delete(e);for(var r of n.d)qt(r,te),t(r);for(r of n.m)qt(r,ne),t(r)}M(wr,this).add(e)}capture(e,t,n=!1){e.v!==qe&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),nr==null||nr.set(e,t)),this.is_fork||(e.v=t)}activate(){N=this}deactivate(){N=null,nr=null}flush(){try{t&&lr.clear(),ar=!0,N=this,A(Er,this,kr).call(this)}finally{if(cr=0,rr=null,or=null,sr=null,ar=!1,N=null,nr=null,Kr.clear(),t)for(let e of lr)e.updated=null}}discard(){var e;for(let e of M(hr,this))e(this);M(hr,this).clear();for(let e of this.async_deriveds.values())e.reject(Hn);A(Er,this,Fr).call(this),(e=M(vr,this))==null||e.resolve()}register_created_effect(e){M(br,this).push(e)}increment(e,t){if(j(gr,this,M(gr,this)+1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;M(_r,this).set(t,e+1)}}decrement(e,t){if(j(gr,this,M(gr,this)-1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;e===1?M(_r,this).delete(t):M(_r,this).set(t,e-1)}M(Tr,this)||(j(Tr,this,!0),zt(()=>{j(Tr,this,!1),this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)M(xr,this).add(t);for(let e of t)M(Sr,this).add(e);e.clear(),t.clear()}oncommit(e){M(mr,this).add(e)}ondiscard(e){M(hr,this).add(e)}settled(){var e;return((e=M(vr,this))==null?j(vr,this,_()):e).promise}static ensure(){if(N===null){let t=N=new e;!ar&&!ir&&zt(()=>{M(dr,t)||t.flush()})}return N}apply(){if(!gt||!this.is_fork&&M(fr,this)===null&&M(pr,this)===null){nr=null;return}nr=new Map;for(let[e,[t]]of this.current)nr.set(e,t);for(let t=$n;t!==null;t=M(pr,t))if(!(t===this||t.is_fork)){var e=!1;if(t.id1e3&&(A(Er,this,Fr).call(this),Lr()),t)for(let e of this.current.keys())lr.add(e);for(let e of M(xr,this))M(Sr,this).delete(e),qt(e,te),this.schedule(e);for(let e of M(Sr,this))qt(e,ne),this.schedule(e);let n=M(yr,this);j(yr,this,[]),this.apply();var r=or=[],i=[],a=sr=[];for(let e of n)try{A(Er,this,Ar).call(this,e,r,i)}catch(t){throw Wr(e),A(Er,this,Or).call(this)||this.discard(),t}if(N=null,a.length>0){var o=Qn.ensure();for(let e of a)o.schedule(e)}if(or=null,sr=null,A(Er,this,Or).call(this)){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r);for(let[e,t]of M(Cr,this))Ur(e,t);a.length>0&&A(Er,N,kr).call(N);return}let s=A(Er,this,jr).call(this);if(s){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r),A(Er,s,Mr).call(s,this);return}M(xr,this).clear(),M(Sr,this).clear();for(let e of M(mr,this))e(this);M(mr,this).clear(),tr=this,zr(i),zr(r),tr=null,(e=M(vr,this))==null||e.resolve();var c=N;if(M(gr,this)===0&&(M(yr,this).length===0||c!==null)&&(A(Er,this,Fr).call(this),gt&&(A(Er,this,Pr).call(this),N=c)),M(yr,this).length>0)if(c!==null){let e=c;M(yr,e).push(...M(yr,this).filter(t=>!M(yr,e).includes(t)))}else c=this;c!==null&&A(Er,c,kr).call(c)}function Ar(e,t,n){e.f^=w;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||M(Cr,this).has(r))&&r.fn!==null){a?r.f^=w:i&4?t.push(r):gt&&i&16777224?n.push(r):_a(r)&&(i&16&&M(Sr,this).add(r),Sa(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}function jr(){for(var e=M(fr,this);e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=M(fr,e)}return null}function Mr(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(M(xr,e),M(Sr,e));let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(M(Sr,this).delete(i),qt(i,te),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),A(Er,e,Fr).call(e),N=this,A(Er,this,kr).call(this)}function Nr(e){for(var t=0;t!d.current.get(e)[1]);if(!(!M(dr,d)||i.length===0)){var a=i.filter(e=>!this.current.has(e));if(a.length===0)e&&d.discard();else if(n.length>0){if(t&&!M(Tr,d)&&Tt(M(yr,d).length===0,`Batch has scheduled roots`),e)for(let e of M(wr,this))d.unskip_effect(e,e=>{e.f&4194320?d.schedule(e):A(Er,d,Nr).call(d,[e])});d.activate();var o=new Set,s=new Map;for(var c of n)Br(c,a,o,s);s=new Map;var l=[...d.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(l.length>0)for(let e of M(br,this))!(e.f&155648)&&Vr(e,l,s)&&(e.f&4194320?(qt(e,te),d.schedule(e)):M(xr,d).add(e));if(M(yr,d).length>0&&!M(Tr,d)){d.apply();for(var u of M(yr,d))A(Er,d,Ar).call(d,u,[],[]);j(yr,d,[])}d.deactivate()}}}}function Fr(){if(this.linked){var e=M(fr,this),t=M(pr,this);e===null?$n=t:j(pr,e,t),t===null?er=e:j(fr,t,e),this.linked=!1}}function Ir(e){var t=ir;ir=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(Bt(),N===null)return n;N.flush()}}finally{ir=t}}function Lr(){if(t){var e=new Map;for(let t of N.current.keys()){var n;for(let[i,a]of(n=t.updated)==null?[]:n){var r=e.get(i);r||(r={error:a.error,count:0},e.set(i,r)),r.count+=a.count}}for(let t of e.values())t.error&&console.error(t.error)}try{Le()}catch(e){t&&o(e,`stack`,{value:``}),Ut(e,rr)}}var Rr=null;function zr(e){var t=e.length;if(t!==0){for(var n=0;n0)){Kr.clear();for(let e of Rr){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Rr.has(n)&&(Rr.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sa(n)}}Rr.clear()}}Rr=null}}function Br(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Br(i,t,n,r):e&4194320&&!(e&2048)&&Vr(i,t,r)&&(qt(i,te),Hr(i))}}function Vr(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(i.call(t,r))return!0;if(r.f&2&&Vr(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function Hr(e){N.schedule(e)}function Ur(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),qt(e,w);for(var n=e.first;n!==null;)Ur(n,t),n=n.next}}function Wr(e){qt(e,w);for(var t=e.first;t!==null;)Wr(t),t=t.next}var Gr=new Set,Kr=new Map;function qr(e){Gr=e}var Jr=!1;function Yr(){Jr=!0}function Xr(e,n){var r={f:0,v:e,reactions:null,equals:pt,rv:0,wv:0};return t&&vt&&(r.created=n==null?Ct(`created at`):n,r.updated=null,r.set_during_effect=!1,r.trace=null),r}function P(e,t){let n=Xr(e,t);return sa(n),n}function Zr(e,t=!1,n=!0){let r=Xr(e);if(t||(r.equals=ht),_t&&n&&O!==null&&O.l!==null){var i,a;((a=(i=O.l).s)==null?i.s=[]:a).push(r)}return r}function F(e,n,r=!1){B!==null&&(!ra||B.f&131072)&&Pt()&&B.f&4325394&&(oa===null||!oa.has(e))&&We();let i=r?I(n):n;return t&&St(i,e.label),Qr(e,i,sr)}function Qr(e,n,r=null){if(!e.equals(n)){Kr.set(e,ta?n:e.v);var i=Dr.ensure();if(i.capture(e,n),t){if(vt||V!==null){var a,o;e.updated!=null||(e.updated=new Map);let t=((a=(o=e.updated.get(``))==null?void 0:o.count)==null?0:a)+1;if(e.updated.set(``,{error:null,count:t}),vt||t>5){let t=Ct(`updated at`);if(t!==null){let n=e.updated.get(t.stack);n||(n={error:t,count:0},e.updated.set(t.stack,n)),n.count++}}}V!==null&&(e.set_during_effect=!0)}if(e.f&2){let t=e;e.f&2048&&Jn(t),nr===null&&Jt(t)}e.wv=ga(),ti(e,te,r),Pt()&&V!==null&&V.f&1024&&!(V.f&96)&&(ua===null?da([e]):ua.push(e)),!i.is_fork&&Gr.size>0&&!Jr&&$r()}return n}function $r(){Jr=!1;for(let e of Gr){e.f&1024&&qt(e,ne);let t;try{t=_a(e)}catch(e){t=!0}t&&Sa(e)}Gr.clear()}function ei(e){F(e,e.v+1)}function ti(e,t,n){var r=e.reactions;if(r!==null)for(var i=Pt(),a=r.length,o=0;o{if(ma===f)return e();var t=B,n=ma;ia(null),ha(f);var r=e();return ia(t),ha(n),r};a&&(i.set(`length`,P(e.length,c)),t&&(e=si(e)));var m=``;let h=!1;function g(e){if(!h){h=!0,m=e,xt(o,`${m} version`);for(let[e,t]of i)xt(t,ri(m,e));h=!1}}return new Proxy(e,{defineProperty(e,n,r){(!(`value`in r)||r.configurable===!1||r.enumerable===!1||r.writable===!1)&&He();var a=i.get(n);return a===void 0?p(()=>{var e=P(r.value,c);return i.set(n,e),t&&typeof n==`string`&&xt(e,ri(m,n)),e}):F(a,r.value,!0),!0},deleteProperty(e,n){var r=i.get(n);if(r===void 0){if(n in e){let e=p(()=>P(qe,c));i.set(n,e),ei(o),t&&xt(e,ri(m,n))}}else F(r,qe),ei(o);return!0},get(n,r,a){var o;if(r===he)return e;if(t&&r===ve)return g;var l=i.get(r),u=r in n;if(l===void 0&&(!u||(o=s(n,r))!=null&&o.writable)&&(l=p(()=>{var e=P(I(u?n[r]:qe),c);return t&&xt(e,ri(m,r)),e}),i.set(r,l)),l!==void 0){var d=H(l);return d===qe?void 0:d}return Reflect.get(n,r,a)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var r=i.get(t);r&&(n.value=H(r))}else if(n===void 0){var a=i.get(t),o=a==null?void 0:a.v;if(a!==void 0&&o!==qe)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,n){var r;if(n===he)return!0;var a=i.get(n),o=a!==void 0&&a.v!==qe||Reflect.has(e,n);return(a!==void 0||V!==null&&(!o||(r=s(e,n))!=null&&r.writable))&&(a===void 0&&(a=p(()=>{var r=P(o?I(e[n]):qe,c);return t&&xt(r,ri(m,n)),r}),i.set(n,a)),H(a)===qe)?!1:o},set(e,n,r,l){var u=i.get(n),d=n in e;if(a&&n===`length`)for(var f=r;fP(qe,c)),i.set(f+``,h),t&&xt(h,ri(m,f))):F(h,qe)}if(u===void 0){var g;(!d||(g=s(e,n))!=null&&g.writable)&&(u=p(()=>P(void 0,c)),t&&xt(u,ri(m,n)),F(u,I(r)),i.set(n,u))}else{d=u.v!==qe;var _=p(()=>I(r));F(u,_)}var v=Reflect.getOwnPropertyDescriptor(e,n);if(v!=null&&v.set&&v.set.call(l,r),!d){if(a&&typeof n==`string`){var y=i.get(`length`),b=Number(n);Number.isInteger(b)&&b>=y.v&&F(y,b+1)}ei(o)}return!0},ownKeys(e){H(o);var t=Reflect.ownKeys(e).filter(e=>{var t=i.get(e);return t===void 0||t.v!==qe});for(var[n,r]of i)r.v!==qe&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ue()}})}function ri(e,t){var n;return typeof t==`symbol`?`${e}[Symbol(${(n=t.description)==null?``:n})]`:ni.test(t)?`${e}.${t}`:/^\d+$/.test(t)?`${e}[${t}]`:`${e}['${t}']`}function ii(e){try{if(typeof e==`object`&&e&&he in e)return e[he]}catch(e){}return e}function ai(e,t){return Object.is(ii(e),ii(t))}var oi=new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);function si(e){return new Proxy(e,{get(e,t,n){var r=Reflect.get(e,t,n);return oi.has(t)?function(...e){Yr();var t=r.apply(this,e);return $r(),t}:r}})}function ci(){let e=Array.prototype,t=Array.__svelte_cleanup;t&&t();let{indexOf:n,lastIndexOf:r,includes:i}=e;e.indexOf=function(e,t){let r=n.call(this,e,t);if(r===-1){for(let n=t==null?0:t;n{e.indexOf=n,e.lastIndexOf=r,e.includes=i}}var li,ui,di,fi;function pi(){if(li===void 0){li=window,ui=/Firefox/.test(navigator.userAgent);var e=Element.prototype,n=Node.prototype,r=Text.prototype;di=s(n,`firstChild`).get,fi=s(n,`nextSibling`).get,f(e)&&(e[be]=void 0,e[ye]=null,e[xe]=void 0,e.__e=void 0),f(r)&&(r[Se]=void 0),t&&(e.__svelte_meta=null,ci())}}function mi(e=``){return document.createTextNode(e)}function hi(e){return di.call(e)}function gi(e){return fi.call(e)}function L(e,t){if(!T)return hi(e);var n=hi(E);if(n===null)n=E.appendChild(mi());else if(t&&n.nodeType!==3){var r=mi();return n==null||n.before(r),ct(r),r}return t&&xi(n),ct(n),n}function _i(e,t=!1){if(!T){var n=hi(e);return n instanceof Comment&&n.data===``?gi(n):n}if(t){if((E==null?void 0:E.nodeType)!==3){var r=mi();return E==null||E.before(r),ct(r),r}xi(E)}return E}function R(e,t=1,n=!1){let r=T?E:e;for(var i;t--;)i=r,r=gi(r);if(!T)return r;if(n){if((r==null?void 0:r.nodeType)!==3){var a=mi();return r===null?i==null||i.after(a):r.before(a),ct(a),a}xi(r)}return ct(r),r}function vi(e){e.textContent=``}function yi(){return!gt||Rr!==null?!1:(V.f&ae)!==0}function bi(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function xi(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Si(e,t){if(t){let t=document.body;e.autofocus=!0,zt(()=>{document.activeElement===t&&e.focus()})}}var Ci=!1;function wi(){Ci||(Ci=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let n of e.target.elements){var t;(t=n[Ce])==null||t.call(n)}})},{capture:!0}))}function Ti(e){var t=B,n=V;ia(null),aa(null);try{return e()}finally{ia(t),aa(n)}}function Ei(e,t,n,r=n){e.addEventListener(t,()=>Ti(n));let i=e[Ce];i?e[Ce]=()=>{i(),r(!0)}:e[Ce]=()=>r(!0),wi()}function Di(e){V===null&&(B===null&&Ie(e),Fe()),ta&&Pe(e)}function Oi(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function ki(e,n){var r=V;if(t)for(;r!==null&&r.f&131072;)r=r.parent;r!==null&&r.f&8192&&(e|=re);var i={ctx:O,deps:null,nodes:null,f:e|te|512,first:null,fn:n,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};t&&(i.component_function=kt),N==null||N.register_created_effect(i);var a=i;if(e&4)or===null?Dr.ensure().schedule(i):or.push(i);else if(n!==null){try{Sa(i)}catch(e){throw Gi(i),e}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&!(a.f&524288)&&(a=a.first,e&16&&e&65536&&a!==null&&(a.f|=se))}if(a!==null&&(a.parent=r,r!==null&&Oi(a,r),B!==null&&B.f&2&&!(e&64))){var o,s=B;((o=s.effects)==null?s.effects=[]:o).push(a)}return i}function Ai(){return B!==null&&!ra}function ji(e){let t=ki(8,null);return qt(t,w),t.teardown=e,t}function Mi(e){Di(`$effect`),t&&o(e,`name`,{value:`$effect`});var n=V.f;if(!B&&n&32&&O!==null&&!O.i){var r,i=O;((r=i.e)==null?i.e=[]:r).push(e)}else return Ni(e)}function Ni(e){return ki(4|le,e)}function Pi(e){return Di(`$effect.pre`),t&&o(e,`name`,{value:`$effect.pre`}),ki(8|le,e)}function Fi(e){Dr.ensure();let t=ki(64|ce,e);return(e={})=>new Promise(n=>{e.outro?Ji(t,()=>{Gi(t),n(void 0)}):(Gi(t),n(void 0))})}function Ii(e){return ki(4,e)}function Li(e){return ki(pe|ce,e)}function Ri(e,t=0){return ki(8|t,e)}function z(e,t=[],n=[],r=[]){Pn(r,t,n,t=>{ki(8,()=>{e(...t.map(H))})})}function zi(e,n=0){var r=ki(16|n,e);return t&&(r.dev_stack=Dt),r}function Bi(e,n=0){var r=ki(C|n,e);return t&&(r.dev_stack=Dt),r}function Vi(e){return ki(32|ce,e)}function Hi(e){var t=e.teardown;if(t!==null){let e=ta,n=B;na(!0),ia(null);try{t.call(null)}finally{na(e),ia(n)}}}function Ui(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&Ti(()=>{e.abort(Te)});var r=n.next;n.f&64?n.parent=null:Gi(n,t),n=r}}function Wi(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Gi(t),t=n}}function Gi(e,n=!0){var r=!1;(n||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Ki(e.nodes.start,e.nodes.end),r=!0),e.f|=oe,Ui(e,n&&!r),xa(e,0);var i=e.nodes&&e.nodes.t;if(i!==null)for(let e of i)e.stop();Hi(e),e.f^=oe,e.f|=ie;var a=e.parent;a!==null&&a.first!==null&&qi(e),t&&(e.component_function=null),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Ki(e,t){for(;e!==null;){var n=e===t?null:gi(e);e.remove(),e=n}}function qi(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Ji(e,t,n=!0){var r=[];Yi(e,r,!0);var i=()=>{n&&Gi(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Yi(e,t,n){if(!(e.f&8192)){e.f^=re;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Yi(i,t,o?n:!1)}i=a}}}function Xi(e){Zi(e,!0)}function Zi(e,t){if(e.f&8192){e.f^=re,e.f&1024||(qt(e,te),Dr.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Zi(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Qi(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:gi(n);t.append(n),n=i}}var $i=null,ea=!1,ta=!1;function na(e){ta=e}var B=null,ra=!1;function ia(e){B=e}var V=null;function aa(e){V=e}var oa=null;function sa(e){if(B!==null&&(!gt||B.f&2)){var t;((t=oa)==null?oa=new Set:t).add(e)}}var ca=null,la=0,ua=null;function da(e){ua=e}var fa=1,pa=0,ma=pa;function ha(e){ma=e}function ga(){return++fa}function _a(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~de),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&nr===null&&qt(e,w)}return!1}function va(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!gt&&oa!==null&&oa.has(e)))for(var i=0;i{e.ac.abort(Te)}),e.ac=null);try{e.f|=fe;var u=e.fn,d=u();e.f|=ae;var f=e.deps,p=N==null?void 0:N.is_fork;if(ca!==null){var m;if(p||xa(e,la),f!==null&&la>0)for(f.length=la+ca.length,m=0;m{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Ir()}function H(e){var n=(e.f&2)!=0;if($i==null||$i.add(e),B!==null&&!ra&&!(V!==null&&V.f&16384)&&(oa===null||!oa.has(e))){var r=B.deps;if(B.f&2097152)e.rvn==null?void 0:n.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?zt(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Ua(e,t,n,r,i){var a={capture:r,passive:i},o=Ha(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&ji(()=>{t.removeEventListener(e,o,a)})}function U(e,t,n){var r;((r=t[za])==null?t[za]={}:r)[e]=n}function Wa(e){for(var t=0;t{throw e});throw m}}finally{e[za]=n,delete e.currentTarget,ia(f),aa(p)}}}var qa,Ja=((qa=globalThis)==null||(qa=qa.window)==null?void 0:qa.trustedTypes)&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Ya(e){var t;return(t=Ja==null?void 0:Ja.createHTML(e))==null?e:t}function Xa(e){var t=bi(`template`);return t.innerHTML=Ya(e.replaceAll(``,``)),t.content}function Za(e,t){var n=V;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(T)return Za(E,null),E;i===void 0&&(i=Xa(a?e:``+e),n||(i=hi(i)));var t=r||ui?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=hi(t),s=t.lastChild;Za(o,s)}else Za(t,t);return t}}function Qa(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}${n}>`,o;return()=>{if(T)return Za(E,null),E;if(!o){var e=hi(Xa(a));if(i)for(o=document.createDocumentFragment();hi(e);)o.appendChild(hi(e));else o=hi(e)}var t=o.cloneNode(!0);if(i){var n=hi(t),r=t.lastChild;Za(n,r)}else Za(t,t);return t}}function $a(e,t){return Qa(e,t,`svg`)}function eo(){if(T)return Za(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=mi();return e.append(t,n),Za(t,n),e}function G(e,t){if(T){var n=V;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),lt();return}e!==null&&e.before(t)}function K(e,t){var n,r,i=t==null?``:typeof t==`object`?`${t}`:t;i!==((r=(n=e)[Se])==null?n[Se]=e.nodeValue:r)&&(e[Se]=i,e.nodeValue=`${i}`)}function to(e,t){return ro(e,t)}var no=new Map;function ro(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){pi();var l=void 0,u=Fi(()=>{var s=n==null?t.appendChild(mi()):n;an(s,{pending:()=>{}},t=>{Mt({});var n=O;if(o&&(n.c=o),i&&(r.$$events=i),T&&Za(t,null),l=e(t,r)||{},T&&(V.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw rt(),Ke;Nt()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=no.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ka),r.delete(e),r.size===0&&no.delete(n)):r.set(e,i)}if(Va.delete(d),s!==n){var a;(a=s.parentNode)==null||a.removeChild(s)}}});return io.set(l,u),l}var io=new WeakMap,ao=new WeakMap,oo=new WeakMap,so=new WeakMap,co=new WeakMap,lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,po=class{constructor(e,n=!0){S(this,`anchor`,void 0),k(this,ao,new Map),k(this,oo,new Map),k(this,so,new Map),k(this,co,new Set),k(this,lo,!0),k(this,uo,e=>{if(M(ao,this).has(e)){var n=M(ao,this).get(e),r=M(oo,this).get(n);if(r)Xi(r),M(co,this).delete(n);else{var i=M(so,this).get(n);i&&(Xi(i.effect),M(oo,this).set(n,i.effect),M(so,this).delete(n),t&&(i.fragment.lastChild[we]=this.anchor),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(let[t,n]of M(ao,this)){if(M(ao,this).delete(t),t===e)break;let r=M(so,this).get(n);r&&(Gi(r.effect),M(so,this).delete(n))}for(let[e,t]of M(oo,this)){if(e===n||M(co,this).has(e))continue;let i=()=>{if(Array.from(M(ao,this).values()).includes(e)){var n=document.createDocumentFragment();Qi(t,n),n.append(mi()),M(so,this).set(e,{effect:t,fragment:n})}else Gi(t);M(co,this).delete(e),M(oo,this).delete(e)};M(lo,this)||!r?(M(co,this).add(e),Ji(t,i,!1)):i()}}}),k(this,fo,e=>{M(ao,this).delete(e);let t=Array.from(M(ao,this).values());for(let[e,n]of M(so,this))t.includes(e)||(Gi(n.effect),M(so,this).delete(e))}),this.anchor=e,j(lo,this,n)}ensure(e,t){var n=N,r=yi();if(t&&!M(oo,this).has(e)&&!M(so,this).has(e))if(r){var i=document.createDocumentFragment(),a=mi();i.append(a),M(so,this).set(e,{effect:Vi(()=>t(a)),fragment:i})}else M(oo,this).set(e,Vi(()=>t(this.anchor)));if(M(ao,this).set(n,e),r){for(let[t,r]of M(oo,this))t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of M(so,this))t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(M(uo,this)),n.ondiscard(M(fo,this))}else T&&(this.anchor=E),M(uo,this).call(this,n)}};function mo(e,t,n=!1){var r;T&&(r=E,lt());var i=new po(e),a=n?se:0;function o(e,t){if(T){var n=ft(r);if(e!==parseInt(n.substring(1))){var a=dt();ct(a),i.anchor=a,st(!1),i.ensure(e,t),st(!0);return}}i.ensure(e,t)}zi(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ho(e,t){return t}function go(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;_o(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;vi(d),d.append(u),e.items.clear()}_o(e,t,!l)}else{var f;o={pending:new Set(t),done:new Set},((f=e.outrogroups)==null?e.outrogroups=new Set:f).add(o)}}function _o(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=i();return n(e)?e:e==null?[]:a(e)});t&&xt(p,`{#each ...}`);var m,h=new Map,g=!0;function _(e){y.effect.f&16384||(y.pending.delete(e),y.fallback=f,xo(y,m,l,r,o),f!==null&&(m.length===0?f.f&33554432?(f.f^=ue,Co(f,null,l)):Xi(f):Ji(f,()=>{f=null})))}function v(e){y.pending.delete(e)}var y={effect:zi(()=>{m=H(p);var e=m.length;let n=!1;T&&ft(l)===`[!`!=(e===0)&&(l=dt(),ct(l),st(!1),n=!0);for(var a=new Set,d=N,y=yi(),b=0;bc(l)):(f=Vi(()=>{var e;return c((e=vo)==null?vo=mi():e)}),f.f|=ue)),e>a.size&&(t?To(m,o):Me(``,``,``)),T&&e>0&&ct(dt()),!g)if(h.set(d,a),y){for(let[e,t]of u)a.has(e)||d.skip_effect(t.e);d.oncommit(_),d.ondiscard(v)}else _(d);n&&st(!0),H(p)}),flags:r,items:u,pending:h,outrogroups:null,fallback:f};g=!1,T&&(l=E)}function bo(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function xo(e,t,n,r,i){var o=(r&8)!=0,s=t.length,c=e.items,l=bo(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o){for(v=0;v0){var se=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f){var e;(e=_.nodes)==null||(e=e.a)==null||e.apply()}})}function So(e,n,r,i,a,o,s,c){var l=s&1?s&16?Xr(r):Zr(r,!1,!1):null,u=s&2?Xr(a):null;return t&&l&&(l.trace=()=>{var e;c()[(e=u==null?void 0:u.v)==null?a:e]}),{v:l,i:u,e:Vi(()=>(o(n,l==null?r:l,u==null?a:u,c),()=>{e.delete(i)}))}}function Co(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=gi(r);if(a.before(r),r===i)return;r=o}}function wo(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function To(e,t){let n=new Map,r=e.length;for(let i=0;i{var e;let a=(e=n())==null?null:e;t&&a==null&&Re(),i.ensure(a,a&&(e=>a(e,...r)))},se)}var Do=()=>performance.now(),Oo={tick:e=>requestAnimationFrame(e),now:()=>Do(),tasks:new Set};function ko(){let e=Oo.now();Oo.tasks.forEach(t=>{t.c(e)||(Oo.tasks.delete(t),t.f())}),Oo.tasks.size!==0&&Oo.tick(ko)}function Ao(e){let t;return Oo.tasks.size===0&&Oo.tick(ko),{promise:new Promise(n=>{Oo.tasks.add(t={c:e,f:n})}),abort(){Oo.tasks.delete(t)}}}function jo(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Mo(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=jo(n.trim());t[i]=r.trim()}return t}var No=e=>e,Po=null;function Fo(e){Po=e}function Io(e,t,n){var r,i=((r=Po)==null?V:r).nodes,a,o,s,c=null;i.a!=null||(i.a={element:e,measure(){a=this.element.getBoundingClientRect()},apply(){if(s==null||s.abort(),o=this.element.getBoundingClientRect(),a.left!==o.left||a.right!==o.right||a.top!==o.top||a.bottom!==o.bottom){let e=t()(this.element,{from:a,to:o},n==null?void 0:n());s=Lo(this.element,e,void 0,1,()=>{},()=>{s==null||s.abort(),s=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var i=e.style;c={position:i.position,width:i.width,height:i.height,transform:i.transform},i.position=`absolute`,i.width=n,i.height=r;var o=e.getBoundingClientRect();if(a.left!==o.left||a.top!==o.top){var s=`translate(${a.left-o.left}px, ${a.top-o.top}px)`;i.transform=i.transform?`${i.transform} ${s}`:s}}}},unfix(){if(c){var t=e.style;t.position=c.position,t.width=c.width,t.height=c.height,t.transform=c.transform}}}),i.a.element=e}function Lo(e,t,n,r,i,a){var o=r===1;if(p(t)){var s,c=!1;return zt(()=>{c||(s=Lo(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n==null||n.deactivate(),!(t!=null&&t.duration)&&!(t!=null&&t.delay))return i(),a(),{abort:m,deactivate:m,reset:m,t:()=>r};let{delay:l=0,css:u,tick:d,easing:f=No}=t;var h=[];if(o&&n===void 0&&(d&&d(0,1),u)){var g=Mo(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{var o;v.cancel(),i();var s=(o=n==null?void 0:n.t())==null?1-r:o;n==null||n.abort();var c=r-s,l=t.duration*Math.abs(c),p=[];if(l>0){var m=!1;if(u)for(var h=Math.ceil(l/(1e3/60)),g=0;g<=h;g+=1){var y=s+c*f(g/h),b=Mo(u(y,1-y));p.push(b),m||(m=b.overflow===`hidden`)}m&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return s+c*f(e/l)},d&&Ao(()=>{if(v.playState!==`running`)return!1;var e=_();return d(e,1-e),!0})}v=e.animate(p,{duration:l,fill:`forwards`}),v.onfinish=()=>{_=()=>r,d==null||d(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=m)},deactivate:()=>{a=m},reset:()=>{r===0&&(d==null||d(1,0))},t:()=>_()}}function Ro(e,n,r,i,a,o){let s=T;T&<();var c=t&&o&&(O==null?void 0:O.function[Je]),l=null;T&&E.nodeType===1&&(l=E,lt());var u=T?E:e,d=V,f=new po(u,!1);zi(()=>{let e=n()||null;var s=a?a():r||e===`svg`?Xe:void 0;if(e===null){f.ensure(null,null);return}return f.ensure(e,n=>{if(e){if(l=T?l:bi(e,s),t&&o&&(l.__svelte_meta={parent:Dt,loc:{file:c,line:o[0],column:o[1]}}),Za(l,l),i){var r=null;T&&Ra(e)&&l.append(r=document.createComment(``));var a=T?hi(l):l.appendChild(mi());T&&(a===null?st(!1):ct(a)),Fo(d),i(l,a),r==null||r.remove(),Fo(null)}V.nodes.end=l,n.before(l)}T&&ct(n)}),()=>{}},se),ji(()=>{}),s&&(st(!0),ct(u))}function zo(e,t){var n=void 0,r;Bi(()=>{n!==(n=t())&&(r&&(Gi(r),r=null),n&&(r=Vi(()=>{Ii(()=>n(e))})))})}function Bo(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Uo.includes(r[o-1]))&&(s===r.length||Uo.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Go(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Ko(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function qo(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Ko)),i&&c.push(...Object.keys(i).map(Ko));var l=0,u=-1;let t=e.length;for(var d=0;d{Zo(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),ji(()=>{t.disconnect()})}function $o(e,t,n=t){var r=new WeakSet,i=!0;Ei(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),es);else{var o,s=(o=e.querySelector(i))==null?e.querySelector(`option:not([disabled])`):o;a=s&&es(s)}n(a),e.__value=a,N!==null&&r.add(N)}),Ii(()=>{var a=t();if(e===document.activeElement){var o=gt?tr:N;if(r.has(o))return}if(Zo(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=es(s),n(a))}e.__value=a,i=!1}),Qo(e)}function es(e){return`__value`in e?e.__value:e.value}var ts=Symbol(`class`),ns=Symbol(`style`),rs=Symbol(`is custom element`),is=Symbol(`is html`),as=Ee?`link`:`LINK`,os=Ee?`input`:`INPUT`,ss=Ee?`option`:`OPTION`,cs=Ee?`select`:`SELECT`,ls=Ee?`progress`:`PROGRESS`;function us(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ps(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ps(e,`checked`,null),e.checked=r}}};e[Ce]=n,zt(n),wi()}}function ds(e,t){var n=gs(e);n.value===(n.value=t==null?void 0:t)||e.value===t&&(t!==0||e.nodeName!==ls)||(e.value=t==null?``:t)}function fs(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ps(e,t,n,r){var i=gs(e);if(T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===as)){r||ys(e,t,n==null?``:n);return}i[t]!==(i[t]=n)&&(t===`loading`&&(e[_e]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&vs(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ms(e,t,n,r,i=!1,a=!1){if(T&&i&&e.nodeName===os){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||us(o)}var s=gs(e),c=s[rs],l=!s[is];let u=T&&c;u&&st(!1);var d=t||{},f=e.nodeName===ss;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ho(n.class):(r||n[ts])&&(n.class=null),n[ns]&&(n.style!=null||(n.style=null));var m=vs(e);if(e.nodeName===os&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,ps(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){Jo(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t==null?void 0:t[ts],n[ts]),d[i]=o,d[ts]=n[ts];continue}if(i===`style`){Xo(e,o,t==null?void 0:t[ns],n[ns]),d[i]=o,d[ns]=n[ns];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=ja(r);if(ka(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)U(r,e,o),Wa([r]);else if(o!=null){function y(e){d[i].call(this,e)}d[n]=Ha(r,e,y,t)}}else if(i===`style`)ps(e,i,o);else if(i===`autofocus`)Si(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)fs(e,o);else{var b=i;l||(b=Pa(b));var x=b===`defaultValue`||b===`defaultChecked`;if(o==null&&!c&&!x)if(s[i]=null,b===`value`||b===`checked`){let n=e,r=t===void 0;if(b===`value`){let e=n.defaultValue;n.removeAttribute(b),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(b),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else x||m.includes(b)&&(c||typeof o!=`string`)?(e[b]=o,b in s&&(s[b]=qe)):typeof o!=`function`&&ps(e,b,o,a)}}}return u&&st(!0),d}function hs(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Pn(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===cs,l=!1;if(Bi(()=>{var u=t(...n.map(H)),d=ms(e,r,u,a,o,s);l&&c&&`value`in u&&Zo(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Gi(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Gi(i[t]),i[t]=Vi(()=>zo(e,()=>f))),d[t]=f}r=d}),c){var u=e;Ii(()=>{Zo(u,r.value,!0),Qo(u)})}l=!0})}function gs(e){var t,n;return(n=(t=e)[ye])==null?t[ye]={[rs]:e.nodeName.includes(`-`),[is]:e.namespaceURI===Ye}:n}var _s=new Map;function vs(e){var t=e.getAttribute(`is`)||e.nodeName,n=_s.get(t);if(n)return n;_s.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=d(i)}return n}function ys(e,n,r){var i;t&&(n===`srcset`&&Ss(e,r)||bs((i=e.getAttribute(n))==null?``:i,r)||nt(n,e.outerHTML.replace(e.innerHTML,e.innerHTML&&`...`),String(r)))}function bs(e,t){return e===t?!0:new URL(e,document.baseURI).href===new URL(t,document.baseURI).href}function xs(e){return e.split(`,`).map(e=>e.trim().split(` `).filter(Boolean))}function Ss(e,t){var n=xs(e.srcset),r=xs(t);return r.length===n.length&&r.every(([e,t],r)=>t===n[r][1]&&(bs(n[r][0],e)||bs(e,n[r][0])))}function Cs(e,n,r=n){var i=new WeakSet;Ei(e,`input`,async a=>{t&&e.type===`checkbox`&&Ae();var o=a?e.defaultValue:e.value;if(o=ws(e)?Ts(o):o,r(o),N!==null&&i.add(N),await Ca(),o!==(o=n())){var s,c=e.selectionStart,l=e.selectionEnd,u=e.value.length;if(e.value=(s=o)==null?``:s,l!==null){var d=e.value.length;c===l&&l===u&&d>u?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=c,e.selectionEnd=Math.min(l,d))}}}),(T&&e.defaultValue!==e.value||Ea(n)==null&&e.value)&&(r(ws(e)?Ts(e.value):e.value),N!==null&&i.add(N)),Ri(()=>{t&&e.type===`checkbox`&&Ae();var r=n();if(e===document.activeElement){var a=gt?tr:N;if(i.has(a))return}ws(e)&&r===Ts(e.value)||e.type===`date`&&!r&&!e.value||r!==e.value&&(e.value=r==null?``:r)})}function ws(e){var t=e.type;return t===`number`||t===`range`}function Ts(e){return e===``?null:+e}var Es,Ds=new WeakMap,Os=new WeakMap,ks=new WeakMap,As=new WeakSet,js=class{constructor(e){nn(this,As),k(this,Ds,new WeakMap),k(this,Os,void 0),k(this,ks,void 0),j(ks,this,e)}observe(e,t){var n=M(Ds,this).get(e)||new Set;return n.add(t),M(Ds,this).set(e,n),A(As,this,Ms).call(this).observe(e,M(ks,this)),()=>{var n=M(Ds,this).get(e);n.delete(t),n.size===0&&(M(Ds,this).delete(e),M(Os,this).unobserve(e))}}};Es=js;function Ms(){var e;return(e=M(Os,this))==null?j(Os,this,new ResizeObserver(e=>{for(var t of e){Es.entries.set(t.target,t);for(var n of M(Ds,this).get(t.target)||[])n(t)}})):e}S(js,`entries`,new WeakMap);function Ns(e,t){return e===t||(e==null?void 0:e[he])===t}function Ps(e={},t,n,r){var i=O.r,a=V;return Ii(()=>{var o,s;return Ri(()=>{o=s,s=(r==null?void 0:r())||[],Ea(()=>{Ns(n(...s),e)||(t(e,...s),o&&Ns(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ns(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c==null||c()}}}),e}function Fs(e=!1){let t=O,n=t.l.u;if(!n)return;let r=()=>Da(t.s);if(e){let e=0,n={},i=Vn(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&Pi(()=>{Is(t,r),g(n.b)}),Mi(()=>{let e=Ea(()=>n.m.map(h));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Mi(()=>{Is(t,r),g(n.a)})}function Is(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function Ls(e){var t=Xr(0);return function(){return arguments.length===1?(F(t,H(t)+1),arguments[0]):(H(t),e())}}var Rs={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,n){return t&&Be(`${e.name}.${String(n)}`),!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.has(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function zs(e,n,r){return new Proxy(t?{props:e,exclude:n,name:r,other:{},to_proxy:[]}:{props:e,exclude:n},Rs)}var Bs={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===he||t===ge)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Vs(...e){return new Proxy({props:e},Bs)}function Hs(e,n,r,i){var a=!_t||(r&2)!=0,o=(r&8)!=0,c=(r&16)!=0,l=i,u=!0,d=void 0,f=()=>c&&a?(d!=null||(d=Vn(i)),H(d)):(u&&(u=!1,l=c?Ea(i):i),l);let p;if(o){var m,h,g=he in e||ge in e;p=(m=(h=s(e,n))==null?void 0:h.set)==null?g&&n in e?t=>e[n]=t:void 0:m}var _,v=!1;o?[_,v]=$t(()=>e[n]):_=e[n],_===void 0&&i!==void 0&&(_=f(),p&&(a&&ze(n),p(_)));var y=a?()=>{var t=e[n];return t===void 0?f():(u=!0,t)}:()=>{var t=e[n];return t!==void 0&&(l=void 0),t===void 0?l:t};if(a&&!(r&4))return y;if(p){var b=e.$$legacy;return(function(e,t){return arguments.length>0?((!a||!t||b||v)&&p(t?y():e),e):y()})}var x=!1,S=(r&1?Vn:Gn)(()=>(x=!1,y()));t&&(S.label=n),o&&H(S);var ee=V;return(function(e,t){if(arguments.length>0){let n=t?H(S):a&&o?I(e):e;return F(S,n),x=!0,l!==void 0&&(l=n),e}return ta&&x||ee.f&16384?S.v:H(S)})}if(t){function Us(e){if(!(e in globalThis)){let t;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(t!==void 0)return t;Ve(e)},set:e=>{t=e}})}}Us(`$state`),Us(`$effect`),Us(`$derived`),Us(`$inspect`),Us(`$props`),Us(`$bindable`)}function Ws(e){O===null&&Oe(`onMount`),_t&&O.l!==null?Gs(O).m.push(e):Mi(()=>{let t=Ea(e);if(typeof t==`function`)return t})}function Gs(e){var t,n=e.l;return(t=n.u)==null?n.u={a:[],b:[],m:[]}:t}if(typeof window<`u`){var Ks,qs,Js,Ys;((qs=(Ks=(Ys=(Js=window).__svelte)==null?Js.__svelte={}:Ys).v)==null?Ks.v=new Set:qs).add(`5`)}var Xs={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},Zs=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Qs=Symbol(`lucide-context`),$s=()=>jt(Qs),ec=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),tc=$a(``);function nc(e,t){var n;Mt(t,!0);let r=(n=$s())==null?{}:n,i=Hs(t,`color`,19,()=>{var e;return(e=r.color)==null?`currentColor`:e}),a=Hs(t,`size`,19,()=>{var e;return(e=r.size)==null?24:e}),o=Hs(t,`strokeWidth`,19,()=>{var e;return(e=r.strokeWidth)==null?2:e}),s=Hs(t,`absoluteStrokeWidth`,19,()=>{var e;return(e=r.absoluteStrokeWidth)==null?!1:e}),c=Hs(t,`iconNode`,19,()=>[]),l=zs(t,ec),u=Wn(()=>s()?Number(o())*24/Number(a()):o());var d=tc();hs(d,e=>({...Xs,...e,...l,width:a(),height:a(),stroke:i(),"stroke-width":H(u),class:[`lucide-icon lucide`,r.class,t.name&&`lucide-${t.name}`,t.class]}),[()=>!t.children&&!Zs(l)&&{"aria-hidden":`true`}]);var f=L(d);yo(f,17,c,ho,(e,t)=>{var n=Wn(()=>v(H(t),2));let r=()=>H(n)[0],i=()=>H(n)[1];var a=eo();Ro(_i(a),r,!0,(e,t)=>{hs(e,()=>({...i()}))}),G(e,a)}),Eo(R(f),()=>{var e;return(e=t.children)==null?m:e}),D(d),G(e,d),Nt()}var rc=new Set([`$$slots`,`$$events`,`$$legacy`]);function ic(e,t){let n=zs(t,rc),r=[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`}]];nc(e,Vs({name:`hash`},()=>n,{get iconNode(){return r}}))}var ac=new Set([`$$slots`,`$$events`,`$$legacy`]);function oc(e,t){let n=zs(t,ac),r=[[`path`,{d:`M10 8h.01`}],[`path`,{d:`M12 12h.01`}],[`path`,{d:`M14 8h.01`}],[`path`,{d:`M16 12h.01`}],[`path`,{d:`M18 8h.01`}],[`path`,{d:`M6 8h.01`}],[`path`,{d:`M7 16h10`}],[`path`,{d:`M8 12h.01`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`}]];nc(e,Vs({name:`keyboard`},()=>n,{get iconNode(){return r}}))}var sc=new Set([`$$slots`,`$$events`,`$$legacy`]);function cc(e,t){let n=zs(t,sc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`}]];nc(e,Vs({name:`lock-open`},()=>n,{get iconNode(){return r}}))}var lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function uc(e,t){let n=zs(t,lc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];nc(e,Vs({name:`lock`},()=>n,{get iconNode(){return r}}))}var dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function fc(e,t){let n=zs(t,dc),r=[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`}],[`circle`,{cx:`12`,cy:`10`,r:`3`}]];nc(e,Vs({name:`map-pin`},()=>n,{get iconNode(){return r}}))}var pc=new Set([`$$slots`,`$$events`,`$$legacy`]);function mc(e,t){let n=zs(t,pc),r=[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`}]];nc(e,Vs({name:`message-square`},()=>n,{get iconNode(){return r}}))}var hc=new Set([`$$slots`,`$$events`,`$$legacy`]);function gc(e,t){let n=zs(t,hc),r=[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`}],[`path`,{d:`M12 22V12`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`}],[`path`,{d:`m7.5 4.27 9 5.15`}]];nc(e,Vs({name:`package`},()=>n,{get iconNode(){return r}}))}var _c=new Set([`$$slots`,`$$events`,`$$legacy`]);function vc(e,t){let n=zs(t,_c),r=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];nc(e,Vs({name:`settings`},()=>n,{get iconNode(){return r}}))}var yc=new Set([`$$slots`,`$$events`,`$$legacy`]);function bc(e,t){let n=zs(t,yc),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];nc(e,Vs({name:`star`},()=>n,{get iconNode(){return r}}))}var xc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sc(e,t){let n=zs(t,xc),r=[[`circle`,{cx:`9`,cy:`12`,r:`3`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`}]];nc(e,Vs({name:`toggle-left`},()=>n,{get iconNode(){return r}}))}var Cc=new Set([`$$slots`,`$$events`,`$$legacy`]);function wc(e,t){let n=zs(t,Cc),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Tc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ec(e,t){let n=zs(t,Tc),r=[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash`},()=>n,{get iconNode(){return r}}))}var Dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oc(e,t){let n=zs(t,Dc),r=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]];nc(e,Vs({name:`user`},()=>n,{get iconNode(){return r}}))}var kc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ac(e,t){let n=zs(t,kc),r=[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`}]];nc(e,Vs({name:`wrench`},()=>n,{get iconNode(){return r}}))}var jc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mc(e,t){let n=zs(t,jc),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];nc(e,Vs({name:`x`},()=>n,{get iconNode(){return r}}))}var Nc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pc(e,t){let n=zs(t,Nc),r=[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`}]];nc(e,Vs({name:`zap`},()=>n,{get iconNode(){return r}}))}var Fc=function(e){return e.Item=`item`,e.Weapon=`weapon`,e.Armor=`armor`,e}({}),Ic=function(e){return e.General=`general`,e.Vars=`vars`,e.Switches=`switches`,e.Inv=`inv`,e.Actors=`actors`,e.Map=`map`,e.CommonEv=`commonev`,e.Locks=`locks`,e.Logs=`logs`,e.Shortcuts=`shortcuts`,e.Settings=`settings`,e}({}),Lc=function(e){return e[e.MHP=0]=`MHP`,e[e.MMP=1]=`MMP`,e[e.ATK=2]=`ATK`,e[e.DEF=3]=`DEF`,e[e.MAT=4]=`MAT`,e[e.MDF=5]=`MDF`,e[e.AGI=6]=`AGI`,e[e.LUK=7]=`LUK`,e}({}),Rc=new WeakMap,zc=new class{constructor(){k(this,Rc,P(I([])))}get toasts(){return H(M(Rc,this))}set toasts(e){F(M(Rc,this),e,!0)}show(e,t=`info`,n=1500){let r=Math.random().toString(),i={id:r,type:t,message:e,duration:n};this.toasts=[...this.toasts,i],setTimeout(()=>{this.dismiss(r)},n)}dismiss(e){this.toasts=this.toasts.filter(t=>t.id!==e)}},Bc=e=>!!e&&typeof e.then==`function`,q={vars:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.variables)==null)&&e.length?window.$dataSystem.variables.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.variables)==null?void 0:t[e];return n?String(n):`Variable ${e}`},get:e=>{var t;return(t=window.$gameVariables)==null?void 0:t.value(e)},set:(e,t)=>{if(!window.$gameVariables)return;let n=q.vars.get(e),r=t;if(typeof n==`number`&&typeof t==`string`){let e=Number(t);!isNaN(e)&&t.trim()!==``&&(r=e)}else typeof n==`boolean`&&typeof t==`string`&&(r=t.toLowerCase()===`true`||t===`1`);window.$gameVariables.setValue(e,r)},list:()=>{let e=q.vars.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.vars.name(n),value:q.vars.get(n)});return t}},switches:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.switches)==null)&&e.length?window.$dataSystem.switches.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.switches)==null?void 0:t[e];return n?String(n):`Switch ${e}`},get:e=>{var t;return!!((t=window.$gameSwitches)!=null&&t.value(e))},set:(e,t)=>{window.$gameSwitches&&window.$gameSwitches.setValue(e,!!t)},toggle:e=>{q.switches.set(e,!q.switches.get(e))},list:()=>{let e=q.switches.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.switches.name(n),value:q.switches.get(n)});return t}},inv:{table:e=>e===Fc.Item?window.$dataItems||[]:e===Fc.Weapon?window.$dataWeapons||[]:e===Fc.Armor&&window.$dataArmors||[],data:(e,t)=>q.inv.table(e)[t],count:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.numItems(n):0},maxStack:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.maxItems(n):99},grant:(e,t,n)=>{let r=q.inv.data(e,t);r&&window.$gameParty&&window.$gameParty.gainItem(r,n,!1)},setCount:(e,t,n)=>{let r=q.inv.count(e,t),i=q.inv.maxStack(e,t);n=Math.max(0,Math.min(i,n)),n!==r&&q.inv.grant(e,t,n-r)},list:e=>{let t=q.inv.table(e),n=[];for(let r=1;rwindow.$gameParty?window.$gameParty.gold():0,max:()=>window.$gameParty&&window.$gameParty.maxGold?window.$gameParty.maxGold():99999999,add:e=>{window.$gameParty&&(e>0?window.$gameParty.gainGold(e):e<0&&window.$gameParty.loseGold(-e))},set:e=>{let t=q.gold.max();e=Math.max(0,Math.min(t,e)),q.gold.add(e-q.gold.get())}},party:{members:()=>window.$gameParty?window.$gameParty.members().map(e=>({id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1})):[],steps:()=>window.$gameParty?window.$gameParty.steps():0,playtime:()=>window.Graphics?Math.floor(window.Graphics.frameCount/60):0,recoverAll:()=>{window.$gameParty&&window.$gameParty.members().forEach(e=>{var t;(t=e.recoverAll)==null||t.call(e)})}},map:{list:()=>window.$dataMapInfos?window.$dataMapInfos.filter(e=>!!e).map(e=>({id:e.id,name:e.name,parentId:e.parentId})):[],current:()=>!window.$gameMap||!window.$gamePlayer?null:{mapId:window.$gameMap.mapId(),x:window.$gamePlayer.x,y:window.$gamePlayer.y,dir:window.$gamePlayer.direction()},teleport:(e,t,n,r=0,i=0)=>{window.$gamePlayer&&window.$gamePlayer.reserveTransfer(e,t,n,r,i)},speed:e=>{window.$gamePlayer&&(e=Math.max(1,Math.min(8,e)),window.$gamePlayer.setMoveSpeed(e))},events:()=>!window.$gameMap||typeof window.$gameMap.events!=`function`?[]:(window.$gameMap.events()||[]).map(e=>{let t=typeof e.event==`function`?e.event():null,n=t&&t.name?t.name:`Event ${e._eventId||0}`,r=typeof e.x==`number`?e.x:e._x||0,i=typeof e.y==`number`?e.y:e._y||0;return{id:typeof e.eventId==`function`?e.eventId():e._eventId||0,name:n,x:r,y:i}}),loadMapEvents:async e=>{if(e<=0)return[];try{let t=`data/Map${e.toString().padStart(3,`0`)}.json`,n=await(await fetch(t)).json();return!n||!n.events?[]:n.events.filter(e=>e).map(e=>{let t=e.name||`Event ${e.id}`;if(t.match(/^EV\d+$/i)){if(e.note)t=`${t} (${e.note.split(` +`)[0].trim()})`;else if(e.pages&&e.pages.length>0){let n=e.pages[0].list;if(n&&n.length>0){let e=n.find(e=>e.code===108||e.code===401);if(e&&e.parameters&&e.parameters[0]){let n=String(e.parameters[0]).substring(0,20).trim();n&&(t=`${t} [${n}]`)}}}}return{id:e.id,name:t,x:e.x,y:e.y}})}catch(t){return console.warn(`Failed to load events for map`,e,t),[]}}},commonev:{list:()=>window.$dataCommonEvents?window.$dataCommonEvents.filter(e=>e&&e.name).map(e=>({id:e.id,name:e.name})):[],run:e=>{window.$gameTemp&&window.$gameTemp.reserveCommonEvent(e)}},battle:{inBattle:()=>!window.SceneManager||!window.SceneManager._scene?!1:window.SceneManager._scene.constructor.name===`Scene_Battle`,canExecuteBattleEnd:()=>q.battle.inBattle()&&window.BattleManager&&window.BattleManager._phase!==`battleEnd`,instantWin:()=>{!q.battle.inBattle()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.isDead()||(e.setHp(0),e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId()),e.performCollapse&&e.performCollapse(),e.refresh&&e.refresh())}),window.BattleManager.checkBattleEnd())},flee:()=>{!q.battle.inBattle()||!window.BattleManager||window.BattleManager.processAbort()},forceVictory:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processVictory(),zc.show(`Forced victory from battle!`,`success`))},forceDefeat:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||(window.$gameParty.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processDefeat(),zc.show(`Forced defeat from battle...`,`warn`))},forceEscape:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||!window.SoundManager||(window.$gameParty.performEscape(),window.SoundManager.playEscape(),window.BattleManager._escaped=!0,window.BattleManager.processEscape(),zc.show(`Forced escape from battle`,`success`))},changeAllEnemyHealth:e=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all enemies`,`success`))},recoverAllEnemy:()=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all enemies`,`success`))},changeAllPartyHealth:e=>{window.$gameParty&&(window.$gameParty.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all party members`,`success`))},recoverAllParty:()=>{window.$gameParty&&(window.$gameParty.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all party members`,`success`))}},scene:{gotoTitle:()=>{window.SceneManager&&window.Scene_Title&&window.SceneManager.goto(window.Scene_Title)},toggleSaveScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Save?window.SceneManager.pop():t===window.Scene_Load?window.SceneManager.goto(window.Scene_Save):window.SceneManager.push(window.Scene_Save)},toggleLoadScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Load?window.SceneManager.pop():t===window.Scene_Save?window.SceneManager.goto(window.Scene_Load):window.SceneManager.push(window.Scene_Load)},quickSave:(e=1)=>{window.$gameSystem&&window.DataManager?(window.$gameSystem.onBeforeSave(),window.DataManager.saveGame(e),zc.show(`Game Saved - Slot ${e}`,`success`)):zc.show(`Quick Save failed`,`error`)},quickLoad:async(e=1)=>{if(window.DataManager&&window.SceneManager&&window.Scene_Map)try{let t=window.DataManager.loadGame(e);Bc(t)?(await t,q.scene.completeQuickLoad(e)):t?q.scene.completeQuickLoad(e):zc.show(`Quick Load failed`,`error`)}catch(e){console.error(e),zc.show(`Quick Load failed`,`error`)}else zc.show(`Quick Load failed`,`error`)},completeQuickLoad:e=>{var t,n,r,i,a,o;if(!(!window.SceneManager||!window.Scene_Map)){if(window.$gameSystem&&window.$dataSystem&&typeof window.$gameSystem.versionId==`function`&&typeof window.$dataSystem.versionId==`number`&&window.$gameSystem.versionId()!==window.$dataSystem.versionId&&window.$gameMap&&window.$gamePlayer){var s,c;let e=window.$gameMap.mapId(),t=window.$gamePlayer.x,n=window.$gamePlayer.y,r=window.$gamePlayer.direction();window.$gamePlayer.reserveTransfer(e,t,n,r,0),(s=(c=window.$gamePlayer).requestMapReload)==null||s.call(c)}(t=window.SoundManager)==null||(n=t.playLoad)==null||n.call(t),(r=window.SceneManager._scene)==null||(i=r.fadeOutAll)==null||i.call(r),window.SceneManager.goto(window.Scene_Map),(a=window.$gameSystem)==null||(o=a.onAfterLoad)==null||o.call(a),zc.show(`Game Loaded - Slot ${e}`,`success`)}}},system:{openDevTool:()=>{if(typeof window<`u`&&window.require)try{let e=window.require(`nw.gui`);e&&e.Window&&e.Window.get&&e.Window.get().showDevTools()}catch(e){}}}},J={list:()=>window.$dataActors?window.$dataActors.filter(e=>!!e).map(e=>{let t=window.$gameActors?window.$gameActors.actor(e.id):null;return{id:e.id,name:t?t.name():e.name,level:t&&(typeof t.level==`function`?t.level():t._level)||1,inParty:t&&window.$gameParty?window.$gameParty.members().includes(t):!1}}):[],get:e=>{var t;if(!window.$gameActors)return null;let n=window.$gameActors.actor(e);if(!n)return null;let r=[];for(let e=0;e<8;e++)r.push({id:e,value:n.param?n.param(e):0});let i=window.$dataSkills?window.$dataSkills.filter(e=>!!e).map(e=>({id:e.id,name:e.name,learned:n.hasSkill?n.hasSkill(e.id):!1})):[],a=n.equips&&n.equips()?n.equips().map((e,t)=>({slotId:t,name:e?e.name:`Empty`,item:e})):[],o=n.states&&n.states()?n.states().map(e=>({id:e.id,name:e.name})):[];return{id:n.actorId(),name:n.name(),level:typeof n.level==`function`?n.level()||1:n._level||1,exp:n.currentExp?n.currentExp():0,nextExp:n.nextRequiredExp?n.nextRequiredExp():0,hp:n.hp,mp:n.mp,tp:n.tp,mhp:n.mhp,mmp:n.mmp,mtp:n.maxTp?n.maxTp():100,params:r,skills:i,states:o,equips:a,inParty:(t=window.$gameParty)==null?void 0:t.members().includes(n)}},setLevel:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeLevel&&r.changeLevel(Math.max(1,Math.min(r.maxLevel?r.maxLevel():99,t)),!1)},setExp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeExp&&r.changeExp(Math.max(0,t),!1)},setHp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setHp&&r.setHp(Math.max(0,Math.min(r.mhp,t)))},setMp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setMp&&r.setMp(Math.max(0,Math.min(r.mmp,t)))},setTp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e),i=r&&r.maxTp?r.maxTp():100;r&&r.setTp&&r.setTp(Math.max(0,Math.min(i,t)))},addParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);i&&i.addParam&&i.addParam(t,n)},setParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);if(!i||!i.param||!i.addParam)return;let a=1;i.paramRate&&(a*=i.paramRate(t)),i.paramBuffRate&&(a*=i.paramBuffRate(t)),a===0&&(a=1);let o=i.paramBase?i.paramBase(t):0,s=i.paramPlus?i.paramPlus(t):0,c=Math.round(n/a)-o-s;i.addParam(t,c)},learnSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.learnSkill&&r.learnSkill(t)},forgetSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.forgetSkill&&r.forgetSkill(t)},recover:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.recoverAll&&n.recoverAll()},setName:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setName&&r.setName(String(t))},addToParty:e=>{window.$gameParty&&window.$gameParty.addActor&&window.$gameParty.addActor(e)},removeFromParty:e=>{window.$gameParty&&window.$gameParty.removeActor&&window.$gameParty.removeActor(e)},listStates:()=>window.$dataStates?window.$dataStates.filter(e=>!!(e&&e.name)):[],addState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.addState&&r.addState(t)},removeState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.removeState&&r.removeState(t)},clearStates:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.clearStates&&n.clearStates()}},Y=I({vars:new Map,switches:new Map,items:new Map,gold:null,stats:new Map,noclip:!1}),Vc=!1,Hc=null,X={install:()=>{if(!Vc&&!(typeof window>`u`)&&!window.__FORGE_LOCKS__){if(window.__FORGE_LOCKS__=!0,window.Game_Variables&&window.Game_Variables.prototype.setValue){let e=window.Game_Variables.prototype.setValue;window.Game_Variables.prototype.setValue=function(t,n){Y.vars.has(t)&&(n=Y.vars.get(t)),e.call(this,t,n)}}if(window.Game_Switches&&window.Game_Switches.prototype.setValue){let e=window.Game_Switches.prototype.setValue;window.Game_Switches.prototype.setValue=function(t,n){Y.switches.has(t)&&(n=Y.switches.get(t)),e.call(this,t,n)}}if(window.Game_Party&&window.Game_Party.prototype.gainGold&&(Hc=window.Game_Party.prototype.gainGold,window.Game_Party.prototype.gainGold=function(e){Y.gold===null&&Hc.call(this,e)}),window.Scene_Base&&window.Scene_Base.prototype.update){let e=window.Scene_Base.prototype.update;window.Scene_Base.prototype.update=function(){e.call(this),X.tick()}}if(window.DataManager){if(window.DataManager.setupNewGame){let e=window.DataManager.setupNewGame;window.DataManager.setupNewGame=function(...t){e.apply(this,t)}}if(window.DataManager.extractSaveContents){let e=window.DataManager.extractSaveContents;window.DataManager.extractSaveContents=function(...t){let n=e.apply(this,t);return X.applyValueLocks(),n}}}X.loadFromStorage(),Vc=!0}},saveToStorage:()=>{try{let e={vars:Array.from(Y.vars.entries()),switches:Array.from(Y.switches.entries()),items:Array.from(Y.items.entries()),gold:Y.gold,stats:Array.from(Y.stats.entries()),noclip:Y.noclip};localStorage.setItem(`forge:locks`,JSON.stringify(e))}catch(e){}},loadFromStorage:()=>{try{let e=localStorage.getItem(`forge:locks`);if(e){let t=JSON.parse(e);Y.vars=new Map(t.vars||[]),Y.switches=new Map(t.switches||[]),Y.items=new Map(t.items||[]),Y.gold=t.gold===void 0?null:t.gold,Y.stats=new Map(t.stats||[]),t.noclip&&X.setNoclip(!0,!0)}}catch(e){}},tick:()=>{if(X.applyValueLocks(),Y.noclip&&window.$gamePlayer&&!window.$gamePlayer.isThrough()&&window.$gamePlayer.setThrough(!0),Y.gold!==null&&window.$gameParty){let e=window.$gameParty.gold();e!==Y.gold&&Hc&&Hc.call(window.$gameParty,Y.gold-e)}if(Y.stats.size>0&&window.$gameActors)for(let[e,t]of Y.stats.entries()){let[n,r]=e.split(`:`),i=parseInt(n,10),a=window.$gameActors.actor(i);if(a){if(r===`hp`&&a.hp!==t)J.setHp(i,t);else if(r===`mp`&&a.mp!==t)J.setMp(i,t);else if(r===`tp`&&a.tp!==t)J.setTp(i,t);else if(r===`level`&&(typeof a.level==`function`?a.level():a._level)!==t)J.setLevel(i,t);else if(r===`exp`&&(a.currentExp?a.currentExp():0)!==t)J.setExp(i,t);else if(r.startsWith(`param_`)){let e=parseInt(r.split(`_`)[1],10);a.param&&a.param(e)!==t&&J.setParam(i,e,t)}}}if(Y.items.size>0&&window.$gameParty)for(let[e,t]of Y.items.entries()){let[n,r]=e.split(`:`),i=parseInt(r,10),a=n;q.inv.setCount(a,i,t)}},applyValueLocks:()=>{if(Y.vars.size>0&&window.$gameVariables)for(let[e,t]of Y.vars.entries())window.$gameVariables.value(e)!==t&&window.$gameVariables.setValue(e,t);if(Y.switches.size>0&&window.$gameSwitches)for(let[e,t]of Y.switches.entries())window.$gameSwitches.value(e)!==t&&window.$gameSwitches.setValue(e,t)},freezeVar:(e,t)=>{t?Y.vars.set(e,q.vars.get(e)):Y.vars.delete(e),Y.vars=new Map(Y.vars),X.saveToStorage()},freezeSwitch:(e,t)=>{t?Y.switches.set(e,q.switches.get(e)):Y.switches.delete(e),Y.switches=new Map(Y.switches),X.saveToStorage()},freezeItem:(e,t,n)=>{let r=`${e}:${t}`;n?Y.items.set(r,q.inv.count(e,t)):Y.items.delete(r),Y.items=new Map(Y.items),X.saveToStorage()},freezeGold:e=>{e?Y.gold=q.gold.get():Y.gold=null,X.saveToStorage()},freezeStat:(e,t,n)=>{let r=`${e}:${t}`;if(n){let n=J.get(e),i=0;if(n){if(t===`hp`||t===`mp`||t===`tp`||t===`level`||t===`exp`)i=n[t];else if(t.startsWith(`param_`)){let e=parseInt(t.split(`_`)[1],10),r=n.params.find(t=>t.id===e);r&&(i=r.value)}}Y.stats.set(r,i)}else Y.stats.delete(r);Y.stats=new Map(Y.stats),X.saveToStorage()},setNoclip:(e,t=!1)=>{Y.noclip=e,window.$gamePlayer&&window.$gamePlayer.setThrough(e),t||zc.show(`Noclip: ${e?`ON`:`OFF`}`,e?`success`:`info`)},clearAll:()=>{Y.vars.clear(),Y.vars=new Map,Y.switches.clear(),Y.switches=new Map,Y.items.clear(),Y.items=new Map,Y.stats.clear(),Y.stats=new Map,Y.gold=null,X.setNoclip(!1,!0),X.saveToStorage()},summary:()=>{let e=[];return Y.vars.forEach((t,n)=>e.push({type:`var`,id:n,label:q.vars.name(n),value:t})),Y.switches.forEach((t,n)=>e.push({type:`switch`,id:n,label:q.switches.name(n),value:t})),Y.items.forEach((t,n)=>{let[r,i]=n.split(`:`),a=parseInt(i,10),o=q.inv.data(r,a);e.push({type:`item`,key:n,label:o?o.name:n,value:t})}),Y.gold!==null&&e.push({type:`gold`,id:`gold`,label:`Gold`,value:Y.gold}),Y.stats.forEach((t,n)=>{var r;let[i,a]=n.split(`:`),o=parseInt(i,10),s=((r=J.get(o))==null?void 0:r.name)||`Actor ${o}`,c=`${s} ${a.toUpperCase()}`,l=`stat`;a.startsWith(`param_`)&&(l=`param`,c=`${s} ${[`Max HP`,`Max MP`,`Attack`,`Defense`,`M. Attack`,`M. Defense`,`Agility`,`Luck`][parseInt(a.split(`_`)[1],10)]||a}`),e.push({type:l,key:n,label:c,value:t})}),e}},Z=I({god:!1,ohko:!1,noEncounter:!1,speed:1,speedBoost:2,speedUseKey:!0,speedHeld:!1,messageSkip:!1}),Uc=!1,Wc={install:()=>{if(!Uc&&!(typeof window>`u`)&&!window.__FORGE_CHEATS__){if(window.__FORGE_CHEATS__=!0,window.Game_Action&&window.Game_Action.prototype.executeHpDamage){let e=window.Game_Action.prototype.executeHpDamage;window.Game_Action.prototype.executeHpDamage=function(t,n){Z.god&&t.isActor()&&n>0&&(n=0),Z.ohko&&this.subject().isActor()&&t.isEnemy()&&(n=t.hp),e.call(this,t,n)}}if(window.Game_Battler&&window.Game_Battler.prototype.gainHp){let e=window.Game_Battler.prototype.gainHp;window.Game_Battler.prototype.gainHp=function(t){Z.god&&this.isActor()&&t<0&&(t=0),e.call(this,t)}}if(window.Game_Actor&&window.Game_Actor.prototype.executeFloorDamage){let e=window.Game_Actor.prototype.executeFloorDamage;window.Game_Actor.prototype.executeFloorDamage=function(){Z.god||e.call(this)}}if(window.Game_Player&&window.Game_Player.prototype.encounterProgressValue){let e=window.Game_Player.prototype.encounterProgressValue;window.Game_Player.prototype.encounterProgressValue=function(){return Z.noEncounter?0:e.call(this)}}if(window.SceneManager&&window.SceneManager.updateScene){let e=window.SceneManager.updateScene,t=0,n=e=>{if(e.isCurrentSceneStarted){if(!e.isCurrentSceneStarted())return!1}else if(e._scene&&e._scene.isStarted&&!e._scene.isStarted())return!1;return!(e.isSceneChanging&&e.isSceneChanging()||window.$gamePlayer&&window.$gamePlayer.isTransferring&&window.$gamePlayer.isTransferring()||window.DataManager&&window.DataManager.isMapLoaded&&!window.DataManager.isMapLoaded())};window.SceneManager.updateScene=function(){let r=Z.speedHeld?Z.speedBoost:Z.speed;if(Z.speedUseKey&&!Z.speedHeld&&(r=1),r>=1)if(e.call(this),r>1&&this._scene&&typeof this._scene.update==`function`&&n(this)){t+=r-1;let e=0;for(;t>=1&&e++<64;){--t;try{this._scene.update()}catch(e){t=0;break}}}else t=0;else if(t+=r,t>=1)--t,e.call(this);else if(this._scene){let t=this._scene.update;this._scene.update=function(){};try{e.call(this)}finally{this._scene.update=t}}}}if(window.Window_Message&&window.Window_Message.prototype.updateShowFast){let e=window.Window_Message.prototype.updateShowFast;window.Window_Message.prototype.updateShowFast=function(){e.call(this),Z.messageSkip&&(this._showFast=!0,this._pauseSkip=!0)}}if(window.Window_Message&&window.Window_Message.prototype.updateInput){let e=window.Window_Message.prototype.updateInput;window.Window_Message.prototype.updateInput=function(){let t=e.call(this);return this.pause&&Z.messageSkip?(this.pause=!1,this._textState||this.terminateMessage(),!0):t}}if(window.Window_ScrollText&&window.Window_ScrollText.prototype.scrollSpeed){let e=window.Window_ScrollText.prototype.scrollSpeed;window.Window_ScrollText.prototype.scrollSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t*=100),t}}if(window.Window_BattleLog&&window.Window_BattleLog.prototype.messageSpeed){let e=window.Window_BattleLog.prototype.messageSpeed;window.Window_BattleLog.prototype.messageSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t=1),t}}Uc=!0}},setGod:e=>{Z.god=e},setOhko:e=>{Z.ohko=e},setNoEncounter:e=>{Z.noEncounter=e},setSpeed:e=>{Z.speed=e},setSpeedBoost:e=>{Z.speedBoost=e},setSpeedUseKey:e=>{Z.speedUseKey=e},startSpeedHold:()=>{Z.speedHeld=!0},stopSpeedHold:()=>{Z.speedHeld=!1},setMessageSkip:e=>{Z.messageSkip=e}},Gc={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":19,capslock:20,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,meta:91,rightclick:93,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,"numpad*":106,"numpad+":107,"numpad-":109,"numpad.":110,"numpad/":111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,numlock:144,scrolllock:145,mycomputer:182,mycalculator:183,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},Kc={};for(let e of Object.keys(Gc))Kc[e.toLowerCase()]=Gc[e];var qc={};for(let e of Object.keys(Kc))qc[Kc[e]]=e;var Jc=new Set([17,18,16,91]),Yc=class e{constructor(e,t,n,r,i){S(this,`code`,void 0),S(this,`ctrl`,void 0),S(this,`alt`,void 0),S(this,`shift`,void 0),S(this,`meta`,void 0),this.code=e,this.ctrl=t,this.alt=n,this.shift=r,this.meta=i}static createEmpty(){return new e(256,!1,!1,!1,!1)}static fromKey(t){return new e(t.code,t.ctrl,t.alt,t.shift,t.meta)}static fromString(t){if(!t||t===``)return e.createEmpty();let n=t.toLowerCase().split(` `);if(n.length===0)throw Error(`No keymap found`);let r=null,i=!1,a=!1,o=!1,s=!1;for(let e of n)switch(e=e.trim(),e){case`ctrl`:case`control`:i=!0;break;case`alt`:a=!0;break;case`shift`:o=!0;break;case`meta`:s=!0;break;default:if(r!==null)throw Error(`Cannot combine multiple standard keys`);if(!Object.prototype.hasOwnProperty.call(Kc,e))throw Error(`Unknown key: ${e}`);r=Kc[e]}return r===null&&(r=256),new e(r,i,a,o,s)}static fromEvent(t){return Jc.has(t.keyCode)?e._fromCombiningAloneEvent(t):new e(t.keyCode,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey)}static _fromCombiningAloneEvent(t){return new e(256,t.keyCode===17||t.ctrlKey,t.keyCode===18||t.altKey,t.keyCode===16||t.shiftKey,t.keyCode===91||t.metaKey)}isEmpty(){return this.code===256&&!this.ctrl&&!this.alt&&!this.shift&&!this.meta}isCombiningKey(){return this.code===256&&!this.isEmpty()}equals(e){return this.code===e.code&&this.ctrl===e.ctrl&&this.alt===e.alt&&this.shift===e.shift&&this.meta===e.meta}contains(e){return(!e.ctrl||this.ctrl)&&(!e.alt||this.alt)&&(!e.shift||this.shift)&&(!e.meta||this.meta)&&(e.isCombiningKey()||e.code===this.code)}countPressingKeys(){let e=0;return this.code!==256&&(e+=1),this.ctrl&&(e+=1),this.alt&&(e+=1),this.shift&&(e+=1),this.meta&&(e+=1),e}asStringArray(){if(this.isEmpty())return[];let e=[];return this.ctrl&&e.push(`ctrl`),this.alt&&e.push(`alt`),this.shift&&e.push(`shift`),this.meta&&e.push(`meta`),this.code!==256&&e.push(qc[this.code]||`key_${this.code}`),e}adjustCombiningKey(e){this.ctrl=e.ctrlKey,this.alt=e.altKey,this.shift=e.shiftKey,this.meta=e.metaKey}add(e){if(Jc.has(e)){this._setCombiningKey(e,!0);return}this.code=e}remove(e){if(Jc.has(e)){this._setCombiningKey(e,!1);return}this.code===e&&(this.code=256)}_setCombiningKey(e,t){switch(e){case 17:this.ctrl=t;break;case 18:this.alt=t;break;case 16:this.shift=t;break;case 91:this.meta=t;break}}capitalize(e){return e.length===0?``:e.length===1?e.charAt(0).toUpperCase():e.charAt(0).toUpperCase()+e.slice(1)}asString(){return this.asStringArray().join(` `)}asDisplayString(){return this.asStringArray().map(e=>this.capitalize(e)).join(` + `)}},Q=I({visible:!1,activeTab:Ic.General,targetActorId:null,targetActorStat:null,targetVarId:null,targetSwitchId:null,targetItemKey:null}),$={currentKey:Yc.createEmpty(),shortcuts:[],activeShortcutIds:new Set,init:e=>{let t=localStorage.getItem(`forge:shortcuts`),n={};if(t)try{n=JSON.parse(t)}catch(e){}$.shortcuts=e.map(e=>{let t=n[e.id];return{...e,keyStr:(t==null?void 0:t.keyStr)===void 0?e.keyStr:t.keyStr,enabled:(t==null?void 0:t.enabled)===void 0?e.enabled:t.enabled,params:(t==null?void 0:t.params)||e.params}}),window.addEventListener(`keydown`,$.onKeyDown.bind($),{capture:!0}),window.addEventListener(`keyup`,$.onKeyUp.bind($),{capture:!0})},save:()=>{let e={};$.shortcuts.forEach(t=>{e[t.id]={keyStr:t.keyStr,enabled:t.enabled,params:t.params}}),localStorage.setItem(`forge:shortcuts`,JSON.stringify(e))},get:e=>$.shortcuts.find(t=>t.id===e),update:(e,t)=>{let n=$.get(e);n&&(Object.assign(n,t),$.save())},_isFocusedOnInput:()=>{let e=document.activeElement;for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable)},_hasSelection:()=>{var e;if(!Q.visible)return!1;let t=((e=window.getSelection())==null?void 0:e.toString())||``;if(!t){let e=document.getElementById(`forge-mvmz-host`);e&&e.shadowRoot&&e.shadowRoot.getSelection&&(t=e.shadowRoot.getSelection().toString()||``)}return t.trim().length>0},onKeyDown:e=>{if(!$._isFocusedOnInput()&&!$._hasSelection()){if(e.repeat){let t=!1;for(let e of $.activeShortcutIds){let n=$.get(e);n&&n.onRepeat&&(n.onRepeat(n.params),t=!0)}t&&(e.preventDefault(),e.stopPropagation());return}$.currentKey.add(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e)}},onKeyUp:e=>{$._isFocusedOnInput()||($.currentKey.remove(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e))},processTransitions:e=>{let t=new Set;for(let e of $.shortcuts)if(!(!e.enabled||!e.keyStr))try{let n=Yc.fromString(e.keyStr),r=!1;r=e.combiningKeyAlone?$.currentKey.contains(n):n.equals($.currentKey),r&&t.add(e.id)}catch(t){console.error(`[FORGE] Error parsing keyStr for ${e.id}:`,t)}let n=Array.from($.activeShortcutIds);for(let e of n)if(!t.has(e)){let t=$.get(e);if(t){var r;(r=t.onLeave)==null||r.call(t,t.params)}$.activeShortcutIds.delete(e)}let i=!1;for(let e of t)if(!$.activeShortcutIds.has(e)){let t=$.get(e);if(t){var a;(a=t.onEnter)==null||a.call(t,t.params),$.activeShortcutIds.add(e),i=!0}}i&&e.type===`keydown`&&(e.preventDefault(),e.stopPropagation())}},Xc=I({inactiveOpacity:80,autoOpen:!1,rememberPosition:!0,favorites:{},showLauncher:!0,quickSaveSlot:1}),Zc={load:()=>{try{let e=localStorage.getItem(`forge:config`);if(e){let t=JSON.parse(e);typeof t.inactiveOpacity==`number`&&(Xc.inactiveOpacity=t.inactiveOpacity),typeof t.autoOpen==`boolean`&&(Xc.autoOpen=t.autoOpen),typeof t.rememberPosition==`boolean`&&(Xc.rememberPosition=t.rememberPosition),t.favorites&&typeof t.favorites==`object`&&(Xc.favorites=t.favorites),typeof t.showLauncher==`boolean`&&(Xc.showLauncher=t.showLauncher),typeof t.quickSaveSlot==`number`&&(Xc.quickSaveSlot=t.quickSaveSlot)}}catch(e){}},save:()=>{localStorage.setItem(`forge:config`,JSON.stringify({inactiveOpacity:Xc.inactiveOpacity,autoOpen:Xc.autoOpen,rememberPosition:Xc.rememberPosition,favorites:Xc.favorites,showLauncher:Xc.showLauncher,quickSaveSlot:Xc.quickSaveSlot}))},toggleFavorite:(e,t)=>{Xc.favorites[e]||(Xc.favorites[e]=[]);let n=Xc.favorites[e].indexOf(t);n===-1?Xc.favorites[e].push(t):Xc.favorites[e].splice(n,1),Zc.save()},isFavorite:(e,t)=>{var n;return((n=Xc.favorites[e])==null?void 0:n.includes(t))||!1},resetAll:()=>{confirm(`Are you sure you want to reset all Forge settings, locks, and saved data? This cannot be undone.`)&&(localStorage.clear(),window.location.reload())}},Qc=I({entries:[]}),$c=!1,el=1,tl={install:()=>{if(!$c&&!(typeof window>`u`)&&!window.__FORGE_LOGS__){if(window.__FORGE_LOGS__=!0,window.Game_Message&&window.Game_Message.prototype.add){let e=window.Game_Message.prototype.add;window.Game_Message.prototype.add=function(t){e.call(this,t);let n=``;typeof this.speakerName==`function`&&(n=this.speakerName()||``),tl.addEntry(n,t)}}$c=!0}},addEntry:(e,t)=>{let n=t;if(n=n.replace(/\\\\/g,`\x1B`),n=n.replace(/\\x1b/g,`\x1B`),n=n.replace(/\\V\[(\d+)\]/gi,(e,t)=>window.$gameVariables?String(window.$gameVariables.value(parseInt(t))):``),n=n.replace(/\\N\[(\d+)\]/gi,(e,t)=>{var n;return window.$gameActors&&((n=window.$gameActors.actor(parseInt(t)))==null?void 0:n.name())||``}),n=n.replace(/\\P\[(\d+)\]/gi,(e,t)=>{let n=(window.$gameParty?window.$gameParty.members():[])[parseInt(t)-1];return n?n.name():``}),n=n.replace(/\\G/gi,()=>window.TextManager?window.TextManager.currencyUnit:``),n=n.replace(/\x1bC\[\d+\]/gi,``),n=n.replace(/\x1bI\[\d+\]/gi,``),n=n.replace(/\x1b[\\{\\}\.\|!><\^]/g,``),n=n.replace(/\x1b[A-Z]\[.*?\]/gi,``),n=n.replace(/\x1b/g,``),!e){let t=n.match(/^\\n<([^>]+)>/i);t&&(e=t[1],n=n.replace(/^\\n<([^>]+)>/i,``))}if(n=n.replace(/\n/g,` `),n=n.replace(/\s+/g,` `),n=n.trim(),!n)return;let r=Date.now(),i=Qc.entries[Qc.entries.length-1];i&&i.speaker===e&&r-i.timestamp<100?(i.text+=` ${n}`,i.timestamp=r):Qc.entries.push({id:el++,speaker:e,text:n,timestamp:r})},clear:()=>{Qc.entries=[]}},nl=[{id:`toggle_ui`,name:`Toggle Cheat UI`,desc:`Show/Hide the cheat panel`,keyStr:`Ctrl C`,enabled:!0,required:!0,onEnter:()=>Q.visible=!Q.visible},{id:`toggle_save_recall`,name:`Toggle Save Locations Tab`,desc:`Open/close panel on Bookmarks`,keyStr:`Ctrl M`,enabled:!0,onEnter:()=>{Q.visible=!0,Q.activeTab=Ic.Map}},{id:`quick_save`,name:`Quick Save`,desc:`Quick save to configured slot`,keyStr:`Ctrl S`,enabled:!0,onEnter:()=>q.scene.quickSave(Xc.quickSaveSlot)},{id:`quick_load`,name:`Quick Load`,desc:`Quick load from configured slot`,keyStr:`Ctrl Q`,enabled:!0,onEnter:()=>q.scene.quickLoad(Xc.quickSaveSlot)},{id:`open_save_scene`,name:`Open Save Scene`,desc:`Push or pop Save scene`,keyStr:`Ctrl [`,enabled:!0,onEnter:()=>q.scene.toggleSaveScene()},{id:`open_load_scene`,name:`Open Load Scene`,desc:`Push or pop Load scene`,keyStr:`Ctrl ]`,enabled:!0,onEnter:()=>q.scene.toggleLoadScene()},{id:`goto_title`,name:`Go to Title`,desc:`Return to title screen`,keyStr:`Ctrl T`,enabled:!0,onEnter:()=>q.scene.gotoTitle()},{id:`force_victory`,name:`Force Victory`,desc:`Force battle victory`,keyStr:`Ctrl V`,enabled:!0,onEnter:()=>q.battle.forceVictory()},{id:`force_defeat`,name:`Force Defeat`,desc:`Force battle defeat`,keyStr:`Ctrl D`,enabled:!0,onEnter:()=>q.battle.forceDefeat()},{id:`force_escape`,name:`Force Escape`,desc:`Force battle escape`,keyStr:`Ctrl E`,enabled:!0,onEnter:()=>q.battle.forceEscape()},{id:`toggle_noclip`,name:`Toggle Noclip`,desc:`Walk through walls`,keyStr:`Alt W`,enabled:!0,onEnter:()=>X.setNoclip(!Y.noclip)},{id:`enemy_wound`,name:`Enemies HP to 1`,desc:`Wound all active enemies`,keyStr:`Alt 1`,enabled:!0,onEnter:()=>q.battle.changeAllEnemyHealth(1)},{id:`enemy_recovery`,name:`Recover Enemies`,desc:`Fully recover enemies`,keyStr:`Alt 0`,enabled:!0,onEnter:()=>q.battle.recoverAllEnemy()},{id:`party_wound`,name:`Party HP to 1`,desc:`Wound all party members`,keyStr:`Alt 2`,enabled:!0,onEnter:()=>q.battle.changeAllPartyHealth(1)},{id:`party_recovery`,name:`Recover Party`,desc:`Fully recover party members`,keyStr:`Alt 9`,enabled:!0,onEnter:()=>q.battle.recoverAllParty()},{id:`trigger_encounter`,name:`Trigger Encounter`,desc:`Next step triggers random battle`,keyStr:``,enabled:!0,onEnter:()=>{window.$gamePlayer&&(window.$gamePlayer._encounterCount=0)}},{id:`speed_hold`,name:`Speed Hold Key`,desc:`Hold to fast forward game`,keyStr:`Ctrl`,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.startSpeedHold(),onLeave:()=>Wc.stopSpeedHold()},{id:`skip_message`,name:`Skip Message Key`,desc:`Hold to skip dialogs`,keyStr:``,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.setMessageSkip(!0),onLeave:()=>Wc.setMessageSkip(!1)},{id:`open_dev_tool`,name:`Open Dev Tools`,desc:`Show Nw.js developer tools`,keyStr:`F12`,enabled:!0,onEnter:()=>q.system.openDevTool()}],rl=W(``);function il(e,t){var n=rl();U(`mousedown`,n,function(...e){var n;(n=t.onmousedown)==null||n.apply(this,e)}),G(e,n)}Wa([`mousedown`]);var al=W(``);function ol(e,t){Mt(t,!0);let n=P(0),r=P(0);Ws(()=>{try{let e=JSON.parse(localStorage.getItem(`forge:launcherPos`)||`null`);e?(F(n,e.x,!0),F(r,e.y,!0)):(F(n,(window.innerWidth||800)-56),F(r,(window.innerHeight||600)-56))}catch(e){F(n,100),F(r,100)}});let i=P(!1),a=P(0),o=P(0),s=P(0),c=P(0),l=P(!1),u=e=>{if(!H(i))return;e.stopPropagation(),e.preventDefault();let t=e.clientX-H(a),u=e.clientY-H(o);Math.abs(t)+Math.abs(u)>3&&F(l,!0),F(n,Math.max(4,Math.min(window.innerWidth-46,H(s)+t)),!0),F(r,Math.max(4,Math.min(window.innerHeight-46,H(c)+u)),!0)},d=e=>{H(i)&&(e.stopPropagation(),e.preventDefault()),F(i,!1),window.removeEventListener(`mousemove`,u,!0),window.removeEventListener(`mouseup`,d,!0);try{localStorage.setItem(`forge:launcherPos`,JSON.stringify({x:H(n),y:H(r)}))}catch(e){}setTimeout(()=>{F(l,!1)},0)},f=e=>{e.preventDefault(),F(i,!0),F(l,!1),F(a,e.clientX,!0),F(o,e.clientY,!0),F(s,H(n),!0),F(c,H(r),!0),window.addEventListener(`mousemove`,u,!0),window.addEventListener(`mouseup`,d,!0)},p=()=>{H(l)||(Q.visible=!Q.visible)};var m=eo(),h=_i(m),g=e=>{var t=al();Ac(L(t),{size:20}),D(t),z(()=>{var e,i;return Xo(t,`left: ${(e=H(n))==null?``:e}px; top: ${(i=H(r))==null?``:i}px;`)}),U(`mousedown`,t,e=>{e.stopPropagation(),f(e)}),U(`click`,t,e=>{e.stopPropagation(),p()}),G(e,t)};mo(h,e=>{Xc.showLauncher&&e(g)}),G(e,m),Nt()}Wa([`mousedown`,`click`]);var sl=W(``),cl=W(`Nothing here`),ll=W(` `);function ul(e,t){Mt(t,!0);let n=Hs(t,`items`,19,()=>[]),r=Hs(t,`itemHeight`,3,32),i=Hs(t,`containerHeight`,3,400),a=P(0),o=P(void 0),s=Wn(()=>n().length*r()),c=Wn(()=>Math.floor(H(a)/r())),l=Wn(()=>Math.min(n().length-1,H(c)+Math.ceil(i()/r())+2)),u=Wn(()=>n().slice(H(c),H(l)+1).map((e,t)=>({...e,_index:H(c)+t}))),d=e=>{F(a,e.target.scrollTop,!0)};var f={resetScroll:()=>{H(o)&&(H(o).scrollTop=0)},scrollToBottom:()=>{H(o)&&(H(o).scrollTop=H(o).scrollHeight)},scrollToIndex:e=>{setTimeout(()=>{H(o)&&(F(a,e*r()),H(o).scrollTop=e*r())},100)}},p=ll(),m=L(p),h=L(m);yo(h,21,()=>H(u),e=>e.id,(e,n)=>{var i=sl();Eo(L(i),()=>t.itemTemplate,()=>H(n),()=>H(n)._index),D(i),z(()=>{var e;return Xo(i,`height: ${(e=r())==null?``:e}px;`)}),G(e,i)}),D(h),D(m);var g=R(m,2),_=e=>{G(e,cl())};return mo(g,e=>{n().length===0&&e(_)}),D(p),Ps(p,e=>F(o,e),()=>H(o)),z(()=>{var e;Xo(m,`height: ${(e=H(s))==null?``:e}px;`),Xo(h,`transform: translateY(${H(c)*r()}px);`)}),Ua(`scroll`,p,d),G(e,p),Nt(f)}var dl=W(`- +`);function fl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,0),r=Hs(t,`min`,19,()=>-1/0),i=Hs(t,`max`,3,1/0),a=P(I(String(n())));Mi(()=>{F(a,String(n()),!0)});let o=()=>{var e;let o=parseFloat(H(a));isNaN(o)&&(o=n()),o=Math.max(r(),Math.min(i(),o)),n(o),F(a,String(o),!0),(e=t.onchange)==null||e.call(t,n())},s=(e,o)=>{var s;o.shiftKey&&(e*=10);let c=n()+e;c=Math.max(r(),Math.min(i(),c)),n(c),F(a,String(c),!0),(s=t.onchange)==null||s.call(t,n())},c=e=>{e.stopPropagation(),e.key===`Enter`?(o(),e.target.blur()):e.key===`Escape`&&(F(a,String(n()),!0),e.target.blur())};var l=dl(),u=L(l),d=R(u,2);us(d);var f=R(d,2);D(l),U(`click`,u,e=>s(-1,e)),Ua(`blur`,d,o),U(`keydown`,d,c),Cs(d,()=>H(a),e=>F(a,e)),U(`click`,f,e=>s(1,e)),G(e,l),Nt()}Wa([`click`,`keydown`]);var pl=W(``);function ml(e,t){Mt(t,!0);let n=Hs(t,`locked`,3,!1);var r=pl(),i=L(r),a=e=>{uc(e,{size:14})},o=e=>{cc(e,{size:14})};mo(i,e=>{n()?e(a):e(o,-1)}),D(r),z(()=>{Jo(r,1,`flex h-6 w-6 shrink-0 items-center justify-center rounded transition-colors focus:outline-none ${n()?`bg-frozen/20 text-frozen hover:bg-frozen/30`:`hover:bg-border text-gray-500 hover:text-gray-300`}`),ps(r,`title`,n()?`Unfreeze`:`Freeze`),ps(r,`aria-label`,n()?`Unfreeze state`:`Freeze state`)}),U(`click`,r,()=>{var e;return(e=t.ontoggle)==null?void 0:e.call(t,!n())}),G(e,r),Nt()}Wa([`click`]);var hl=W(`TrueFalse`),gl=W(``),_l=W(` `),vl=W(` `);function yl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetVarId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetVarId);e!==-1&&H(a).scrollToIndex(e),Q.targetVarId=null}});let o,s=P(!1),c=new Set,l=I({}),u=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||t.value!==void 0&&t.value!==null&&String(t.value).toLowerCase().includes(e));c=new Set(t.map(e=>e.id))}},d=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`variables`,e.id),r=Zc.isFavorite(`variables`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},f=()=>{F(n,q.vars.list(),!0),u(),d()},p=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(s)||(F(n,q.vars.list(),!0),d())},1e3);return()=>clearInterval(e)});let h=(e,t)=>{q.vars.set(e,t),Y.vars.has(e)&&X.freezeVar(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)};var g=vl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y);D(y),D(_);var x=R(_,2);Ps(ul(L(x),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{let r=Wn(()=>l[t().id]||typeof t().value);var i=_l(),a=L(i),o=L(a,!0);D(a);var c=R(a,2),u=L(c),f=L(u,!0);D(u),D(c);var p=R(c,2),g=L(p),_=L(g);{let e=Wn(()=>Zc.isFavorite(`variables`,t().id)?`fill-current`:``);bc(_,{size:16,get class(){return H(e)}})}D(g);var v=R(g,2),y=L(v,!0);D(v);var b=R(v,2),x=e=>{{let n=Wn(()=>Number(t().value)||0);fl(e,{get value(){return H(n)},onchange:e=>h(t().id,e)})}},S=e=>{var n=hl(),r=L(n);r.value=r.__value=`true`;var i=R(r);i.value=i.__value=`false`,D(n);var a;Qo(n),z(()=>{a!==(a=t().value?`true`:`false`)&&(n.value=n.__value=t().value?`true`:`false`,Zo(n,t().value?`true`:`false`))}),U(`change`,n,e=>h(t().id,e.currentTarget.value===`true`)),G(e,n)},ee=e=>{var n=gl();us(n),z(e=>ds(n,e),[()=>String(t().value===void 0||t().value===null?``:t().value)]),Ua(`blur`,n,e=>h(t().id,e.currentTarget.value)),U(`keydown`,n,e=>{e.stopPropagation(),e.key===`Enter`&&e.currentTarget.blur()}),G(e,n)};mo(b,e=>{H(r)===`number`?e(x):H(r)===`boolean`?e(S,1):e(ee,-1)});var C=R(b,2),w=L(C);{let e=Wn(()=>Y.vars.has(t().id));ml(w,{get locked(){return H(e)},ontoggle:e=>{X.freezeVar(t().id,e),F(n,[...H(n)],!0),d()}})}D(C),D(p),D(i),z((e,n,a)=>{Jo(i,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(o,n),ps(u,`title`,t().name),K(f,t().name),Jo(g,1,`mr-2 flex items-center justify-center transition-colors ${a==null?``:a}`),K(y,H(r)===`number`?`NUM`:H(r)===`string`?`STR`:`BOOL`)},[()=>Y.vars.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`variables`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,p,()=>F(s,!0)),U(`focusout`,p,()=>F(s,!1)),U(`click`,g,()=>{Zc.toggleFavorite(`variables`,t().id),d()}),U(`click`,v,()=>{(l[t().id]||typeof t().value)===`number`?l[t().id]=`string`:l[t().id]=`number`}),G(e,i)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(x),D(g),z(()=>{var e;ds(v,H(i)),K(b,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,p),G(e,g),Nt()}Wa([`input`,`focusin`,`focusout`,`click`,`change`,`keydown`]);var bl=W(``);function xl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,!1),r=()=>{var e;n(!n()),(e=t.onchange)==null||e.call(t,n())};var i=bl(),a=L(i);D(i),z(()=>{Jo(i,1,`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors ${n()?`bg-ok`:`bg-[#3a3f4d]`}`),Jo(a,1,`absolute top-[4px] h-4 w-4 rounded-full bg-white shadow transition-all ${n()?`left-[24px]`:`left-[4px]`}`)}),U(`click`,i,r),G(e,i),Nt()}Wa([`click`]);var Sl=W(` `),Cl=W(` All ON All OFF `);function wl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetSwitchId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetSwitchId);e!==-1&&H(a).scrollToIndex(e),Q.targetSwitchId=null}});let o,s=P(!1),c=new Set,l=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||(t.value?`true`:`false`).includes(e));c=new Set(t.map(e=>e.id))}},u=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`switches`,e.id),r=Zc.isFavorite(`switches`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},d=()=>{F(n,q.switches.list(),!0),l(),u()},f=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{l(),u()},300)};Ws(()=>{d();let e=setInterval(()=>{H(s)||(F(n,q.switches.list(),!0),u())},1e3);return()=>clearInterval(e)});let p=(e,t)=>{q.switches.set(e,t),Y.switches.has(e)&&X.freezeSwitch(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)},h=e=>{H(r).forEach(t=>p(t.id,e)),d(),zc.show(`All filtered switches turned ${e?`ON`:`OFF`}`,`success`)};var g=Cl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y),x=R(b,2),S=R(x,2),ee=L(S);D(S),D(y),D(_);var C=R(_,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{var r=Sl(),i=L(r),a=L(i,!0);D(i);var o=R(i,2),c=L(o),l=L(c,!0);D(c),D(o);var d=R(o,2),f=L(d),h=L(f);{let e=Wn(()=>Zc.isFavorite(`switches`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(f);var g=R(f,2);xl(g,{get value(){return t().value},onchange:e=>p(t().id,e)});var _=R(g,2),v=L(_);{let e=Wn(()=>Y.switches.has(t().id));ml(v,{get locked(){return H(e)},ontoggle:e=>{X.freezeSwitch(t().id,e),F(n,[...H(n)],!0),u()}})}D(_),D(d),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),Jo(c,1,`truncate text-sm select-text cursor-text ${t().value?`text-white font-bold`:`text-gray-400`}`),K(l,t().name),Jo(f,1,`flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.switches.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`switches`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),Ua(`mouseenter`,d,()=>F(s,!0)),Ua(`mouseleave`,d,()=>F(s,!1)),U(`click`,f,()=>{Zc.toggleFavorite(`switches`,t().id),u()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(g),z(()=>{var e;ds(v,H(i)),K(ee,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,f),U(`click`,b,()=>h(!0)),U(`click`,x,()=>h(!1)),G(e,g),Nt()}Wa([`input`,`click`]);var Tl=W(` `),El=W(` `),Dl=W(`Items Weapons Armors `);function Ol(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetItemKey!==null&&H(a)){let[e,t]=Q.targetItemKey.split(`:`);if(e===H(o)){if(H(r).length>0){let e=H(r).findIndex(e=>e.id===parseInt(t,10));e!==-1&&H(a).scrollToIndex(e),Q.targetItemKey=null}}else p(e)}});let o=P(I(Fc.Item)),s,c=P(!1),l=new Set,u=()=>{if(!H(i).trim())l=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||String(t.count).includes(e)||t.description&&t.description.toLowerCase().includes(e));l=new Set(t.map(e=>e.id))}},d=()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;F(r,H(n).filter(e=>l.has(e.id)).sort((t,n)=>{let r=Zc.isFavorite(e,t.id),i=Zc.isFavorite(e,n.id);return r&&!i?-1:!r&&i?1:t.id-n.id}),!0)},f=()=>{F(n,q.inv.list(H(o)),!0),u(),d()},p=e=>{F(o,e,!0),f(),H(a)&&H(a).resetScroll()},h=e=>{F(i,e.target.value,!0),clearTimeout(s),s=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(c)||(F(n,q.inv.list(H(o)),!0),d())},1e3);return()=>clearInterval(e)});let g=(e,t)=>{q.inv.setCount(H(o),e,t),Y.items.has(`${H(o)}:${e}`)&&X.freezeItem(H(o),e,!0)};var _=Dl(),v=L(_),y=L(v),b=L(y),x=R(b,2),S=R(x,2);D(y);var ee=R(y,2);us(ee),D(v);var C=R(v,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:48,itemTemplate:(e,t=m)=>{var r=El(),i=L(r),a=L(i,!0);D(i);var s=R(i,2),l=L(s),u=L(l,!0);D(l);var f=R(l,2),p=e=>{var n=Tl(),r=L(n,!0);D(n),z((e,t)=>{ps(n,`title`,e),K(r,t)},[()=>t().description.replace(/\n/g,` `),()=>t().description.replace(/\n/g,` `)]),G(e,n)};mo(f,e=>{t().description&&e(p)}),D(s);var h=R(s,2),_=L(h),v=L(_);{let e=Wn(()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`fill-current`:``);bc(v,{size:16,get class(){return H(e)}})}D(_);var y=R(_,2);{let e=Wn(()=>q.inv.maxStack(H(o),t().id));fl(y,{get value(){return t().count},min:0,get max(){return H(e)},onchange:e=>g(t().id,e)})}var b=R(y,2),x=L(b);{let e=Wn(()=>Y.items.has(`${H(o)}:${t().id}`));ml(x,{get locked(){return H(e)},ontoggle:e=>{X.freezeItem(H(o),t().id,e),F(n,[...H(n)],!0),d()}})}D(b),D(h),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),ps(l,`title`,t().name),K(u,t().name),Jo(_,1,`mr-1 flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.items.has(`${H(o)}:${t().id}`)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,h,()=>F(c,!0)),U(`focusout`,h,()=>F(c,!1)),U(`click`,_,()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;Zc.toggleFavorite(e,t().id),d()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(_),z(()=>{Jo(b,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Item?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(x,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Weapon?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(S,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Armor?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),ds(ee,H(i))}),U(`click`,b,()=>p(Fc.Item)),U(`click`,x,()=>p(Fc.Weapon)),U(`click`,S,()=>p(Fc.Armor)),U(`input`,ee,h),G(e,_),Nt()}Wa([`click`,`input`,`focusin`,`focusout`]);var kl=W(``),Al=W(` `),jl=W(` `),Ml=W(` `),Nl=W(`No skills in database.`),Pl=W(`Clear All States`),Fl=W(` ×`),Il=W(`No active states.`),Ll=W(` `),Rl=W(` Recover All Core Status Level EXP HP MP TP Parameters Skills States Select a state to apply... Add State`,1),zl=W(`Start a game or select an actor to edit stats.`),Bl=W(`Actors `);function Vl(e,t){Mt(t,!0);let n=P(I([])),r=P(null),i=P(null),a=P(null),o=P(``),s=P(``);Mi(()=>{Q.targetActorId!==null&&H(n).length>0&&(F(r,Q.targetActorId,!0),Q.targetActorId=null,Q.targetActorStat=null,c())});let c=()=>{F(n,J.list(),!0),H(r)===null&&H(n).length>0&&F(r,H(n)[0].id,!0),H(r)!==null&&F(i,J.get(H(r)),!0)};Ws(()=>{c();let e=setInterval(()=>{c()},1e3);return()=>clearInterval(e)});let l=e=>{F(r,e,!0),F(i,J.get(e),!0)},u=(e,t)=>{H(r)!==null&&(e===`hp`?J.setHp(H(r),t):e===`mp`?J.setMp(H(r),t):e===`tp`&&J.setTp(H(r),t),Y.stats.has(`${H(r)}:${e}`)&&X.freezeStat(H(r),e,!0),F(i,J.get(H(r)),!0))},d=(e,t)=>{H(r)!==null&&(J.setParam(H(r),e,t),F(i,J.get(H(r)),!0))},f=()=>{H(r)===null||!H(i)||(H(i).inParty?J.removeFromParty(H(r)):J.addToParty(H(r)),c())},p=(e,t)=>{H(r)!==null&&(t?J.forgetSkill(H(r),e):J.learnSkill(H(r),e),F(i,J.get(H(r)),!0))},m={[Lc.MHP]:`Max HP`,[Lc.MMP]:`Max MP`,[Lc.ATK]:`Attack`,[Lc.DEF]:`Defense`,[Lc.MAT]:`M. Attack`,[Lc.MDF]:`M. Defense`,[Lc.AGI]:`Agility`,[Lc.LUK]:`Luck`};var h=Bl(),g=L(h),_=R(L(g),2);yo(_,21,()=>H(n),ho,(e,t)=>{var n=Al(),i=L(n),a=L(i),o=e=>{G(e,kl())};mo(a,e=>{H(t).inParty&&e(o)});var s=R(a,2),c=L(s,!0);D(s),D(i);var u=R(i,2),d=L(u);D(u),D(n),z(()=>{var e;ps(n,`id`,`actor-btn-${H(t).id}`),Jo(n,1,`flex w-full items-center justify-between rounded px-2.5 py-2 text-left text-sm transition-colors ${H(r)===H(t).id?`bg-accent text-white font-semibold`:`hover:bg-border/50 text-gray-300`}`),K(c,H(t).name),K(d,`Lv.${(e=H(t).level)==null?``:e}`)}),U(`click`,n,()=>l(H(t).id)),G(e,n)}),D(_),D(g);var v=R(g,2),y=L(v),b=e=>{var t,n=Rl(),l=_i(n),h=L(l),g=L(h),_=L(g,!0);D(g);var v=R(g,2),y=L(v);D(v),D(h);var b=R(h,2),x=L(b),S=R(x,2),ee=L(S,!0);D(S),D(b),D(l);var C=R(l,2),w=L(C),te=R(L(w),2),ne=R(L(te),2),re=L(ne);fl(re,{get value(){return H(i).level},min:1,max:99,onchange:e=>{H(r)!==null&&(J.setLevel(H(r),e),Y.stats.has(`${H(r)}:level`)&&X.freezeStat(H(r),`level`,!0),F(i,J.get(H(r)),!0),c())}});var ie=R(re,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:level`));ml(ie,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`level`,e),F(i,J.get(H(r)),!0))}})}D(ne),D(te);var ae=R(te,2),oe=R(L(ae),2),se=L(oe);fl(se,{get value(){return H(i).exp},min:0,onchange:e=>{H(r)!==null&&(J.setExp(H(r),e),Y.stats.has(`${H(r)}:exp`)&&X.freezeStat(H(r),`exp`,!0),F(i,J.get(H(r)),!0),c())}});var ce=R(se,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:exp`));ml(ce,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`exp`,e),F(i,J.get(H(r)),!0))}})}D(oe),D(ae);var le=R(ae,2),ue=R(L(le),2),de=L(ue);fl(de,{get value(){return H(i).hp},min:0,get max(){return H(i).mhp},onchange:e=>u(`hp`,e)});var fe=R(de,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:hp`));ml(fe,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`hp`,e),F(i,J.get(H(r)),!0))}})}D(ue),D(le);var pe=R(le,2),me=R(L(pe),2),he=L(me);fl(he,{get value(){return H(i).mp},min:0,get max(){return H(i).mmp},onchange:e=>u(`mp`,e)});var ge=R(he,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:mp`));ml(ge,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`mp`,e),F(i,J.get(H(r)),!0))}})}D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve);fl(ye,{get value(){return H(i).tp},min:0,get max(){return H(i).mtp},onchange:e=>u(`tp`,e)});var be=R(ye,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:tp`));ml(be,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`tp`,e),F(i,J.get(H(r)),!0))}})}D(ve),D(_e),D(w);var xe=R(w,2);yo(R(L(xe),2),17,()=>H(i).params,e=>e.id,(e,t)=>{var n=jl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2),c=L(s);fl(c,{get value(){return H(t).value},min:1,onchange:e=>{d(H(t).id,e),Y.stats.has(`${H(r)}:param_${H(t).id}`)&&X.freezeStat(H(r),`param_${H(t).id}`,!0)}});var l=R(c,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:param_${H(t).id}`));ml(l,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`param_${H(t).id}`,e),F(i,J.get(H(r)),!0))}})}D(s),D(n),z(()=>{ps(n,`id`,`stat-param_${H(t).id}`),K(o,m[H(t).id]||`Stat`)}),G(e,n)}),D(xe),D(C);var Se=R(C,2),Ce=L(Se),we=R(L(Ce),2);us(we),D(Ce);var Te=R(Ce,2);yo(Te,21,()=>H(i).skills.filter(e=>!H(o).trim()||e.name.toLowerCase().includes(H(o).trim().toLowerCase())||e.id.toString().includes(H(o).trim())),e=>e.id,(e,t)=>{var n=Ml(),r=L(n),i=L(r);D(r);var a=R(r,2),o=L(a,!0);D(a),D(n),z(e=>{var n;K(i,`${e==null?``:e}: ${(n=H(t).name)==null?``:n}`),Jo(a,1,`rounded border px-3 py-1 text-xs font-semibold transition-colors ${H(t).learned?`border-danger/30 text-danger bg-danger/10 hover:bg-danger/20`:`border-accent/30 text-accent bg-accent/10 hover:bg-accent/20`}`),K(o,H(t).learned?`Forget`:`Learn`)},[()=>H(t).id.toString().padStart(3,`0`)]),U(`click`,a,()=>p(H(t).id,H(t).learned)),G(e,n)},e=>{G(e,Nl())}),D(Te),D(Se);var Ee=R(Se,2),De=L(Ee),Oe=R(L(De),2),ke=L(Oe);us(ke);var Ae=R(ke,2),je=e=>{var t=Pl();U(`click`,t,()=>{H(r)!==null&&(J.clearStates(H(r)),F(i,J.get(H(r)),!0))}),G(e,t)};mo(Ae,e=>{H(i).states.length>0&&e(je)}),D(Oe),D(De);var Me=R(De,2);yo(Me,21,()=>H(i).states,ho,(e,t)=>{var n=Fl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2);D(n),z(()=>K(o,H(t).name)),U(`click`,s,()=>{H(r)!==null&&(J.removeState(H(r),H(t).id),F(i,J.get(H(r)),!0))}),G(e,n)},e=>{G(e,Il())}),D(Me);var Ne=R(Me,2),Pe=L(Ne),Fe=L(Pe);Fe.value=(t=Fe.__value=null)!=null&&t!==void 0?t:``,yo(R(Fe),17,()=>J.listStates().filter(e=>!H(s).trim()||e.name.toLowerCase().includes(H(s).trim().toLowerCase())||e.id.toString().includes(H(s).trim())),ho,(e,t)=>{var n=Ll(),r=L(n);D(n);var i={};z(e=>{var a;if(K(r,`${e==null?``:e}: ${(a=H(t).name)==null?``:a}`),i!==(i=H(t).id)){var o;n.value=(o=n.__value=H(t).id)==null?``:o}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,n)}),D(Pe);var Ie=R(Pe,2);D(Ne),D(Ee),z(()=>{var e;K(_,H(i).name),K(y,`Actor ID: ${(e=H(i).id)==null?``:e}`),Jo(S,1,`rounded border px-3 py-1.5 text-xs font-semibold transition-colors ${H(i).inParty?`border-danger/30 bg-danger/20 text-danger hover:bg-danger/30`:`border-ok/30 bg-ok/20 text-ok hover:bg-ok/30`}`),K(ee,H(i).inParty?`Remove Party`:`Add Party`),Ie.disabled=H(a)===null}),U(`click`,x,()=>{H(r)!==null&&(J.recover(H(r)),F(i,J.get(H(r)),!0))}),U(`click`,S,f),Cs(we,()=>H(o),e=>F(o,e)),Cs(ke,()=>H(s),e=>F(s,e)),$o(Pe,()=>H(a),e=>F(a,e)),U(`click`,Ie,()=>{H(r)!==null&&H(a)!==null&&(J.addState(H(r),H(a)),F(i,J.get(H(r)),!0),F(a,null))}),G(e,n)},x=e=>{G(e,zl())};mo(y,e=>{H(i)?e(b):e(x,-1)}),D(v),D(h),G(e,h),Nt()}Wa([`click`]);function Hl(e){let t=e-1;return t*t*t+1}function Ul(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Hl}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=Wl(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function Wl(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var Gl=W(` `),Kl=W(` `),ql=W(` `),Jl=W(`Configure the hold key in the Keys panel.`),Yl=W(`Warning: Game is permanently sped up. Turn this back on to require holding a key.`),Xl=W(` `),Zl=W(` `),Ql=W(`Active Enemies `),$l=W(`LEAD`),eu=W(`⋮⋮ `),tu=W(`No active party members found (start/load a game).`),nu=W(`Quick Actions Party Resources Gold Steps Playtime Battle Settings God Mode One-Hit Kill Disable Encounters Movement Noclip (Walk Through Walls) Move Speed Game Speed Hold Key to Fast Forward Speed Multiplier Party Members Status `);function ru(e,t){Mt(t,!0);let n=P(0),r=P(0),i=P(0),a=P(4),o=P(!1),s=P(I([])),c=P(I([])),l=[{title:`System & Menus`,actions:[`quick_save`,`quick_load`,`open_save_scene`,`open_load_scene`,`goto_title`]},{title:`Battle Actions`,actions:[`force_victory`,`force_defeat`,`force_escape`,`trigger_encounter`]},{title:`Health Controls`,actions:[`party_recovery`,`party_wound`,`enemy_recovery`,`enemy_wound`]}],u=()=>{F(n,q.gold.get(),!0),F(r,q.party.steps(),!0),F(i,q.party.playtime(),!0),window.$gamePlayer&&F(a,window.$gamePlayer._moveSpeed||4,!0),F(o,!!(window.SceneManager&&window.SceneManager._scene&&window.SceneManager._scene.constructor.name===`Scene_Battle`)),H(o)&&window.$gameTroop?F(s,window.$gameTroop.members().map(e=>({ref:e,name:e.name(),hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(s,[],!0),window.$gameParty?F(c,window.$gameParty.members().map(e=>({ref:e,id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1,hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(c,[],!0)};Ws(()=>{u();let e=setInterval(u,1e3);return()=>clearInterval(e)});let d=e=>{q.gold.set(e),Y.gold!==null&&X.freezeGold(!0),F(n,q.gold.get(),!0)},f=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`},p=(e,t)=>{e.ref.setHp(t),u()},m=(e,t)=>{e.ref.setMp(t),u()},h=(e,t)=>{e.ref.setTp?e.ref.setTp(t):e.ref.tp=t,u()},g=P(null),_=(e,t)=>{e!==t&&window.$gameParty&&typeof window.$gameParty.swapOrder==`function`&&(window.$gameParty.swapOrder(e,t),u())};var v=nu(),y=L(v),b=R(L(y),2);yo(b,21,()=>l,ho,(e,t)=>{var n=ql(),r=L(n),i=L(r,!0);D(r);var a=R(r,2);yo(a,21,()=>H(t).actions,ho,(e,t)=>{let n=Wn(()=>nl.find(e=>e.id===H(t)));var r=eo(),i=_i(r),a=e=>{var t=Kl(),r=L(t),i=L(r,!0);D(r);var a=R(r,2),o=e=>{var t=Gl(),r=L(t,!0);D(t),z(e=>K(r,e),[()=>{var e;return Yc.fromString(((e=$.get(H(n).id))==null?void 0:e.keyStr)||``).asDisplayString()}]),G(e,t)},s=Wn(()=>{var e;return(e=$.get(H(n).id))==null?void 0:e.keyStr});mo(a,e=>{H(s)&&e(o)}),D(t),z(()=>K(i,H(n).name)),U(`click`,t,()=>{var e,t;(e=(t=H(n)).onEnter)==null||e.call(t),u()}),G(e,t)};mo(i,e=>{H(n)&&e(a)}),G(e,r)}),D(a),D(n),z(()=>K(i,H(t).title)),G(e,n)}),D(b),D(y);var x=R(y,2),S=L(x),ee=R(L(S),2),C=R(L(ee),2),w=L(C);fl(w,{get value(){return H(n)},min:0,max:99999999,onchange:d});var te=R(w,2);{let e=Wn(()=>Y.gold!==null);ml(te,{get locked(){return H(e)},ontoggle:e=>{X.freezeGold(e),u()}})}D(C),D(ee);var ne=R(ee,2),re=R(L(ne),2),ie=L(re,!0);D(re),D(ne);var ae=R(ne,2),oe=R(L(ae),2),se=L(oe,!0);D(oe),D(ae),D(S);var ce=R(S,2),le=R(L(ce),2),ue=L(le);xl(R(L(ue),2),{get value(){return Z.god},onchange:e=>Wc.setGod(e)}),D(ue);var de=R(ue,2);xl(R(L(de),2),{get value(){return Z.ohko},onchange:e=>Wc.setOhko(e)}),D(de);var fe=R(de,2);xl(R(L(fe),2),{get value(){return Z.noEncounter},onchange:e=>Wc.setNoEncounter(e)}),D(fe),D(le),D(ce),D(x);var pe=R(x,2),me=R(L(pe),2),he=L(me);xl(R(L(he),2),{get value(){return Y.noclip},onchange:e=>X.setNoclip(e)}),D(he);var ge=R(he,2);fl(R(L(ge),2),{get value(){return H(a)},min:1,max:8,onchange:e=>q.map.speed(e)}),D(ge),D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve),be=L(ye);xl(R(L(be),2),{get value(){return Z.speedUseKey},onchange:e=>{Wc.setSpeedUseKey(e),e?Wc.setSpeed(1):Wc.setSpeed(Z.speedBoost)}}),D(be);var xe=R(be,2),Se=e=>{G(e,Jl())},Ce=e=>{G(e,Yl())};mo(xe,e=>{Z.speedUseKey?e(Se):e(Ce,-1)}),D(ye);var we=R(ye,2),Te=R(L(we),2);yo(Te,20,()=>[.5,1,2,3,5,8],ho,(e,t)=>{var n=Xl(),r=L(n);D(n),z(()=>{Jo(n,1,`border-border h-7 w-9 rounded border text-xs transition-colors ${Z.speedBoost===t?`border-accent bg-accent text-white font-semibold`:`bg-bg hover:bg-border/50 text-gray-300`}`),K(r,`${t==null?``:t}x`)}),U(`click`,n,()=>{Wc.setSpeedBoost(t),Z.speedUseKey||Wc.setSpeed(t)}),G(e,n)}),D(Te),D(we),D(ve),D(_e);var Ee=R(_e,2),De=e=>{var t=Ql(),n=R(L(t),2);yo(n,21,()=>H(s),ho,(e,t)=>{var n=Zl(),r=L(n),i=L(r),a=L(i,!0);D(i),D(r);var o=R(r,2),s=L(o),c=L(s),l=L(c);D(c),fl(R(c,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(s);var u=R(s,2),d=L(u),f=L(d);D(d),fl(R(d,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(u);var g=R(u,2),_=L(g),v=L(_);D(_),fl(R(_,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(g),D(o),D(n),z(()=>{var e,n,r,i,o;K(a,H(t).name),K(l,`HP (${(e=H(t).hp)==null?``:e}/${(n=H(t).mhp)==null?``:n})`),K(f,`MP (${(r=H(t).mp)==null?``:r}/${(i=H(t).mmp)==null?``:i})`),K(v,`TP (${(o=H(t).tp)==null?``:o})`)}),G(e,n)}),D(n),D(t),G(e,t)};mo(Ee,e=>{H(o)&&H(s).length>0&&e(De)});var Oe=R(Ee,2),ke=R(L(Oe),2);yo(ke,31,()=>H(c),e=>e.id,(e,t,n)=>{var r=eu(),i=L(r),a=L(i),o=L(a),s=R(L(o),2),c=L(s),l=R(c),u=e=>{G(e,$l())};mo(l,e=>{H(n)===0&&e(u)}),D(s),D(o);var d=R(o,2),f=L(d);D(d),D(a);var v=R(a,2),y=L(v),b=L(y),x=L(b);D(b),fl(R(b,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(y);var S=R(y,2),ee=L(S),C=L(ee);D(ee),fl(R(ee,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(S);var w=R(S,2),te=L(w),ne=L(te);D(te),fl(R(te,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(w),D(v),D(i),D(r),z(()=>{var e,o,s,l,u,d,p;Jo(r,1,`rounded p-2.5 transition-all duration-200 ${H(g)===H(n)?`border border-dashed border-accent/50 bg-accent/5`:`border border-border bg-bg`}`),Jo(i,1,`space-y-2 ${H(g)===H(n)?`invisible`:``}`),Jo(a,1,`flex w-full items-center justify-between pb-2 text-xs font-bold text-white ${H(g)===null?`cursor-grab active:cursor-grabbing`:``}`),K(c,`${(e=H(t).name)==null?``:e} `),K(f,`Lv.${(o=H(t).level)==null?``:o}`),K(x,`HP (${(s=H(t).hp)==null?``:s}/${(l=H(t).mhp)==null?``:l})`),K(C,`MP (${(u=H(t).mp)==null?``:u}/${(d=H(t).mmp)==null?``:d})`),K(ne,`TP (${(p=H(t).tp)==null?``:p})`)}),Ua(`dragenter`,r,e=>e.preventDefault()),Ua(`dragover`,r,e=>{if(e.preventDefault(),H(g)!==null&&H(g)!==H(n)){let t=e.currentTarget.getBoundingClientRect(),r=t.top+t.height/2;if(H(g)H(n)&&e.clientY>r)return;_(H(g),H(n)),F(g,H(n),!0)}}),Ua(`dragstart`,a,e=>{if(e.dataTransfer){e.dataTransfer.effectAllowed=`move`;let t=e.currentTarget.closest(`[role="listitem"]`);t&&e.dataTransfer.setDragImage(t,20,20)}setTimeout(()=>{F(g,H(n),!0)},0)}),Ua(`dragend`,a,()=>{F(g,null)}),Io(r,()=>Ul,()=>({duration:250})),G(e,r)},e=>{G(e,tu())}),D(ke),D(Oe),D(v),z(e=>{K(ie,H(r)),K(se,e)},[()=>f(H(i))]),Ua(`dragenter`,Oe,e=>e.preventDefault()),Ua(`dragover`,Oe,e=>e.preventDefault()),Ua(`dragenter`,ke,e=>e.preventDefault()),Ua(`dragover`,ke,e=>e.preventDefault()),G(e,v),Nt()}Wa([`click`]);var iu=W(` `),au=W(`No saved locations yet.`),ou=W(` Teleport `),su=W(`Teleport Target Map Point of Interest (POI) -- Select a POI -- X Y Teleport Now Saved Locations Save Current `);function cu(e,t){Mt(t,!0);let n=P(I({mapId:0,x:0,y:0,dir:0})),r=P(I([])),i=P(0),a=P(0),o=P(0),s=P(I([])),c=P(``),l=P(``),u=P(``);Mi(()=>{H(o)>0&&q.map.loadMapEvents(H(o)).then(e=>{F(s,e,!0),e.find(e=>e.id.toString()===H(c))||F(c,``)})});let d=P(I([])),f=P(``),p=()=>{let e=q.map.current();e&&(F(n,e,!0),F(o,H(o)||e.mapId,!0),F(i,e.x,!0),F(a,e.y,!0)),F(r,q.map.list(),!0);try{let e=localStorage.getItem(`forge:locations`);e&&F(d,JSON.parse(e),!0)}catch(e){}};Ws(()=>{p();let e=setInterval(()=>{let e=q.map.current();e&&(e.mapId!==H(n).mapId||e.x!==H(n).x||e.y!==H(n).y)&&F(n,e,!0)},1e3);return()=>clearInterval(e)});let m=()=>{q.map.teleport(H(o),H(i),H(a),0,0)},h=()=>{let e=q.map.current();if(!e)return;let t=H(r).find(t=>t.id===e.mapId);F(d,[...H(d),{id:Date.now().toString(),name:H(f)||`Saved Location`,mapId:e.mapId,mapName:t?t.name:`Map ${e.mapId}`,x:e.x,y:e.y}],!0),F(f,``),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},g=e=>{F(d,H(d).filter(t=>t.id!==e),!0),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},_=e=>{q.map.teleport(e.mapId,e.x,e.y,0,0)};var v=su(),y=L(v),b=R(L(y),2),x=L(b);D(b);var S=R(b,2),ee=L(S),C=L(ee),w=R(L(C),2);us(w),D(C);var te=R(C,2);yo(te,21,()=>H(r).filter(e=>!H(l).trim()||e.name.toLowerCase().includes(H(l).trim().toLowerCase())||e.id.toString().includes(H(l).trim())),ho,(e,t)=>{var r=iu(),i=L(r);D(r);var a={};z(e=>{var o;if(K(i,`${H(t).id===H(n).mapId?`[CURRENT] `:``}${e==null?``:e}: ${(o=H(t).name)==null?``:o}`),a!==(a=H(t).id)){var s;r.value=(s=r.__value=H(t).id)==null?``:s}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,r)}),D(te),D(ee);var ne=R(ee,2),re=L(ne),ie=R(L(re),2);us(ie),D(re);var ae=R(re,2),oe=L(ae);oe.value=oe.__value=``,yo(R(oe),17,()=>H(s).filter(e=>!H(u).trim()||e.name.toLowerCase().includes(H(u).trim().toLowerCase())||e.id.toString().includes(H(u).trim())),ho,(e,t)=>{var n=iu(),r=L(n);D(n);var i={};z(()=>{var e,a,o;if(K(r,`${(e=H(t).name)==null?``:e} (X:${(a=H(t).x)==null?``:a}, Y:${(o=H(t).y)==null?``:o})`),i!==(i=H(t).id)){var s;n.value=(s=n.__value=H(t).id)==null?``:s}}),G(e,n)}),D(ae),D(ne);var se=R(ne,2),ce=L(se),le=R(L(ce),2);us(le),D(ce);var ue=R(ce,2),de=R(L(ue),2);us(de),D(ue),D(se);var fe=R(se,2);D(S),D(y);var pe=R(y,2),me=R(L(pe),2),he=L(me);us(he);var ge=R(he,2);D(me);var _e=R(me,2),ve=L(_e),ye=e=>{G(e,au())},be=e=>{var t=eo();yo(_i(t),17,()=>H(d),e=>e.id,(e,t)=>{var n=ou(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o);D(o),D(r);var c=R(r,2),l=L(c),u=R(l,2);Ec(L(u),{size:14}),D(u),D(c),D(n),z(()=>{var e,n,r,i;K(a,H(t).name),K(s,`${(e=H(t).mapName)==null?``:e} (Map ${(n=H(t).mapId)==null?``:n}) • X:${(r=H(t).x)==null?``:r} Y:${(i=H(t).y)==null?``:i}`)}),U(`click`,l,()=>_(H(t))),U(`click`,u,()=>g(H(t).id)),G(e,n)}),G(e,t)};mo(ve,e=>{H(d).length===0?e(ye):e(be,-1)}),D(_e),D(pe),D(v),z(()=>{var e,t,r;return K(x,`Current: Map ${(e=H(n).mapId)==null?``:e} (${(t=H(n).x)==null?``:t}, ${(r=H(n).y)==null?``:r})`)}),Cs(w,()=>H(l),e=>F(l,e)),$o(te,()=>H(o),e=>F(o,e)),Cs(ie,()=>H(u),e=>F(u,e)),U(`change`,ae,e=>{let t=parseInt(e.target.value);if(isNaN(t))return;let n=H(s).find(e=>e.id===t);n&&(F(i,n.x,!0),F(a,n.y,!0))}),$o(ae,()=>H(c),e=>F(c,e)),Cs(le,()=>H(i),e=>F(i,e)),Cs(de,()=>H(a),e=>F(a,e)),U(`click`,fe,m),U(`keydown`,he,e=>{e.stopPropagation(),e.key===`Enter`&&h()}),Cs(he,()=>H(f),e=>F(f,e)),U(`click`,ge,h),G(e,v),Nt()}Wa([`change`,`click`,`keydown`]);var lu=W(`Confirm? Cancel`,1),uu=W(`Run`),du=W(` `),fu=W(` `);function pu(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(null),o,s=()=>{let e=H(n);if(H(i).trim()){let t=H(i).trim().toLowerCase();e=H(n).filter(e=>String(e.id)===t||e.name.toLowerCase().includes(t))}F(r,e.sort((e,t)=>{let n=Zc.isFavorite(`commonEvents`,e.id),r=Zc.isFavorite(`commonEvents`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},c=()=>{F(n,q.commonev.list(),!0),s()},l=e=>{F(i,e.target.value,!0),s()};Ws(()=>{c()});let u=e=>{H(a)===e?(q.commonev.run(e),F(a,null),clearTimeout(o)):(F(a,e,!0),clearTimeout(o),o=setTimeout(()=>{H(a)===e&&F(a,null)},3e3))},d=()=>{F(a,null),clearTimeout(o)};var f=fu(),p=L(f),h=L(p);us(h);var g=R(h,2),_=L(g);D(g),D(p);var v=R(p,2);ul(L(v),{get items(){return H(r)},itemHeight:38,itemTemplate:(e,t=m)=>{var n=du(),r=L(n),i=L(r),o=L(i,!0);D(i);var c=R(i,2),l=L(c,!0);D(c),D(r);var f=R(r,2),p=L(f),h=L(p);{let e=Wn(()=>Zc.isFavorite(`commonEvents`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(p);var g=R(p,2),_=L(g),v=e=>{var n=lu(),r=_i(n),i=R(r,2);U(`click`,r,()=>u(t().id)),U(`click`,i,d),G(e,n)},y=e=>{var n=uu();U(`click`,n,()=>u(t().id)),G(e,n)};mo(_,e=>{H(a)===t().id?e(v):e(y,-1)}),D(g),D(f),D(n),z((e,n)=>{K(o,e),ps(c,`title`,t().name),K(l,t().name),Jo(p,1,`mr-2 flex items-center justify-center transition-colors ${n==null?``:n}`)},[()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`commonEvents`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`click`,p,()=>{Zc.toggleFavorite(`commonEvents`,t().id),s()}),G(e,n)},$$slots:{itemTemplate:!0}}),D(v),D(f),z(()=>{var e;ds(h,H(i)),K(_,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,h,l),G(e,f),Nt()}Wa([`input`,`click`]);var mu=W(`Unfreeze All`),hu=W(` Unfreeze`),gu=W(`No active data locks. Use the lock icon on variables, switches, items, or stats to freeze their value.`),_u=W(` `);function vu(e,t){Mt(t,!0);let n=P(I([])),r=()=>{F(n,X.summary(),!0)};Ws(()=>{r();let e=setInterval(r,1e3);return()=>clearInterval(e)});let i=e=>{if(e.type===`var`)X.freezeVar(e.id,!1);else if(e.type===`switch`)X.freezeSwitch(e.id,!1);else if(e.type===`item`){let[t,n]=e.key.split(`:`);X.freezeItem(t,parseInt(n,10),!1)}else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);X.freezeStat(parseInt(t,10),n,!1)}else e.type===`gold`&&X.freezeGold(!1);r()},a=e=>{if(e.type===`var`)Q.targetVarId=e.id,Q.activeTab=Ic.Vars;else if(e.type===`switch`)Q.targetSwitchId=e.id,Q.activeTab=Ic.Switches;else if(e.type===`item`)Q.targetItemKey=e.key,Q.activeTab=Ic.Inv;else if(e.type===`gold`)Q.activeTab=Ic.General;else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);Q.targetActorId=parseInt(t,10),Q.targetActorStat=n,Q.activeTab=Ic.Actors}},o=()=>{X.clearAll(),r()},s=e=>e===`var`?`VAR`:e===`switch`?`SW`:e===`item`?`ITEM`:e===`stat`?`STAT`:e===`param`?`PARAM`:e===`gold`?`GOLD`:`LOCK`,c=e=>e===`var`?`border-accent/30 bg-accent/10 text-accent`:e===`switch`?`border-ok/30 bg-ok/10 text-ok`:e===`item`?`border-warn/30 bg-warn/10 text-warn`:e===`stat`?`border-danger/30 bg-danger/10 text-danger`:e===`param`?`border-fuchsia-500/30 bg-fuchsia-500/10 text-fuchsia-500`:e===`gold`?`border-yellow-500/30 bg-yellow-500/10 text-yellow-500`:`border-gray-500/30 bg-gray-500/10 text-gray-400`;var l=_u(),u=L(l),d=L(u),f=L(d);D(d);var p=R(d,2),m=e=>{var t=mu();U(`click`,t,o),G(e,t)};mo(p,e=>{H(n).length>0&&e(m)}),D(u);var h=R(u,2);yo(h,21,()=>H(n),ho,(e,t)=>{var n=hu(),r=L(n),o=L(r),l=L(o,!0);D(o);var u=R(o,2),d=L(u,!0);D(u),D(r);var f=R(r,2),p=L(f),m=L(p,!0);D(p);var h=R(p,2);D(f),D(n),z((e,n)=>{Jo(o,1,`rounded border px-1.5 py-0.5 text-[10px] font-bold font-mono tracking-wide ${e==null?``:e}`),K(l,n),ps(u,`title`,H(t).label),K(d,H(t).label),K(m,typeof H(t).value==`boolean`?H(t).value?`ON`:`OFF`:H(t).value)},[()=>c(H(t).type),()=>s(H(t).type)]),U(`keydown`,n,e=>e.key===`Enter`&&a(H(t))),U(`click`,n,()=>a(H(t))),U(`click`,h,e=>{e.stopPropagation(),i(H(t))}),G(e,n)},e=>{G(e,gu())}),D(h),D(l),z(()=>{var e;return K(f,`${(e=H(n).length)==null?``:e} active locks`)}),G(e,l),Nt()}Wa([`click`,`keydown`]);var yu=W(`Press a key...`),bu=W(` `),xu=W(``),Su=W(` `);function Cu(e,t){Mt(t,!0);let n=Hs(t,`value`,15,``),r=Hs(t,`required`,3,!1),i=Hs(t,`combiningKeyAlone`,3,!1),a=P(!1),o=()=>{F(a,!0);let e=e=>{var a;e.preventDefault(),e.stopPropagation();let o=Yc.fromEvent(e);o.isCombiningKey()&&!i()||(n(o.asString()),(a=t.onchange)==null||a.call(t,n()),r())},r=()=>{F(a,!1),window.removeEventListener(`keydown`,e,{capture:!0})};window.addEventListener(`keydown`,e,{capture:!0}),setTimeout(()=>{window.addEventListener(`click`,r,{capture:!0,once:!0})},100)},s=e=>{if(!e)return`None`;try{return Yc.fromString(e).asDisplayString()}catch(t){return e}};var c=Su(),l=L(c),u=e=>{G(e,yu())},d=e=>{var t=bu(),r=L(t,!0);D(t),z(e=>{Jo(t,1,`border-border bg-bg2 hover:bg-border/50 flex h-8 flex-1 items-center rounded border px-3 text-sm font-medium transition-colors ${n()?`text-white`:`text-gray-500`}`),K(r,e)},[()=>s(n())]),U(`click`,t,o),G(e,t)};mo(l,e=>{H(a)?e(u):e(d,-1)});var f=R(l,2),p=e=>{var r=xu();Mc(L(r),{size:14}),D(r),U(`click`,r,()=>{var e;n(``),(e=t.onchange)==null||e.call(t,n())}),G(e,r)};mo(f,e=>{!r()&&n()&&!H(a)&&e(p)}),D(c),G(e,c),Nt()}Wa([`click`]);var wu=W(` `),Tu=W(` Restore Defaults `);function Eu(e,t){Mt(t,!0);let n=P(I([])),r=P(``),i=P(I([])),a=()=>{if(!H(r).trim())F(i,H(n),!0);else{let e=H(r).trim().toLowerCase();F(i,H(n).filter(t=>t.name.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)||t.keyStr.toLowerCase().includes(e)),!0)}},o=()=>{F(n,$.shortcuts.map(e=>({...e})),!0),a()};Ws(()=>{o()});let s=e=>{F(r,e.target.value,!0),a()},c=(e,t)=>{$.update(e,{keyStr:t}),o()},l=(e,t)=>{$.update(e,{enabled:t}),o()},u=()=>{localStorage.removeItem(`forge:shortcuts`),zc.show(`Defaults restored. Please reload the game.`,`success`)};var d=Tu(),f=L(d),p=L(f);us(p);var m=R(p,2);D(f);var h=R(f,2);yo(h,21,()=>H(i),e=>e.id,(e,t)=>{var n=wu(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o,!0);D(o),D(r);var u=R(r,2),d=L(u);{let e=Wn(()=>H(t).id===`speed_hold`||H(t).id===`skip_message`);Cu(d,{get value(){return H(t).keyStr},get required(){return H(t).required},get combiningKeyAlone(){return H(e)},onchange:e=>c(H(t).id,e)})}D(u);var f=R(u,2);xl(L(f),{get value(){return H(t).enabled},onchange:e=>l(H(t).id,e)}),D(f),D(n),z(()=>{Jo(i,1,`font-semibold text-sm ${H(t).enabled?`text-white`:`text-gray-500`}`),K(a,H(t).name),K(s,H(t).desc)}),G(e,n)}),D(h),D(d),z(()=>ds(p,H(r))),U(`input`,p,s),U(`click`,m,u),G(e,d),Nt()}Wa([`input`,`click`]),yt();var Du=Ls(()=>Xc),Ou=W(`UI Preferences Inactive Opacity Controls how transparent the panel becomes when the mouse leaves. Remember Window Position Save the exact window dimensions and position between game boots. Auto-Open on Boot Automatically display the Forge panel when the game finishes loading. Show Launcher Icon Display a draggable icon to open the panel without a shortcut. Gameplay Quick Save / Load Slot The save file slot used by the Quick Save and Quick Load shortcuts. Data Management Factory Reset Wipes all Forge settings, locks, and saved layout data. Reset Everything`);function ku(e,t){Mt(t,!1);let n=()=>Zc.save();Fs();var r=Ou(),i=L(r),a=R(L(i),2),o=R(L(a),2);fl(L(o),{get value(){return Du().inactiveOpacity},min:10,max:100,onchange:e=>{Du(Du().inactiveOpacity=e),n()}}),D(o),D(a);var s=R(a,2);xl(R(L(s),2),{onchange:()=>n(),get value(){return Du().rememberPosition},set value(e){Du(Du().rememberPosition=e)},$$legacy:!0}),D(s);var c=R(s,2);xl(R(L(c),2),{onchange:()=>n(),get value(){return Du().autoOpen},set value(e){Du(Du().autoOpen=e)},$$legacy:!0}),D(c);var l=R(c,2);xl(R(L(l),2),{onchange:()=>n(),get value(){return Du().showLauncher},set value(e){Du(Du().showLauncher=e)},$$legacy:!0}),D(l),D(i);var u=R(i,2),d=R(L(u),2),f=R(L(d),2);fl(L(f),{get value(){return Du().quickSaveSlot},min:1,max:20,onchange:e=>{Du(Du().quickSaveSlot=e),n()}}),D(f),D(d),D(u);var p=R(u,2),m=R(L(p),2),h=R(L(m),2);D(m),D(p),D(r),U(`click`,h,()=>Zc.resetAll()),G(e,r),Nt()}Wa([`click`]);var Au=W(` No logs recorded yet.`),ju=W(` `),Mu=W(`Narrator / Unknown`),Nu=W(` `),Pu=W(`Game Dialogue Logs CLEAR `);function Fu(e,t){Mt(t,!0);let n=P(void 0),r=e=>{let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`};Mi(()=>{Qc.entries.length&&setTimeout(()=>{var e,t;H(n)&&((e=(t=H(n)).scrollToBottom)==null||e.call(t))},10)});var i=Pu(),a=L(i),o=L(a),s=R(L(o),2);wc(L(s),{size:14}),ut(2),D(s),D(o);var c=R(o,2),l=L(c),u=e=>{var t=Au();mc(L(t),{size:32,class:`opacity-50`}),ut(2),D(t),G(e,t)},d=e=>{Ps(ul(e,{get items(){return Qc.entries},itemHeight:80,containerHeight:400,itemTemplate:(e,t=m)=>{var n=Nu(),i=L(n),a=L(i),o=e=>{var n=ju(),r=L(n,!0);D(n),z(()=>K(r,t().speaker)),G(e,n)},s=e=>{G(e,Mu())};mo(a,e=>{t().speaker?e(o):e(s,-1)});var c=R(a,2),l=L(c,!0);D(c),D(i);var u=R(i,2),d=L(u,!0);D(u),D(n),z(e=>{K(l,e),K(d,t().text)},[()=>r(t().timestamp)]),G(e,n)},$$slots:{itemTemplate:!0}}),e=>F(n,e,!0),()=>H(n))};mo(l,e=>{Qc.entries.length===0?e(u):e(d,-1)}),D(c),D(a),D(i),U(`click`,s,()=>tl.clear()),G(e,i),Nt()}Wa([`click`]);var Iu=W(` `),Lu=W(`Forge `),Ru=W(` `),zu=W(` `,1);function Bu(e,t){Mt(t,!0),Mi(()=>{let e=document.getElementById(`forge-mvmz-host`);if(!e)return;let t=!1,n=()=>{t=!1},r=[`mousedown`,`mousemove`,`mouseup`,`click`,`dblclick`,`pointerdown`,`pointermove`,`pointerup`,`contextmenu`,`wheel`,`touchstart`,`touchmove`,`touchend`,`keydown`,`keyup`],i=e=>{(e.type===`mousedown`||e.type===`pointerdown`||e.type===`touchstart`)&&(t=!0);let n=e.type===`mousemove`||e.type===`pointermove`||e.type===`touchmove`,r=e.type===`mouseup`||e.type===`pointerup`||e.type===`touchend`;if(n){let n=!1;if(`buttons`in e?n=e.buttons>0:`touches`in e&&(n=e.touches.length>0),n&&!t)return}r&&!t||e.stopPropagation()};if(window.addEventListener(`mouseup`,n,{capture:!0}),window.addEventListener(`pointerup`,n,{capture:!0}),window.addEventListener(`touchend`,n,{capture:!0}),Q.visible)for(let t of r)e.addEventListener(t,i,!1);else for(let t of r)e.removeEventListener(t,i,!1);return()=>{window.removeEventListener(`mouseup`,n,{capture:!0}),window.removeEventListener(`pointerup`,n,{capture:!0}),window.removeEventListener(`touchend`,n,{capture:!0});for(let t of r)e.removeEventListener(t,i,!1)}});let n=[{id:Ic.General,label:`General`},{id:Ic.Vars,label:`Variables`},{id:Ic.Switches,label:`Switches`},{id:Ic.Inv,label:`Inventory`},{id:Ic.Actors,label:`Actors`},{id:Ic.Map,label:`Map`},{id:Ic.CommonEv,label:`Events`},{id:Ic.Locks,label:`Locks`},{id:Ic.Logs,label:`Logs`},{id:Ic.Shortcuts,label:`Keys`},{id:Ic.Settings,label:`Settings`}],r=P(0),i=P(0),a=P(840),o=P(520),s=P(!1);Ws(()=>{Zc.load(),X.install(),Wc.install(),tl.install(),$.init(nl);try{let e=JSON.parse(localStorage.getItem(`forge:panel`)||`null`);e&&Xc.rememberPosition?(F(r,e.x,!0),F(i,e.y,!0),F(a,e.w,!0),F(o,e.h,!0)):typeof window<`u`&&(F(r,0),F(i,0),F(a,Math.min(840,window.innerWidth||840),!0),F(o,Math.min(520,window.innerHeight||520),!0));let t=localStorage.getItem(`forge:lastTab`);t&&Object.values(Ic).includes(t)&&(Q.activeTab=t)}catch(e){}Xc.autoOpen&&!Q.visible&&(Q.visible=!0)});let c=()=>{Xc.rememberPosition&&localStorage.setItem(`forge:panel`,JSON.stringify({x:H(r),y:H(i),w:H(a),h:H(o)})),localStorage.setItem(`forge:lastTab`,Q.activeTab)},l=P(!1),u=P(0),d=P(0),f=P(0),p=P(0),m=e=>{H(l)&&(F(r,Math.max(0,Math.min(window.innerWidth-H(a),H(f)+e.clientX-H(u))),!0),F(i,Math.max(0,Math.min(window.innerHeight-H(o),H(p)+e.clientY-H(d))),!0))},h=()=>{F(l,!1),window.removeEventListener(`mousemove`,m,!0),window.removeEventListener(`mouseup`,h,!0),c()},g=e=>{e.target.closest(`button, input, select`)||(F(l,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(f,H(r),!0),F(p,H(i),!0),window.addEventListener(`mousemove`,m,!0),window.addEventListener(`mouseup`,h,!0))},_=P(!1),v=P(0),y=P(0),b=e=>{H(_)&&(F(a,Math.max(560,Math.min(window.innerWidth-H(r),H(v)+e.clientX-H(u))),!0),F(o,Math.max(360,Math.min(window.innerHeight-H(i),H(y)+e.clientY-H(d))),!0))},x=()=>{F(_,!1),window.removeEventListener(`mousemove`,b,!0),window.removeEventListener(`mouseup`,x,!0),c()},S=e=>{F(_,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(v,H(a),!0),F(y,H(o),!0),window.addEventListener(`mousemove`,b,!0),window.addEventListener(`mouseup`,x,!0),e.stopPropagation()};var ee=zu(),C=_i(ee),w=e=>{var t=Lu(),u=L(t),d=L(u),f=R(d,2);yo(f,21,()=>n,ho,(e,t)=>{var n=Iu(),r=L(n),i=e=>{Ac(e,{size:14})},a=e=>{ic(e,{size:14})},o=e=>{Sc(e,{size:14})},s=e=>{gc(e,{size:14})},l=e=>{Oc(e,{size:14})},u=e=>{fc(e,{size:14})},d=e=>{Pc(e,{size:14})},f=e=>{uc(e,{size:14})},p=e=>{mc(e,{size:14})},m=e=>{oc(e,{size:14})},h=e=>{vc(e,{size:14})};mo(r,e=>{H(t).id===`general`?e(i):H(t).id===`vars`?e(a,1):H(t).id===`switches`?e(o,2):H(t).id===`inv`?e(s,3):H(t).id===`actors`?e(l,4):H(t).id===`map`?e(u,5):H(t).id===`commonev`?e(d,6):H(t).id===`locks`?e(f,7):H(t).id===`logs`?e(p,8):H(t).id===`shortcuts`?e(m,9):H(t).id===`settings`&&e(h,10)});var g=R(r,2),_=L(g,!0);D(g),D(n),z(()=>{Jo(n,1,`w-full text-left rounded px-3 py-2 text-xs font-semibold transition-all flex items-center space-x-2.5 focus:outline-none ${Q.activeTab===H(t).id?`bg-[#7ba4ff]/10 text-[#7ba4ff] shadow-sm`:`text-gray-400 hover:bg-[#2a2d3a] hover:text-gray-200`}`),K(_,H(t).label)}),U(`click`,n,()=>{var e;Q.activeTab=H(t).id,(e=window.getSelection())==null||e.removeAllRanges(),c()}),G(e,n)}),D(f);var p=R(f,2),m=L(p);ps(m,`title`,`1.0.0`),m.textContent=`1.0.0`,D(p),D(u);var h=R(u,2),v=L(h),y=L(v),b=L(y,!0);D(y);var x=R(y,2);Mc(L(x),{size:14}),D(x),D(v);var ee=R(v,2),C=L(ee),w=e=>{yl(e,{})},te=e=>{wl(e,{})},ne=e=>{Ol(e,{})},re=e=>{Vl(e,{})},ie=e=>{ru(e,{})},ae=e=>{cu(e,{})},oe=e=>{pu(e,{})},se=e=>{vu(e,{})},ce=e=>{Fu(e,{})},le=e=>{Eu(e,{})},ue=e=>{ku(e,{})};mo(C,e=>{Q.activeTab===Ic.Vars?e(w):Q.activeTab===Ic.Switches?e(te,1):Q.activeTab===Ic.Inv?e(ne,2):Q.activeTab===Ic.Actors?e(re,3):Q.activeTab===Ic.General?e(ie,4):Q.activeTab===Ic.Map?e(ae,5):Q.activeTab===Ic.CommonEv?e(oe,6):Q.activeTab===Ic.Locks?e(se,7):Q.activeTab===Ic.Logs?e(ce,8):Q.activeTab===Ic.Shortcuts?e(le,9):Q.activeTab===Ic.Settings&&e(ue,10)}),D(ee),D(h),il(R(h,2),{onmousedown:S}),D(t),z(e=>{var n,c,u,d;Xo(t,`opacity: ${H(l)||H(_)||H(s)?1:Xc.inactiveOpacity/100}; left: ${(n=H(r))==null?``:n}px; top: ${(c=H(i))==null?``:c}px; width: ${(u=H(a))==null?``:u}px; height: ${(d=H(o))==null?``:d}px; background: #13151a; color: #d4d8e3;`),K(b,e)},[()=>{var e;return((e=n.find(e=>e.id===Q.activeTab))==null?void 0:e.label)||``}]),Ua(`mouseenter`,t,()=>F(s,!0)),Ua(`mouseleave`,t,()=>F(s,!1)),U(`mousedown`,d,g),U(`mousedown`,v,g),U(`click`,x,()=>Q.visible=!1),G(e,t)};mo(C,e=>{Q.visible&&e(w)});var te=R(C,2);yo(te,21,()=>zc.toasts,e=>e.id,(e,t)=>{var n=Ru(),r=L(n),i=R(r,2),a=L(i,!0);D(i),D(n),z(()=>{Xo(n,`background: #1a1d24; border-color: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`}; opacity: 0.95; min-width: 160px; max-width: 320px;`),Xo(r,`background: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`};`),K(a,H(t).message)}),G(e,n)}),D(te),ol(R(te,2),{}),G(e,ee),Nt()}Wa([`mousedown`,`click`]);var Vu=`forge-mvmz-host`,Hu=document.getElementById(Vu);Hu||(Hu=document.createElement(`div`),Hu.id=Vu,Hu.style.position=`fixed`,Hu.style.top=`0`,Hu.style.left=`0`,Hu.style.width=`100vw`,Hu.style.height=`100vh`,Hu.style.pointerEvents=`none`,Hu.style.zIndex=`2147483647`,document.body.appendChild(Hu));var Uu=document.createElement(`style`);Uu.textContent=`#${Vu} { z-index: 2147483647 !important; }`,document.head.appendChild(Uu);var Wu=null,Gu;typeof Hu.attachShadow==`function`?(Wu=Hu.attachShadow({mode:`open`}),Gu=Wu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,Wu.appendChild(e)}}},0)):(Gu=Hu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,document.head.appendChild(e)}}},0));var Ku=document.createElement(`div`);Ku.style.pointerEvents=`none`,Ku.style.width=`100%`,Ku.style.height=`100%`,Gu.appendChild(Ku);try{to(Bu,{target:Ku})}catch(e){console.error(`[FORGE] Error mounting Svelte App:`,e)}if(window.Input!==void 0&&window.Input._onKeyDown){let e=window.Input._onKeyDown;window.Input._onKeyDown=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}if(window.Input!==void 0&&window.Input._onKeyUp){let e=window.Input._onKeyUp;window.Input._onKeyUp=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}})(); \ No newline at end of file diff --git a/util/forge/config.py b/util/forge/config.py index c28c7e6..97534f7 100644 --- a/util/forge/config.py +++ b/util/forge/config.py @@ -140,14 +140,23 @@ def _patch_forge_runtime(forge_text: str, hotkey: str, ui_scale: str, engine: st return forge_text +def is_legacy_forge_plugin(text: str) -> bool: + """True for pre-rewrite Forge_MV/MZ plugins with RPG Maker @param blocks.""" + return "@param Hotkey" in text or "@param hotkey" in text + + def prepare_forge_js(engine: str, source: Path | None = None, cfg: dict | None = None) -> str: """Build the Forge plugin written into a game folder (vanilla source + Dazed patches).""" src = source or bundled_plugin_path(engine) + text = src.read_text(encoding="utf-8") + if not is_legacy_forge_plugin(text): + return text + effective = {**load_config(), **(cfg or {})} hotkey = effective.get("forgeHotkey", "F10") ui_scale = effective.get("uiScale", "auto") - text = apply_ui_scale_patches(src.read_text(encoding="utf-8"), engine) + text = apply_ui_scale_patches(text, engine) text = _patch_forge_hotkey(text, hotkey, engine) text = _patch_forge_ui_scale_default(text, str(ui_scale), engine) text = _patch_forge_mtc_defaults(text, hotkey, str(ui_scale)) diff --git a/util/forge/scale_patches.py b/util/forge/scale_patches.py index a727ad2..3e5f9bf 100644 --- a/util/forge/scale_patches.py +++ b/util/forge/scale_patches.py @@ -81,6 +81,8 @@ def _sub(text: str, pattern: str, repl, *, label: str, count: int = 1) -> str: def apply_ui_scale_patches(text: str, engine: str) -> str: """Return upstream Forge JS with Dazed overlay scaling (install-time only).""" + if not ("@param Hotkey" in text or "@param hotkey" in text): + return text if engine == "MZ": text = _sub( text, diff --git a/util/forge/update_tools.py b/util/forge/update_tools.py index 57b9236..2bf8369 100644 --- a/util/forge/update_tools.py +++ b/util/forge/update_tools.py @@ -1,6 +1,7 @@ """Download / update Forge plugins from len's upstream repo (gitgud.io). Upstream: https://gitgud.io/zero64801/forge-mvmz +CI builds a unified forge.js plugin (master branch artifacts). Offline copies: util/forge/upstream/ Active plugins: util/forge/Forge_MZ.js, util/forge/Forge_MV.js """ @@ -81,11 +82,11 @@ def _upstream_commit() -> str: return commit -def _raw_file_url(filename: str) -> str: - enc = urllib.parse.quote(filename, safe="") +def _artifact_url(filename: str) -> str: + """Latest successful build_job artifact on the tracked branch.""" return ( - f"{GITGUD_API}/projects/{_project_id()}/repository/files/{enc}/raw" - f"?ref={FORGE_BRANCH}" + f"https://gitgud.io/{FORGE_PROJECT}/-/jobs/artifacts/{FORGE_BRANCH}" + f"/raw/{filename}?job=build_job" ) @@ -109,13 +110,18 @@ def _seed_from_offline(engine: str, log_fn) -> bool: return True -def _fetch_plugin(engine: str, log_fn) -> None: - name = PLUGIN_BY_ENGINE[engine] - _log(f"Downloading {name}.js from {FORGE_PROJECT}...", log_fn) - data = _download_bytes(_raw_file_url(f"{name}.js")) - bundled_plugin_path(engine).write_bytes(data) +def _fetch_plugins(log_fn) -> bytes: + """Download the unified forge.js CI artifact.""" + _log(f"Downloading forge.js from {FORGE_PROJECT} ({FORGE_BRANCH} CI)...", log_fn) + return _download_bytes(_artifact_url("forge.js")) + + +def _install_plugin_bytes(data: bytes) -> None: + """Write forge.js into both engine plugin paths and the offline bundle.""" UPSTREAM_DIR.mkdir(parents=True, exist_ok=True) - upstream_plugin_path(engine).write_bytes(data) + for engine in PLUGIN_BY_ENGINE: + bundled_plugin_path(engine).write_bytes(data) + upstream_plugin_path(engine).write_bytes(data) def _download_bytes(url: str) -> bytes: @@ -125,24 +131,25 @@ def _download_bytes(url: str) -> bytes: def refresh_forge_plugins(log_fn=print) -> bool: - """Download len's latest Forge_MV.js and Forge_MZ.js.""" + """Download len's latest forge.js and install Forge_MV/MZ copies.""" try: commit = _upstream_commit() except Exception as exc: _log(f"ERROR: could not contact upstream ({exc})", log_fn) return False - ok = True - for engine in PLUGIN_BY_ENGINE: - try: - _fetch_plugin(engine, log_fn) - except Exception as exc: - _log(f"ERROR: download failed for {PLUGIN_BY_ENGINE[engine]} ({exc})", log_fn) - ok = False - - if not ok: + try: + data = _fetch_plugins(log_fn) + except Exception as exc: + _log(f"ERROR: download failed for forge.js ({exc})", log_fn) return False + if not data.strip().startswith(b"//"): + _log("ERROR: forge.js download did not look like a plugin file.", log_fn) + return False + + _install_plugin_bytes(data) + versions = _load_versions() versions["commit"] = commit versions["branch"] = FORGE_BRANCH @@ -193,7 +200,11 @@ def ensure_forge_plugins(force: bool = False, log_fn=print) -> bool: if need_fetch: if refresh_forge_plugins(log_fn=log_fn): return True - return all(bundled_plugin_path(e).is_file() for e in PLUGIN_BY_ENGINE) + have_local = all(bundled_plugin_path(e).is_file() for e in PLUGIN_BY_ENGINE) + if force or not have_local: + _log("ERROR: Forge plugin update failed.", log_fn) + return False + _log("Warning: could not update Forge plugins; using local copy.", log_fn) return True diff --git a/util/forge/upstream/Forge_MV.js b/util/forge/upstream/Forge_MV.js index 675f210..7023672 100644 --- a/util/forge/upstream/Forge_MV.js +++ b/util/forge/upstream/Forge_MV.js @@ -1,1104 +1,28 @@ //============================================================================= -// Forge_MV.js — In-game cheat & editor overlay for RPG Maker MV +// forge.js - In-game cheat & editor overlay for RPG Maker MV/MZ //============================================================================= /*: - * @plugindesc Forge — modern in-game editor: variables, switches, items, actors, gold, teleport, common events, freeze/lock & battle cheats. (MV) - * @author len (Forge - clean-room, MTool-inspired) - * - * @param Hotkey - * @desc Key to toggle the panel. - * @default F10 - * - * @param SpeedKey - * @desc Key to toggle the speedhack (fast-forward). Use a key name like Control, Shift, Alt, or a letter. - * @default Control - * - * @param StartOpen - * @desc Open the panel automatically on new game / load (true/false). - * @default false - * - * @param ItemMaxOverride - * @desc Value used by the "Max" button for item stacks (0 = use engine maxItems). - * @default 0 - * - * @help - * Forge — drop-in cheat & editor for RPG Maker MV. - * Place in js/plugins/ and enable. Press F10 in-game to open the overlay. - * - * Sections: Variables · Switches · Items/Weapons/Armors · Actors · Party/Gold · - * Map/Teleport · Common Events · Data Lock (freeze) · Battle cheats. - * - * All edits are RAM-only and never written to save files. No external requests. - * Plugin command: MTC open (toggles the panel) + * @target MZ MV + * @plugindesc Forge - modern in-game editor + * @author len, shellawa + * @url https://gitgud.io/zero64801/forge-mvmz/ */ - -/* =================================================================================== - * Forge — in-game cheat & editor overlay for RPG Maker MV / MZ (shared core) - * Clean-room reimplementation of MTool's variable/value editor. Vanilla JS, zero deps. - * This file is the engine-agnostic core; the MV/MZ ship files prepend the plugin header. - * Layers: ops (DOM-free, testable) · locks (prototype monkeypatches) · cheats · ui (Shadow DOM) - * =================================================================================== */ -(function (root) { - 'use strict'; - if (root && root.__FORGE_CORE__) return; - - // ---------- environment ---------- - var IS_MZ = (typeof Utils !== 'undefined' && Utils.RPGMAKER_NAME === 'MZ'); - var nodeFs = null, nodePath = null; - try { if (typeof require === 'function') { nodeFs = require('fs'); nodePath = require('path'); } } catch (e) {} - function gameCwd() { try { return process.cwd(); } catch (e) { return '.'; } } - - var PARAM_NAMES = ['Max HP', 'Max MP', 'Attack', 'Defense', 'M.Attack', 'M.Defense', 'Agility', 'Luck']; - - // ---------- small utils ---------- - function clampInt(v, lo, hi) { v = Math.floor(Number(v) || 0); if (v < lo) v = lo; if (hi != null && v > hi) v = hi; return v; } - function defined(x) { return typeof x !== 'undefined' && x !== null; } - function dataName(d) { return d && d.name ? d.name : ''; } - // actor.level may be a getter (number), a method, or only the _level field across engines/plugins. - function actorLevel(a) { if (!a) return 0; if (typeof a.level === 'number') return a.level; if (typeof a.level === 'function') return a.level(); return a._level || 1; } - - // =================================================================================== - // OPS — pure logic, only touches $game*/$data* globals. Unit-testable. - // =================================================================================== - var ops = {}; - - ops.vars = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.variables.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.variables[id]) || ('Variable ' + id); }, - get: function (id) { return defined(window.$gameVariables) ? $gameVariables.value(id) : 0; }, - set: function (id, v) { if (!defined(window.$gameVariables)) return; $gameVariables.setValue(id, typeof v === 'string' && v.trim() !== '' && !isNaN(v) ? Number(v) : v); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - ops.switches = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.switches.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.switches[id]) || ('Switch ' + id); }, - get: function (id) { return defined(window.$gameSwitches) ? $gameSwitches.value(id) : false; }, - set: function (id, v) { if (!defined(window.$gameSwitches)) return; $gameSwitches.setValue(id, !!v); }, - toggle: function (id) { this.set(id, !this.get(id)); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - var INV_TABLES = { item: '$dataItems', weapon: '$dataWeapons', armor: '$dataArmors' }; - ops.inv = { - table: function (kind) { return window[INV_TABLES[kind]] || []; }, - data: function (kind, id) { return this.table(kind)[id] || null; }, - count: function (kind, id) { var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.numItems(d) : 0; }, - maxStack: function (kind, id) { if (MTC._itemMaxOverride > 0) return MTC._itemMaxOverride; var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.maxItems(d) : 99; }, - grant: function (kind, id, n) { var d = this.data(kind, id); if (d && defined(window.$gameParty)) $gameParty.gainItem(d, n, false); if (locks.isItemFrozen(kind, id)) LOCK.items.set(itemKey(kind, id), { kind: kind, id: id, value: this.count(kind, id) }); }, - setCount: function (kind, id, target) { this.grant(kind, id, clampInt(target, 0, null) - this.count(kind, id)); }, - max: function (kind, id) { this.setCount(kind, id, this.maxStack(kind, id)); }, - list: function (kind) { - var t = this.table(kind), out = []; - for (var id = 1; id < t.length; id++) { - var d = t[id]; if (!d || !d.name) continue; - out.push({ id: id, name: d.name, description: d.description || '', iconIndex: d.iconIndex || 0, count: $gameParty.numItems(d) }); - } - return out; - } - }; - - ops.gold = { - get: function () { return defined(window.$gameParty) ? $gameParty.gold() : 0; }, - max: function () { return defined(window.$gameParty) && $gameParty.maxGold ? $gameParty.maxGold() : 99999999; }, - add: function (n) { - if (!defined(window.$gameParty)) return; - if (LOCK.gold != null) { LOCK.gold = clampInt(LOCK.gold + n, 0, this.max()); (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); return; } - if (n >= 0) $gameParty.gainGold(n); else $gameParty.loseGold(-n); - }, - set: function (target) { this.add(clampInt(target, 0, this.max()) - this.get()); } - }; - - ops.actors = { - list: function () { - var out = []; - if (!defined(window.$dataActors)) return out; - for (var id = 1; id < $dataActors.length; id++) { - var d = $dataActors[id]; if (!d) continue; - var a = $gameActors.actor(id); - out.push({ id: id, name: a ? a.name() : d.name, level: a ? actorLevel(a) : (d.initialLevel || 1), inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false }); - } - return out; - }, - get: function (id) { - var a = $gameActors.actor(id); if (!a) return null; - var params = []; - for (var p = 0; p < 8; p++) params.push({ id: p, name: PARAM_NAMES[p], value: a.param(p) }); - var skills = []; - if (defined(window.$dataSkills)) for (var s = 1; s < $dataSkills.length; s++) { var sk = $dataSkills[s]; if (sk && sk.name) skills.push({ id: s, name: sk.name, learned: a.isLearnedSkill ? a.isLearnedSkill(s) : (a.skills().indexOf(sk) >= 0) }); } - var equips = [], slots = a.equipSlots ? a.equipSlots() : [], cur = a.equips(); - for (var e = 0; e < slots.length; e++) equips.push({ slot: e, etypeId: slots[e], current: cur[e] ? cur[e].name : '(none)' }); - return { - id: id, name: a.name(), level: actorLevel(a), exp: a.currentExp ? a.currentExp() : 0, - nextExp: a.nextLevelExp ? a.nextLevelExp() : 0, - hp: a.hp, mp: a.mp, tp: a.tp, mhp: a.mhp, mmp: a.mmp, - params: params, skills: skills, equips: equips, - inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false - }; - }, - setLevel: function (id, lv) { var a = $gameActors.actor(id); if (a) { var cap = a.maxLevel ? a.maxLevel() : 99; a.changeLevel(clampInt(lv, 1, cap), false); a.refresh(); } }, - setExp: function (id, exp) { var a = $gameActors.actor(id); if (a) { a.changeExp(clampInt(exp, 0, null), false); a.refresh(); } }, - setHp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setHp(clampInt(v, 0, a.mhp)); a.refresh(); } }, - setMp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setMp(clampInt(v, 0, a.mmp)); a.refresh(); } }, - setTp: function (id, v) { var a = $gameActors.actor(id); if (a && a.setTp) { a.setTp(clampInt(v, 0, 100)); a.refresh(); } }, - addParam: function (id, pid, delta) { var a = $gameActors.actor(id); if (a) { a.addParam(pid, Math.floor(delta)); a.refresh(); } }, - // param(pid) = round((paramBase+paramPlus) * paramRate * paramBuffRate) clamped to [paramMin,paramMax]. - // addParam only mutates paramPlus, so invert the rate to land the *visible* param on target. - setParam: function (id, pid, target) { - var a = $gameActors.actor(id); if (!a) return; - var rate = (a.paramRate ? a.paramRate(pid) : 1) * (a.paramBuffRate ? a.paramBuffRate(pid) : 1) || 1; - var cap = a.paramMax ? a.paramMax(pid) : null; - var want = clampInt(target, a.paramMin ? a.paramMin(pid) : 0, cap); - var base = a.paramBase ? a.paramBase(pid) : 0, plus = (a.paramPlus ? a.paramPlus(pid) : (a._paramPlus ? a._paramPlus[pid] : 0)) || 0; - a.addParam(pid, Math.round(want / rate) - base - plus); - a.refresh(); - }, - learn: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.learnSkill(skillId); }, - forget: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.forgetSkill(skillId); }, - equip: function (id, slotId, kind, itemId) { var a = $gameActors.actor(id); if (!a) return; var item = itemId ? ops.inv.data(kind, itemId) : null; if (a.forceChangeEquip) a.forceChangeEquip(slotId, item); else a.changeEquip(slotId, item); a.refresh(); }, - recover: function (id) { var a = $gameActors.actor(id); if (a) { a.recoverAll(); a.refresh(); } }, - setName: function (id, name) { var a = $gameActors.actor(id); if (a) a.setName(String(name)); }, - addToParty: function (id) { $gameParty.addActor(id); }, - removeFromParty: function (id) { $gameParty.removeActor(id); } - }; - - ops.party = { - members: function () { return defined(window.$gameParty) ? $gameParty.members().map(function (a) { return { id: a.actorId(), name: a.name(), level: actorLevel(a) }; }) : []; }, - add: function (id) { if (defined(window.$gameParty)) $gameParty.addActor(id); }, - remove: function (id) { if (defined(window.$gameParty)) $gameParty.removeActor(id); }, - steps: function () { return defined(window.$gameParty) ? $gameParty.steps() : 0; }, - // RPG Maker derives playtime from frame count (Game_System has no playtime()). - playtime: function () { return (typeof Graphics !== 'undefined' && Graphics.frameCount) ? Math.floor(Graphics.frameCount / 60) : 0; } - }; - - ops.map = { - list: function () { - var out = []; - if (!defined(window.$dataMapInfos)) return out; - for (var id = 1; id < $dataMapInfos.length; id++) { var m = $dataMapInfos[id]; if (m) out.push({ id: id, name: m.name || ('Map ' + id) }); } - return out; - }, - current: function () { if (!defined(window.$gameMap) || !defined(window.$gamePlayer)) return { mapId: 0, x: 0, y: 0, dir: 2 }; return { mapId: $gameMap.mapId(), x: $gamePlayer.x, y: $gamePlayer.y, dir: $gamePlayer.direction ? $gamePlayer.direction() : 2 }; }, - teleport: function (mapId, x, y, dir, fade) { $gamePlayer.reserveTransfer(mapId, clampInt(x, 0, null), clampInt(y, 0, null), dir || 0, fade == null ? 0 : fade); }, - loadMapFile: function (mapId) { - if (!nodeFs) return null; - try { var f = 'Map' + String(mapId).padStart(3, '0') + '.json'; return JSON.parse(nodeFs.readFileSync(nodePath.join(gameCwd(), 'data', f), 'utf8')); } - catch (e) { return null; } - }, - noclip: function (b) { locks.state.noclip = !!b; if (defined(window.$gamePlayer)) $gamePlayer.setThrough(!!b); }, - isNoclip: function () { return !!locks.state.noclip; }, - speed: function (n) { if (defined(window.$gamePlayer)) $gamePlayer.setMoveSpeed(clampInt(n, 1, 8)); } - }; - - ops.commonev = { - list: function () { - var out = []; - if (!defined(window.$dataCommonEvents)) return out; - for (var id = 1; id < $dataCommonEvents.length; id++) { var c = $dataCommonEvents[id]; if (c) out.push({ id: id, name: c.name || ('Common Event ' + id) }); } - return out; - }, - run: function (id) { if (defined(window.$gameTemp)) $gameTemp.reserveCommonEvent(id); } - }; - - ops.battle = { - inBattle: function () { - if (typeof SceneManager === 'undefined' || !SceneManager._scene) return false; - if (typeof Scene_Battle !== 'undefined' && SceneManager._scene instanceof Scene_Battle) return true; - var c = SceneManager._scene.constructor; // fallback if class binding unavailable - return !!(c && c.name === 'Scene_Battle'); - }, - instantWin: function () { - if (typeof $gameTroop === 'undefined' || !$gameTroop) return; - $gameTroop.members().forEach(function (e) { - e.setHp(0); - if (e.deathStateId && e.addState) e.addState(e.deathStateId()); // mark actually dead - else if (e.die) e.die(); - if (e.performCollapse) e.performCollapse(); // visual collapse - e.refresh(); - }); - if (typeof BattleManager !== 'undefined' && BattleManager.checkBattleEnd) BattleManager.checkBattleEnd(); - }, - flee: function () { if (typeof BattleManager !== 'undefined' && BattleManager.processAbort) BattleManager.processAbort(); } - }; - - // =================================================================================== - // LOCKS — prototype-level monkeypatches + per-frame re-assertion. Installed once. - // =================================================================================== - var LOCK = { vars: new Map(), switches: new Map(), items: new Map(), gold: null, stats: new Map(), noclip: false }; - function itemKey(kind, id) { return kind + ':' + id; } - - var locks = { - state: LOCK, - _installed: false, - install: function () { - if (this._installed) return; this._installed = true; - // Variables - if (typeof Game_Variables !== 'undefined') { - var _sv = Game_Variables.prototype.setValue; - Game_Variables.prototype.setValue = function (id, value) { if (LOCK.vars.has(id)) value = LOCK.vars.get(id); _sv.call(this, id, value); }; - } - // Switches - if (typeof Game_Switches !== 'undefined') { - var _ss = Game_Switches.prototype.setValue; - Game_Switches.prototype.setValue = function (id, value) { if (LOCK.switches.has(id)) value = LOCK.switches.get(id); _ss.call(this, id, value); }; - } - // Gold: substitute (not block) so freezeGold can re-snapshot on edit; item freeze is tick-based - // (NOT a gainItem block) so equip bookkeeping / give-take still runs, corrected next frame. - if (typeof Game_Party !== 'undefined') { - var _gg = Game_Party.prototype.gainGold; - locks._origGainGold = _gg; - Game_Party.prototype.gainGold = function (n) { if (LOCK.gold != null) return; _gg.call(this, n); }; - } - // Battle: god mode + OHKO via one executeHpDamage override - if (typeof Game_Action !== 'undefined') { - var _ehd = Game_Action.prototype.executeHpDamage; - Game_Action.prototype.executeHpDamage = function (target, value) { - if (CHEAT.god && target.isActor && target.isActor() && value > 0) value = 0; - if (CHEAT.ohko && this.subject().isActor && this.subject().isActor() && target.isEnemy && target.isEnemy()) value = target.hp; - _ehd.call(this, target, value); - }; - } - // God mode also blocks non-action HP loss for actors (slip/regen, event Change-HP) + floor damage. - if (typeof Game_Battler !== 'undefined' && Game_Battler.prototype.gainHp) { - var _gh = Game_Battler.prototype.gainHp; - Game_Battler.prototype.gainHp = function (value) { if (CHEAT.god && this.isActor && this.isActor() && value < 0) value = 0; _gh.call(this, value); }; - } - if (typeof Game_Actor !== 'undefined' && Game_Actor.prototype.executeFloorDamage) { - var _efd = Game_Actor.prototype.executeFloorDamage; - Game_Actor.prototype.executeFloorDamage = function () { if (CHEAT.god) return; _efd.call(this); }; - } - // No encounters - if (typeof Game_Player !== 'undefined') { - var _epv = Game_Player.prototype.encounterProgressValue; - Game_Player.prototype.encounterProgressValue = function () { return CHEAT.noEncounter ? 0 : _epv.call(this); }; - } - // Speedhack: drive the scene update extra times per frame (speed>1) or skip frames (speed<1). - // Input is still read once per real frame, so the whole game (movement, anim, battle, messages, - // events, timers) runs faster/slower. Works for MV and MZ (both expose SceneManager.updateScene). - if (typeof SceneManager !== 'undefined' && SceneManager.updateScene) { - var _updateScene = SceneManager.updateScene, _spdAcc = 0; - // Extra updates are only safe in a steady scene: the scene must be started, not changing, and - // (on a map) not mid-transfer — otherwise $dataMap is briefly null and the scroll code throws. - function speedSafe(mgr) { - if (mgr.isCurrentSceneStarted) { if (!mgr.isCurrentSceneStarted()) return false; } // MV - else if (mgr._scene && mgr._scene.isStarted) { if (!mgr._scene.isStarted()) return false; } // MZ - if (mgr.isSceneChanging && mgr.isSceneChanging()) return false; // mid scene transition - if (typeof $gamePlayer !== 'undefined' && $gamePlayer && $gamePlayer.isTransferring && $gamePlayer.isTransferring()) return false; - if (typeof DataManager !== 'undefined' && DataManager.isMapLoaded && !DataManager.isMapLoaded()) return false; // map (re)loading - return true; - } - SceneManager.updateScene = function () { - var sp = CHEAT.speed || 1; - if (sp >= 1) { - _updateScene.call(this); - if (sp > 1 && this._scene && typeof this._scene.update === 'function' && speedSafe(this)) { - _spdAcc += (sp - 1); - var guard = 0; - while (_spdAcc >= 1 && guard++ < 64) { _spdAcc -= 1; try { this._scene.update(); } catch (e) { _spdAcc = 0; break; } } - } else { _spdAcc = 0; } // not safe / not boosting -> don't bank up a burst of catch-up updates - } else { - _spdAcc += sp; - if (_spdAcc >= 1) { _spdAcc -= 1; _updateScene.call(this); } - else if (this._scene) { // skip the game advance this frame, keep start/ready bookkeeping - var u = this._scene.update; this._scene.update = function () {}; - try { _updateScene.call(this); } finally { this._scene.update = u; } - } - } - }; - } - // Clear stale freeze snapshots when the engine swaps in fresh game objects (new game / load). - if (typeof DataManager !== 'undefined') { - if (DataManager.setupNewGame) { var _sng = DataManager.setupNewGame; DataManager.setupNewGame = function () { locks.clearAll(); _sng.call(this); }; } - if (DataManager.extractSaveContents) { var _esc = DataManager.extractSaveContents; DataManager.extractSaveContents = function (c) { locks.clearAll(); return _esc.call(this, c); }; } - } - }, - // Freeze setters update both the lock map and the live value once. Maps store parsed objects so - // the per-frame tick never re-parses string keys. - freezeVar: function (id, on) { if (on) { LOCK.vars.set(id, ops.vars.get(id)); ops.vars.set(id, ops.vars.get(id)); } else LOCK.vars.delete(id); }, - freezeSwitch: function (id, on) { if (on) LOCK.switches.set(id, ops.switches.get(id)); else LOCK.switches.delete(id); }, - freezeItem: function (kind, id, on) { var k = itemKey(kind, id); if (on) LOCK.items.set(k, { kind: kind, id: id, value: ops.inv.count(kind, id) }); else LOCK.items.delete(k); }, - freezeGold: function (on) { LOCK.gold = on ? ops.gold.get() : null; }, - freezeStat: function (actorId, stat, on) { var k = actorId + ':' + stat; if (on) { var a = defined(window.$gameActors) ? $gameActors.actor(actorId) : null; LOCK.stats.set(k, { actorId: actorId, stat: stat, value: a ? a[stat] : 0 }); } else LOCK.stats.delete(k); }, - isVarFrozen: function (id) { return LOCK.vars.has(id); }, - isSwitchFrozen: function (id) { return LOCK.switches.has(id); }, - isItemFrozen: function (kind, id) { return LOCK.items.has(itemKey(kind, id)); }, - isStatFrozen: function (actorId, stat) { return LOCK.stats.has(actorId + ':' + stat); }, - // Per-frame: re-assert values the overrides can't catch (hp/mp/tp, gold target, item counts, noclip). - tick: function () { - if (!LOCK.noclip && LOCK.gold == null && !LOCK.stats.size && !LOCK.items.size) return; // early-out - if (LOCK.noclip && defined(window.$gamePlayer) && !$gamePlayer.isThrough()) $gamePlayer.setThrough(true); - if (LOCK.gold != null && defined(window.$gameParty) && $gameParty.gold() !== LOCK.gold) (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); - if (LOCK.stats.size && defined(window.$gameActors)) { - LOCK.stats.forEach(function (e) { - var a = $gameActors.actor(e.actorId); if (!a) return; - if (e.stat === 'hp' && a.hp !== e.value) a.setHp(Math.min(e.value, a.mhp)); - else if (e.stat === 'mp' && a.mp !== e.value) a.setMp(Math.min(e.value, a.mmp)); - else if (e.stat === 'tp' && a.tp !== e.value && a.setTp) a.setTp(e.value); - }); - } - if (LOCK.items.size && defined(window.$gameParty)) { - LOCK.items.forEach(function (e) { if (ops.inv.count(e.kind, e.id) !== e.value) { var d = ops.inv.data(e.kind, e.id); if (d) $gameParty.gainItem(d, e.value - ops.inv.count(e.kind, e.id), false); } }); - } - }, - summary: function () { - var out = []; - LOCK.vars.forEach(function (v, id) { out.push({ type: 'var', id: id, label: 'Var ' + id + ' · ' + ops.vars.name(id), value: v }); }); - LOCK.switches.forEach(function (v, id) { out.push({ type: 'switch', id: id, label: 'Switch ' + id + ' · ' + ops.switches.name(id), value: v ? 'ON' : 'OFF' }); }); - LOCK.items.forEach(function (e, key) { out.push({ type: 'item', key: key, label: e.kind + ' ' + e.id + ' · ' + (ops.inv.data(e.kind, e.id) ? ops.inv.data(e.kind, e.id).name : ''), value: e.value }); }); - LOCK.stats.forEach(function (e, key) { out.push({ type: 'stat', key: key, label: 'Actor ' + e.actorId + ' · ' + e.stat.toUpperCase(), value: e.value }); }); - if (LOCK.gold != null) out.push({ type: 'gold', label: 'Gold (frozen)', value: LOCK.gold }); - if (LOCK.noclip) out.push({ type: 'noclip', label: 'Noclip (active)', value: 'ON' }); - return out; - }, - clearAll: function () { LOCK.vars.clear(); LOCK.switches.clear(); LOCK.items.clear(); LOCK.stats.clear(); LOCK.gold = null; if (LOCK.noclip) ops.map.noclip(false); } - }; - - // =================================================================================== - // CHEATS — global toggles consumed by the lock overrides + battle actions. - // =================================================================================== - var CHEAT = { god: false, ohko: false, noEncounter: false, speed: 1, uiFocused: false }; - var cheats = { - state: CHEAT, - setGod: function (b) { CHEAT.god = !!b; }, - setOhko: function (b) { CHEAT.ohko = !!b; }, - setNoEncounter: function (b) { CHEAT.noEncounter = !!b; }, - setSpeed: function (n) { CHEAT.speed = Math.max(0.1, Math.min(Number(n) || 1, 16)); }, - toggleSpeed: function () { this.setSpeed(CHEAT.speed !== 1 ? 1 : (MTC._speedBoost || 2)); return CHEAT.speed; }, - instantWin: function () { ops.battle.instantWin(); }, - flee: function () { ops.battle.flee(); } - }; - - // expose the assembled API (UI is attached below if a real DOM is present) - var MTC = { env: { IS_MZ: IS_MZ }, ops: ops, locks: locks, cheats: cheats, LOCK: LOCK, CHEAT: CHEAT, PARAM_NAMES: PARAM_NAMES, _itemMaxOverride: 0, _hotkey: 'F10', _speedKey: 'Control', _speedBoost: 2 }; - if (root) { root.Forge = MTC; root.__FORGE_CORE__ = true; } - if (typeof module !== 'undefined' && module.exports) module.exports = MTC; - - // ---- engine boot hooks (guarded; only when classes exist) ---- - if (typeof Scene_Base !== 'undefined') { - var _su = Scene_Base.prototype.update; - Scene_Base.prototype.update = function () { _su.call(this); try { locks.tick(); } catch (e) {} }; - } - // install lock overrides as soon as the game classes are available - try { locks.install(); } catch (e) {} - - // ---- UI: attach only when a real browser DOM is available (skipped in Node tests) ---- - if (typeof document !== 'undefined' && document.body && typeof document.body.attachShadow === 'function' && typeof window !== 'undefined') { - try { MTC.ui = buildUI(MTC); } catch (e) { try { console.error('[Forge] UI init failed', e); } catch (_) {} } - } - - // =================================================================================== - // UI — Shadow-DOM overlay. Inlined so the single ship file works with zero deps. - // =================================================================================== - function buildUI(API) { - var LS = 'forge:'; - function store(k, v) { try { localStorage.setItem(LS + k, JSON.stringify(v)); } catch (e) {} } - function load(k, d) { try { var s = localStorage.getItem(LS + k); return s == null ? d : JSON.parse(s); } catch (e) { return d; } } - // persisted speed settings (UI-controlled; override core/param defaults if the user changed them) - API._speedKey = load('speedKey', API._speedKey || 'Control'); - API._speedUseKey = load('speedUseKey', true); - API._speedBoost = load('speedBoost', API._speedBoost || 2); - if (!API._speedUseKey) API.cheats.setSpeed(API._speedBoost); // "always on" mode applies immediately - - function el(tag, props, kids) { - var n = document.createElement(tag); - if (props) for (var k in props) { - if (k === 'class') n.className = props[k]; - else if (k === 'text') n.textContent = props[k]; - else if (k === 'html') n.innerHTML = props[k]; - else if (k === 'style') n.setAttribute('style', props[k]); - else if (k.slice(0, 2) === 'on' && typeof props[k] === 'function') n.addEventListener(k.slice(2).toLowerCase(), props[k]); - else if (props[k] != null) n.setAttribute(k, props[k]); - } - if (kids) (Array.isArray(kids) ? kids : [kids]).forEach(function (c) { if (c != null) n.appendChild(typeof c === 'string' ? document.createTextNode(c) : c); }); - return n; - } - - // Inline SVG icons (no font/emoji dependency -> render identically on Windows/macOS/Linux). - function svg(inner) { return '' + inner + ''; } - var ICONS = { - vars: svg(''), - switches: svg(''), - inv: svg(''), - actors: svg(''), - party: svg(''), - map: svg(''), - commonev: svg(''), - locks: svg(''), - battle: svg(''), - tool: svg(''), - refresh: svg(''), - theme: svg(''), - close: svg(''), - lock: svg(''), - unlock: svg('') - }; - - var CSS = "\ -:host{position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important;contain:none}\ -*{box-sizing:border-box;font-family:var(--font-ui);-webkit-user-select:none;user-select:none}\ -#forge-root{--font-ui:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--font-mono:ui-monospace,'Cascadia Code',Consolas,monospace;\ ---fg-bg:#15171c;--fg-bg-elev:#1c1f27;--fg-bg-input:#21242d;--fg-bg-row-alt:#181b22;--fg-border:#2b2f3a;--fg-border-strong:#3a3f4d;\ ---fg-text:#e6e9ef;--fg-text-dim:#9aa1b1;--fg-text-faint:#646b7d;--fg-accent:#5b8cff;--fg-accent-weak:#2a3a63;--fg-success:#3ecf8e;--fg-warn:#f0b132;--fg-danger:#f0556a;--fg-frozen:#8b5cf6;\ ---sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--rad-sm:4px;--rad-md:7px;--rad-lg:11px;--rad-pill:999px;\ ---sh-panel:0 18px 50px rgba(0,0,0,.5),0 0 0 1px var(--fg-border);--row-h:30px;--rail-w:64px;--ease:cubic-bezier(.2,.7,.3,1);--dur:120ms;\ ---fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;color:var(--fg-text);font-size:var(--fs-md)}\ -#forge-root[data-theme=light]{--fg-bg:#f6f7f9;--fg-bg-elev:#fff;--fg-bg-input:#eef0f4;--fg-bg-row-alt:#f0f2f5;--fg-border:#dde0e7;--fg-border-strong:#c7ccd8;--fg-text:#1a1d24;--fg-text-dim:#5a6172;--fg-text-faint:#9097a6;--fg-accent-weak:#dce6ff}\ -.fg-panel{position:fixed;display:flex;flex-direction:column;background:var(--fg-bg);border-radius:var(--rad-lg);box-shadow:var(--sh-panel);overflow:hidden;z-index:2147483000;min-width:480px;min-height:360px;pointer-events:auto}\ -.fg-titlebar{display:flex;align-items:center;gap:6px;height:33px;padding:0 6px 0 10px;background:var(--fg-bg-elev);border-bottom:1px solid var(--fg-border);cursor:move;flex:0 0 auto}\ -.fg-brand{font-weight:700;font-size:var(--fs-md);letter-spacing:.3px;color:var(--fg-text);margin-right:8px;white-space:nowrap}\ -.fg-brand b{color:var(--fg-accent)}\ -.fg-search{flex:1;height:23px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:var(--rad-md);color:var(--fg-text);padding:0 9px;font-size:var(--fs-sm);outline:none;min-width:80px}\ -.fg-search:focus{border-color:var(--fg-accent)}\ -.fg-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:var(--rad-md);background:transparent;color:var(--fg-text-dim);border:0;cursor:pointer;font-size:13px;transition:background var(--dur)}\ -.fg-iconbtn:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-body{flex:1;display:flex;min-height:0}\ -.fg-rail{flex:0 0 var(--rail-w);display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-1);background:var(--fg-bg-elev);border-right:1px solid var(--fg-border);overflow-y:auto}\ -.fg-rail__item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) 0;border-radius:var(--rad-md);cursor:pointer;color:var(--fg-text-dim);font-size:10px;transition:all var(--dur);border:0;background:transparent}\ -.fg-rail__item .ic{display:flex;align-items:center;justify-content:center}\n.fg-rail__item .ic svg{width:19px;height:19px}\n.fg-iconbtn svg{width:15px;height:15px}\n.fg-lock svg{width:15px;height:15px}\n.fg-launcher svg{width:21px;height:21px}\ -.fg-rail__item:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-rail__item.is-active{background:var(--fg-accent-weak);color:var(--fg-accent)}\ -.fg-content{flex:1;display:flex;flex-direction:column;min-width:0}\ -.fg-section-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4) var(--sp-2);flex:0 0 auto}\ -.fg-section-head h2{margin:0;font-size:var(--fs-lg);font-weight:600}\ -.fg-count{font-size:var(--fs-xs);color:var(--fg-text-faint);background:var(--fg-bg-input);padding:2px 7px;border-radius:var(--rad-pill)}\ -.fg-spacer{flex:1}\ -.fg-subtoolbar{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-2);flex-wrap:wrap}\ -.fg-segmented{display:inline-flex;background:var(--fg-bg-input);border-radius:var(--rad-md);padding:2px}\ -.fg-segmented button{border:0;background:transparent;color:var(--fg-text-dim);padding:3px 12px;border-radius:5px;cursor:pointer;font-size:var(--fs-sm)}\ -.fg-segmented button.is-active{background:var(--fg-accent);color:#fff}\ -.fg-btn{border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text);padding:4px 11px;border-radius:var(--rad-md);cursor:pointer;font-size:var(--fs-sm);transition:all var(--dur)}\ -.fg-btn:hover{border-color:var(--fg-accent);color:var(--fg-accent)}\ -.fg-btn--ghost{background:transparent;border-color:transparent;color:var(--fg-text-dim)}\ -.fg-btn--danger:hover{border-color:var(--fg-danger);color:var(--fg-danger)}\ -.fg-list{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;border-top:1px solid var(--fg-border)}\ -.fg-list__sizer{position:relative;width:100%}\ -.fg-list__window{position:absolute;top:0;left:0;right:0}\ -.fg-row{display:flex;align-items:center;gap:var(--sp-2);height:var(--row-h);padding:0 var(--sp-4);border-bottom:1px solid var(--fg-border);font-size:var(--fs-sm)}\ -.fg-row:nth-child(even){background:var(--fg-bg-row-alt)}\ -.fg-row.is-frozen{box-shadow:inset 3px 0 0 var(--fg-frozen)}\ -.fg-row.is-selected{background:var(--fg-accent-weak)!important;box-shadow:inset 2px 0 0 var(--fg-accent)}\ -.fg-cell--id{flex:0 0 52px;color:var(--fg-text-faint);font-family:var(--font-mono);font-size:var(--fs-xs)}\ -.fg-cell--name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\ -.fg-cell--name .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--fg-accent);margin-right:6px;vertical-align:middle}\ -.fg-cell--val{flex:0 0 auto;display:flex;align-items:center;gap:4px}\ -.fg-stepper{display:inline-flex;align-items:center;gap:3px}\ -.fg-step{min-width:30px;width:auto;padding:0 5px;height:22px;white-space:nowrap;border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text-dim);border-radius:5px;cursor:pointer;font-size:var(--fs-xs);font-family:var(--font-mono)}\ -.fg-step:hover{color:var(--fg-accent);border-color:var(--fg-accent)}\ -.fg-num{width:68px;height:22px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:5px;color:var(--fg-text);text-align:right;padding:0 6px;font-family:var(--font-mono);font-size:var(--fs-sm);outline:none}\ -.fg-num:focus{border-color:var(--fg-accent)}\ -.fg-toggle{width:38px;height:21px;border-radius:var(--rad-pill);background:var(--fg-border-strong);position:relative;cursor:pointer;transition:background var(--dur);border:0;flex:0 0 auto}\ -.fg-toggle::after{content:'';position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform var(--dur)}\ -.fg-toggle.is-on{background:var(--fg-success)}\ -.fg-toggle.is-on::after{transform:translateX(17px)}\ -.fg-lock{width:24px;height:24px;border:0;background:transparent;color:var(--fg-text-faint);cursor:pointer;border-radius:5px;font-size:13px;flex:0 0 auto}\ -.fg-lock:hover{color:var(--fg-frozen);background:var(--fg-bg-input)}\ -.fg-lock.is-frozen{color:var(--fg-frozen)}\ -.fg-statusbar{display:flex;align-items:center;gap:var(--sp-2);height:24px;padding:0 var(--sp-3);background:var(--fg-bg-elev);border-top:1px solid var(--fg-border);font-size:var(--fs-xs);color:var(--fg-text-faint);flex:0 0 auto}\ -.fg-detail{padding:var(--sp-3) var(--sp-4);overflow-y:auto;flex:1}\ -.fg-field{display:flex;align-items:center;gap:var(--sp-2);padding:5px 0;border-bottom:1px solid var(--fg-border);min-width:0}\n.fg-field .fg-stepper{margin-left:auto;flex:0 0 auto}\ -.fg-field label{flex:0 0 96px;color:var(--fg-text-dim);font-size:var(--fs-sm)}\ -.fg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--sp-2) var(--sp-4)}\ -.fg-toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;z-index:2147483100;pointer-events:none}\ -.fg-toast{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-left:3px solid var(--fg-accent);color:var(--fg-text);padding:8px 14px;border-radius:var(--rad-md);font-size:var(--fs-sm);box-shadow:var(--sh-panel);animation:fgin var(--dur) var(--ease)}\ -.fg-toast.warn{border-left-color:var(--fg-warn)}.fg-toast.danger{border-left-color:var(--fg-danger)}.fg-toast.ok{border-left-color:var(--fg-success)}\ -@keyframes fgin{from{opacity:0;transform:translateY(6px)}to{opacity:1}}\ -.fg-launcher{position:fixed;pointer-events:auto;width:42px;height:42px;border-radius:50%;background:var(--fg-accent);color:#fff;border:0;cursor:pointer;font-size:18px;z-index:2147482999;box-shadow:var(--sh-panel);display:flex;align-items:center;justify-content:center}\ -.fg-launcher:hover{filter:brightness(1.1)}\ -.fg-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize}\ -.fg-resize::after{content:'';position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-right:2px solid var(--fg-text-faint);border-bottom:2px solid var(--fg-text-faint)}\ -.fg-empty{padding:var(--sp-5);text-align:center;color:var(--fg-text-faint);font-size:var(--fs-sm)}\ -.fg-confirm{position:fixed;pointer-events:auto;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);z-index:2147483200}\ -.fg-confirm__box{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-radius:var(--rad-lg);padding:var(--sp-4);max-width:340px;box-shadow:var(--sh-panel)}\ -.fg-confirm__box p{margin:0 0 var(--sp-4)}.fg-confirm__row{display:flex;justify-content:flex-end;gap:var(--sp-2)}\ -input::placeholder{color:var(--fg-text-faint)}\ -::-webkit-scrollbar{width:9px;height:9px}\ -::-webkit-scrollbar-track{background:transparent}\ -::-webkit-scrollbar-thumb{background:var(--fg-border-strong);border-radius:5px}\ -::-webkit-scrollbar-thumb:hover{background:var(--fg-text-faint)}"; - - // ---------- shadow host ---------- - var host = el('div', { id: 'forge-host' }); - host.style.cssText = 'position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important'; - document.body.appendChild(host); - var shadow = host.attachShadow({ mode: 'open' }); - var rootEl = el('div', { id: 'forge-root' }); - rootEl.setAttribute('data-theme', load('theme', 'dark')); - shadow.appendChild(el('style', { text: CSS })); - shadow.appendChild(rootEl); - - // Swallow events so panel interaction never leaks to the game. BUBBLE phase: the panel's own - // inputs receive the event first (target phase), then we stop it before it reaches document - // (where RPG Maker's Input/TouchInput listen). Capture phase would block the inputs themselves. - ['keydown', 'keyup', 'keypress', 'wheel', 'mousedown', 'mouseup', 'mousemove', 'click', 'dblclick', - 'pointerdown', 'pointerup', 'pointermove', 'pointercancel', 'touchstart', 'touchend', 'touchmove', 'touchcancel', 'contextmenu'].forEach(function (t) { - rootEl.addEventListener(t, function (e) { e.stopPropagation(); }, false); - }); - function isEditable(el) { return el && (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA'); } - rootEl.addEventListener('focusin', function (e) { if (isEditable(e.target)) API.CHEAT.uiFocused = true; }, true); - rootEl.addEventListener('focusout', function () { setTimeout(function () { API.CHEAT.uiFocused = !!(shadow.activeElement && isEditable(shadow.activeElement)); }, 0); }, true); - window.addEventListener('blur', function () { API.CHEAT.uiFocused = false; }); // never latch the game-input gate - // Backup engine-level gate: while a panel input is focused, drop the game's keyboard handler. - if (typeof Input !== 'undefined' && Input._onKeyDown) { var _okd = Input._onKeyDown; Input._onKeyDown = function (e) { if (API.CHEAT.uiFocused) return; _okd.call(this, e); }; } - if (typeof Input !== 'undefined' && Input._onKeyUp) { var _oku = Input._onKeyUp; Input._onKeyUp = function (e) { if (API.CHEAT.uiFocused) return; _oku.call(this, e); }; } - - // ---------- toasts ---------- - var toasts = el('div', { class: 'fg-toasts' }); rootEl.appendChild(toasts); - function toast(msg, kind) { var t = el('div', { class: 'fg-toast ' + (kind || ''), text: msg }); toasts.appendChild(t); setTimeout(function () { t.remove(); }, 2200); } - function confirmBox(msg, onYes) { - var box = el('div', { class: 'fg-confirm' }, el('div', { class: 'fg-confirm__box' }, [ - el('p', { text: msg }), - el('div', { class: 'fg-confirm__row' }, [ - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Cancel', onclick: function () { box.remove(); } }), - el('button', { class: 'fg-btn fg-btn--danger', text: 'Confirm', onclick: function () { box.remove(); onYes(); } }) - ]) - ])); - rootEl.appendChild(box); - } - - // ---------- panel skeleton ---------- - var vw = window.innerWidth || 816, vh = window.innerHeight || 624; - // Default size fits the window (many MV games are ~816x624); leave a margin. - var st = load('panel', { x: 16, y: 16, w: Math.min(880, vw - 32), h: Math.min(560, vh - 32) }); - st.w = Math.max(420, Math.min(st.w, vw - 8)); st.h = Math.max(320, Math.min(st.h, vh - 8)); - st.x = Math.max(0, Math.min(st.x, vw - st.w)); st.y = Math.max(0, Math.min(st.y, vh - st.h)); // keep fully on-screen - var panel = el('div', { class: 'fg-panel' }); - panel.style.left = st.x + 'px'; panel.style.top = st.y + 'px'; panel.style.width = st.w + 'px'; panel.style.height = st.h + 'px'; - var search = el('input', { class: 'fg-search', type: 'text', placeholder: 'Search… (Ctrl+K)' }); - var titlebar = el('div', { class: 'fg-titlebar' }, [ - el('span', { class: 'fg-brand', html: 'Forge' }), - search, - el('button', { class: 'fg-iconbtn', title: 'Rescan', html: ICONS.refresh, onclick: function () { render(); toast('Rescanned'); } }), - el('button', { class: 'fg-iconbtn', title: 'Theme', html: ICONS.theme, onclick: function () { var t = rootEl.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; rootEl.setAttribute('data-theme', t); store('theme', t); } }), - el('button', { class: 'fg-iconbtn', title: 'Close (F10)', html: ICONS.close, onclick: function () { hide(); } }) - ]); - var rail = el('div', { class: 'fg-rail' }); - var content = el('div', { class: 'fg-content' }); - var statusbar = el('div', { class: 'fg-statusbar' }); - panel.appendChild(titlebar); - panel.appendChild(el('div', { class: 'fg-body' }, [rail, content])); - panel.appendChild(statusbar); - var resize = el('div', { class: 'fg-resize' }); panel.appendChild(resize); - rootEl.appendChild(panel); - - // ---------- launcher (docks to bottom-right corner by default; 'launcherPos' is a fresh key so - // any stale mid-screen position from older builds is ignored) ---------- - var lp = load('launcherPos', { x: vw - 56, y: vh - 56 }); - lp.x = Math.max(4, Math.min(lp.x, vw - 46)); lp.y = Math.max(4, Math.min(lp.y, vh - 46)); - var launcher = el('button', { class: 'fg-launcher', html: ICONS.tool, title: 'Forge (F10)' }); - launcher.style.left = lp.x + 'px'; launcher.style.top = lp.y + 'px'; - launcher.addEventListener('click', function (e) { if (!launcher._dragged) toggle(); }); - rootEl.appendChild(launcher); - makeDraggable(launcher, launcher, function (x, y) { store('launcherPos', { x: x, y: y }); }, true); - - // ---------- drag / resize ---------- - function makeDraggable(handle, target, onEnd, isLauncher) { - handle.addEventListener('mousedown', function (e) { - if (e.target.closest && e.target.closest('input,button.fg-iconbtn')) return; - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ox = parseInt(target.style.left) || 0, oy = parseInt(target.style.top) || 0, moved = false; - if (isLauncher) target._dragged = false; - function mv(ev) { ev.stopPropagation(); var dx = ev.clientX - sx, dy = ev.clientY - sy; if (Math.abs(dx) + Math.abs(dy) > 3) moved = true; var nx = Math.max(0, Math.min(window.innerWidth - target.offsetWidth, ox + dx)), ny = Math.max(0, Math.min(window.innerHeight - 30, oy + dy)); target.style.left = nx + 'px'; target.style.top = ny + 'px'; if (isLauncher) target._dragged = moved; } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); if (onEnd) onEnd(parseInt(target.style.left), parseInt(target.style.top)); setTimeout(function () { if (isLauncher) target._dragged = false; }, 0); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - } - makeDraggable(titlebar, panel, function (x, y) { st.x = x; st.y = y; store('panel', st); }); - resize.addEventListener('mousedown', function (e) { - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ow = panel.offsetWidth, oh = panel.offsetHeight; - function mv(ev) { ev.stopPropagation(); var w = Math.max(480, ow + ev.clientX - sx), h = Math.max(360, oh + ev.clientY - sy); panel.style.width = w + 'px'; panel.style.height = h + 'px'; if (activeRenderer && activeRenderer.onResize) activeRenderer.onResize(); } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); st.w = panel.offsetWidth; st.h = panel.offsetHeight; store('panel', st); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - - // ---------- reusable virtualized list ---------- - function VirtualList(opts) { - // opts: rowH, getModel()->[], renderRow(rowEl, item), matches(item, query) - var listEl = el('div', { class: 'fg-list' }); - var sizer = el('div', { class: 'fg-list__sizer' }); - var win = el('div', { class: 'fg-list__window' }); - sizer.appendChild(win); listEl.appendChild(sizer); - var rowH = opts.rowH || 30, pool = [], model = [], view = [], query = ''; - // ONE delegated row click (recycled rows must not accumulate per-draw listeners). - if (opts.onRowClick) listEl.addEventListener('click', function (e) { var r = e.target && e.target.closest ? e.target.closest('.fg-row') : null; if (r && r._item) opts.onRowClick(r._item); }); - function rebuild() { model = opts.getModel() || []; applyFilter(); } - function applyFilter() { - view = query ? model.filter(function (it) { return opts.matches(it, query); }) : model; - sizer.style.height = (view.length * rowH) + 'px'; - var em = listEl.querySelector('.fg-empty'); - if (!view.length) { pool.forEach(function (r) { r.style.display = 'none'; }); if (!em) listEl.appendChild(el('div', { class: 'fg-empty', text: 'Nothing here' })); } - else if (em) em.remove(); - lastFirst = -1; draw(true); // content changed -> force re-render - } - var lastFirst = -1; - function draw(force) { - var scroll = listEl.scrollTop, h = listEl.clientHeight || 400; - var first = Math.max(0, Math.floor(scroll / rowH) - 4); - if (!force && first === lastFirst) return; // window unchanged during scroll -> skip re-render - lastFirst = first; - var count = Math.ceil(h / rowH) + 8; - var last = Math.min(view.length, first + count); - win.style.transform = 'translateY(' + (first * rowH) + 'px)'; - var need = last - first; - while (pool.length < need) { var r = el('div', { class: 'fg-row' }); win.appendChild(r); pool.push(r); } - for (var i = 0; i < pool.length; i++) { - var r = pool[i]; - if (i < need) { r.style.display = 'flex'; r._item = view[first + i]; opts.renderRow(r, view[first + i]); } else { r.style.display = 'none'; r._item = null; } - } - } - var raf = null; - listEl.addEventListener('scroll', function () { if (raf) return; raf = requestAnimationFrame(function () { raf = null; draw(false); }); }); - return { el: listEl, rebuild: rebuild, applyFilter: applyFilter, draw: function () { draw(true); }, setQuery: function (q) { query = q; applyFilter(); }, onResize: function () { draw(true); }, - refresh: function () { draw(true); } }; - } - - // numeric stepper control - function stepper(getVal, setVal, opts) { - opts = opts || {}; - var wrap = el('div', { class: 'fg-stepper' }); - var input = el('input', { class: 'fg-num', type: 'text' }); - function sync() { input.value = getVal(); } - function commit(v) { setVal(v); sync(); if (opts.after) opts.after(); } - [['−100', -100], ['−1', -1]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - wrap.appendChild(input); - [['+1', 1], ['+100', 100]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - input.addEventListener('keydown', function (e) { if (e.key === 'Enter') { commit(parse(input.value)); input.blur(); } else if (e.key === 'Escape') { sync(); input.blur(); } }); - input.addEventListener('blur', function () { commit(parse(input.value)); }); - function parse(s) { var n = Number(String(s).replace(/[^0-9.\-]/g, '')); return isNaN(n) ? getVal() : n; } - sync(); - return { el: wrap, sync: sync }; - } - - // ---------- sections ---------- - var activeRenderer = null, currentSection = null; - var SECTIONS = []; - function section(id, icon, title, builder) { SECTIONS.push({ id: id, icon: icon, title: title, builder: builder }); } - - function listSection(getModel, renderRow, matches, headExtra) { - return function (body, head) { - if (headExtra) headExtra(head); - var vl = VirtualList({ getModel: getModel, renderRow: renderRow, matches: matches || defaultMatch }); - body.appendChild(vl.el); - vl.rebuild(); - return { vl: vl, onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return (getModel() || []).length; } }; - }; - } - function defaultMatch(it, q) { q = q.toLowerCase(); return String(it.id) === q || (it.name && it.name.toLowerCase().indexOf(q) >= 0); } - - // Variables - section('vars', ICONS.vars, 'Variables', listSection( - function () { return API.ops.vars.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isVarFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.vars.get(it.id); }, function (v) { API.ops.vars.set(it.id, v); if (API.locks.isVarFrozen(it.id)) API.locks.freezeVar(it.id, true); }, {}); - val.appendChild(sp.el); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isVarFrozen(it.id), function (on) { API.locks.freezeVar(it.id, on); refreshActive(); })); - } - )); - - // Switches - section('switches', ICONS.switches, 'Switches', listSection( - function () { return API.ops.switches.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isSwitchFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var tg = el('button', { class: 'fg-toggle' + (API.ops.switches.get(it.id) ? ' is-on' : '') }); - tg.addEventListener('click', function () { API.ops.switches.set(it.id, !API.ops.switches.get(it.id)); if (API.locks.isSwitchFrozen(it.id)) API.locks.freezeSwitch(it.id, true); tg.classList.toggle('is-on', API.ops.switches.get(it.id)); }); - val.appendChild(tg); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isSwitchFrozen(it.id), function (on) { API.locks.freezeSwitch(it.id, on); refreshActive(); })); - } - )); - - // Items / Weapons / Armors (segmented) - section('inv', ICONS.inv, 'Items', function (body, head) { - var kind = 'item'; - var seg = el('div', { class: 'fg-segmented' }); - ['item', 'weapon', 'armor'].forEach(function (k) { - var b = el('button', { class: k === kind ? 'is-active' : '', text: k.charAt(0).toUpperCase() + k.slice(1) + 's' }); - b.addEventListener('click', function () { kind = k; seg.querySelectorAll('button').forEach(function (x) { x.classList.remove('is-active'); }); b.classList.add('is-active'); vl.rebuild(); }); - seg.appendChild(b); - }); - head.appendChild(seg); - var vl = VirtualList({ - getModel: function () { return API.ops.inv.list(kind); }, - matches: defaultMatch, - renderRow: function (row, it) { - row.className = 'fg-row' + (API.locks.isItemFrozen(kind, it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.description || it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.inv.count(kind, it.id); }, function (v) { API.ops.inv.setCount(kind, it.id, v); }, {}); - val.appendChild(sp.el); - val.appendChild(el('button', { class: 'fg-step', text: 'Max', style: 'width:auto;padding:0 6px', onclick: function () { API.ops.inv.max(kind, it.id); sp.sync(); } })); - row.appendChild(val); - row.appendChild(lockBtn(API.locks.isItemFrozen(kind, it.id), function (on) { API.locks.freezeItem(kind, it.id, on); refreshActive(); })); - } - }); - body.appendChild(vl.el); vl.rebuild(); - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.inv.list(kind).length; } }; - }); - - // Actors (master-detail) - section('actors', ICONS.actors, 'Actors', function (body) { - var detail = el('div', { class: 'fg-detail' }); - var selectedId = null; - var vl = VirtualList({ - rowH: 30, matches: defaultMatch, - getModel: function () { return API.ops.actors.list(); }, - onRowClick: function (it) { showActor(it.id); }, - renderRow: function (row, it) { - row.className = 'fg-row' + (it.id === selectedId ? ' is-selected' : ''); - row.style.cursor = 'pointer'; - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', html: (it.inParty ? '' : '') + escapeHtml(it.name) })); - row.appendChild(el('span', { class: 'fg-cell--val', text: 'Lv ' + it.level })); - } - }); - var split = el('div', { style: 'flex:1;display:flex;min-height:0' }); - var left = el('div', { style: 'flex:0 0 240px;display:flex;flex-direction:column;border-right:1px solid var(--fg-border)' }); - left.appendChild(vl.el); - split.appendChild(left); split.appendChild(detail); - body.appendChild(split); vl.rebuild(); - var firstA = API.ops.actors.list()[0]; // auto-select first actor so detail isn't empty - if (firstA) showActor(firstA.id); - function showActor(id) { - selectedId = id; vl.draw(); // re-highlight the selected row in the (virtualized) list - var a = API.ops.actors.get(id); detail.innerHTML = ''; - if (!a) { detail.appendChild(el('div', { class: 'fg-empty', text: 'Actor not initialized (start a game first)' })); return; } - detail.appendChild(el('h2', { text: a.name + ' · Lv ' + a.level, style: 'margin:0 0 12px;font-size:15px' })); - var grid = el('div', { class: 'fg-grid' }); - grid.appendChild(numField('Level', function () { return API.ops.actors.get(id).level; }, function (v) { API.ops.actors.setLevel(id, v); showActor(id); })); - grid.appendChild(numField('EXP', function () { return API.ops.actors.get(id).exp; }, function (v) { API.ops.actors.setExp(id, v); showActor(id); })); - grid.appendChild(statField('HP', id, 'hp', function () { return API.ops.actors.get(id).hp; }, function () { return API.ops.actors.get(id).mhp; }, API.ops.actors.setHp)); - grid.appendChild(statField('MP', id, 'mp', function () { return API.ops.actors.get(id).mp; }, function () { return API.ops.actors.get(id).mmp; }, API.ops.actors.setMp)); - grid.appendChild(statField('TP', id, 'tp', function () { return API.ops.actors.get(id).tp; }, function () { return 100; }, API.ops.actors.setTp)); - a.params.forEach(function (p) { grid.appendChild(numField(p.name, function () { return API.ops.actors.get(id).params[p.id].value; }, function (v) { API.ops.actors.setParam(id, p.id, v); })); }); - detail.appendChild(grid); - var actbar = el('div', { style: 'display:flex;gap:8px;margin:14px 0' }, [ - el('button', { class: 'fg-btn', text: 'Recover All', onclick: function () { API.ops.actors.recover(id); showActor(id); } }), - el('button', { class: 'fg-btn', text: a.inParty ? 'Remove from Party' : 'Add to Party', onclick: function () { if (a.inParty) API.ops.actors.removeFromParty(id); else API.ops.actors.addToParty(id); vl.rebuild(); showActor(id); } }) - ]); - detail.appendChild(actbar); - // skills - detail.appendChild(el('h2', { text: 'Skills', style: 'font-size:13px;margin:10px 0 4px;color:var(--fg-text-dim)' })); - var skbox = el('div', { style: 'max-height:140px;overflow:auto;border:1px solid var(--fg-border);border-radius:7px' }); - a.skills.forEach(function (s) { - var r = el('div', { class: 'fg-field', style: 'padding:3px 10px' }, [ - el('span', { style: 'flex:1;font-size:12px', text: s.id + ': ' + s.name }), - el('button', { class: 'fg-btn fg-btn--ghost', text: s.learned ? 'Forget' : 'Learn', onclick: function () { if (s.learned) API.ops.actors.forget(id, s.id); else API.ops.actors.learn(id, s.id); showActor(id); } }) - ]); - skbox.appendChild(r); - }); - detail.appendChild(skbox); - } - function numField(label, get, set) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, set, {}).el); - f.appendChild(el('span', { style: 'flex:0 0 24px;width:24px' })); // empty lock slot -> steppers align with HP/MP/TP rows - return f; - } - function statField(label, id, stat, get, getMax, setFn) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, function (v) { setFn(id, v); if (API.locks.isStatFrozen(id, stat)) API.locks.freezeStat(id, stat, true); }, {}).el); - f.appendChild(lockBtn(API.locks.isStatFrozen(id, stat), function (on) { API.locks.freezeStat(id, stat, on); })); - return f; - } - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.actors.list().length; } }; - }); - - // Party / Main - section('party', ICONS.party, 'Party', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - d.appendChild(el('div', { class: 'fg-field' }, [ - el('label', { text: 'Gold' }), - stepper(function () { return API.ops.gold.get(); }, function (v) { API.ops.gold.set(v); }, {}).el, - lockBtn(API.LOCK.gold != null, function (on) { API.locks.freezeGold(on); rebuild(); }) - ])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Steps' }), el('span', { text: API.ops.party.steps() })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Members' }), el('span', { text: API.ops.party.members().map(function (m) { return m.name; }).join(', ') || '(none)' })])); - d.appendChild(el('h2', { text: 'Quick actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Gold = Max', onclick: function () { API.ops.gold.set(API.ops.gold.max()); rebuild(); toast('Gold maxed', 'ok'); } }), - el('button', { class: 'fg-btn', text: 'Heal Party', onclick: function () { API.ops.party.members().forEach(function (m) { API.ops.actors.recover(m.id); }); toast('Party healed', 'ok'); } }) - ])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.party.members().length; } }; - }); - - // Map / Teleport - section('map', ICONS.map, 'Map', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var cur = API.ops.map.current(); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Current' }), el('span', { text: 'Map ' + cur.mapId + ' @ (' + cur.x + ',' + cur.y + ')' })])); - var sel = el('select', { class: 'fg-search', style: 'flex:1' }); - API.ops.map.list().forEach(function (m) { sel.appendChild(el('option', { value: m.id, text: m.id + ': ' + m.name })); }); - sel.value = cur.mapId; - var xIn = el('input', { class: 'fg-num', value: cur.x }), yIn = el('input', { class: 'fg-num', value: cur.y }); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Teleport to' }), sel])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'X / Y' }), xIn, yIn, - el('button', { class: 'fg-btn', text: 'Go', onclick: function () { API.ops.map.teleport(Number(sel.value), Number(xIn.value), Number(yIn.value), 0, 2); toast('Teleporting…', 'ok'); } })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Noclip' }), - (function () { var t = el('button', { class: 'fg-toggle' + (API.ops.map.isNoclip() ? ' is-on' : '') }); t.addEventListener('click', function () { var on = !API.ops.map.isNoclip(); API.ops.map.noclip(on); t.classList.toggle('is-on', on); }); return t; })()])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Move speed' }), - stepper(function () { return (window.$gamePlayer && $gamePlayer._moveSpeed) || 4; }, function (v) { API.ops.map.speed(v); }, {}).el])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.map.list().length; } }; - }); - - // Common Events - section('commonev', ICONS.commonev, 'Common Ev.', listSection( - function () { return API.ops.commonev.list(); }, - function (row, it) { - row.className = 'fg-row'; row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - row.appendChild(el('span', { class: 'fg-cell--val' }, el('button', { class: 'fg-btn', text: 'Run', onclick: function () { confirmBox('Run common event ' + it.id + ' (' + it.name + ')?', function () { API.ops.commonev.run(it.id); toast('Reserved CE ' + it.id, 'ok'); }); } }))); - } - )); - - // Data Lock (aggregated frozen targets) - section('locks', ICONS.locks, 'Data Lock', function (body, head) { - head.appendChild(el('button', { class: 'fg-btn fg-btn--danger', text: 'Unfreeze all', onclick: function () { API.locks.clearAll(); rebuild(); toast('All unfrozen'); } })); - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var s = API.locks.summary(); - if (!s.length) { d.appendChild(el('div', { class: 'fg-empty', text: 'No frozen values. Use the lock icon on any row to freeze it.' })); return; } - s.forEach(function (row) { - d.appendChild(el('div', { class: 'fg-field' }, [ - el('span', { style: 'flex:1;font-size:12px', text: row.label }), - el('span', { style: 'color:var(--fg-frozen);font-family:var(--font-mono);margin-right:8px', text: String(row.value) }), - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Unfreeze', onclick: function () { unfreeze(row); rebuild(); } }) - ])); - }); - } - function unfreeze(row) { - if (row.type === 'var') API.locks.freezeVar(row.id, false); - else if (row.type === 'switch') API.locks.freezeSwitch(row.id, false); - else if (row.type === 'item') { var p = row.key.split(':'); API.LOCK.items.delete(row.key); } - else if (row.type === 'stat') { API.LOCK.stats.delete(row.key); } - else if (row.type === 'gold') API.locks.freezeGold(false); - else if (row.type === 'noclip') API.ops.map.noclip(false); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.locks.summary().length; } }; - }); - - // Battle cheats - section('battle', ICONS.battle, 'Cheats', function (body) { - var d = el('div', { class: 'fg-detail' }); - function tog(label, get, set) { - var t = el('button', { class: 'fg-toggle' + (get() ? ' is-on' : '') }); - t.addEventListener('click', function () { var v = !get(); set(v); t.classList.toggle('is-on', v); }); - return el('div', { class: 'fg-field' }, [el('label', { text: label }), t]); - } - d.appendChild(tog('God mode (blocks HP loss)', function () { return API.CHEAT.god; }, API.cheats.setGod)); - d.appendChild(tog('One-hit kill', function () { return API.CHEAT.ohko; }, API.cheats.setOhko)); - d.appendChild(tog('No random encounters', function () { return API.CHEAT.noEncounter; }, API.cheats.setNoEncounter)); - // ---- game speed (speedhack) ---- - d.appendChild(el('h2', { text: 'Game speed', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - var speedRow = el('div', { class: 'fg-field' }); - speedRow.appendChild(el('label', { text: 'Speed' })); - var seg = el('div', { class: 'fg-segmented', style: 'flex-wrap:wrap' }); - var presets = [['0.5×', 0.5], ['1×', 1], ['2×', 2], ['3×', 3], ['5×', 5], ['8×', 8]]; - function keyLabel(k) { return k === 'Control' ? 'Ctrl' : (k === ' ' ? 'Space' : k); } - // In KEY mode the highlight = the ARMED target (_speedBoost); in ALWAYS-ON mode = the live speed. - function targetSpeed() { return API._speedUseKey ? (API._speedBoost || 2) : (API.CHEAT.speed || 1); } - function syncSeg() { var t = targetSpeed(); Array.prototype.forEach.call(seg.children, function (b) { b.classList.toggle('is-active', Number(b.dataset.v) === t); }); if (typeof custom !== 'undefined' && custom) custom.value = t; } - // Picking a speed ARMS the target. It only changes the live game speed if key-mode is OFF, or if - // the speedhack is already active (then it live-updates). So buttons respect the key toggle. - function pick(v) { - API._speedBoost = v; store('speedBoost', v); - if (!API._speedUseKey || API.CHEAT.speed !== 1) { API.cheats.setSpeed(v); toast('Speed ' + v + '×', 'ok'); } - else { toast('Armed ' + v + '× — hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - syncSeg(); - } - presets.forEach(function (p) { - var b = el('button', { text: p[0] }); b.dataset.v = p[1]; - b.addEventListener('click', function () { pick(p[1]); }); - seg.appendChild(b); - }); - speedRow.appendChild(seg); - d.appendChild(speedRow); - var customRow = el('div', { class: 'fg-field' }); - customRow.appendChild(el('label', { text: 'Custom ×' })); - var custom = el('input', { class: 'fg-num', type: 'text', value: targetSpeed() }); - custom.addEventListener('keydown', function (e) { if (e.key === 'Enter') { pick(Number(custom.value) || 1); custom.blur(); } }); - custom.addEventListener('blur', function () { pick(Number(custom.value) || 1); }); - customRow.appendChild(custom); - d.appendChild(customRow); - - // ---- use-key toggle (off => speed is always on) ---- - var useKeyRow = el('div', { class: 'fg-field' }); - useKeyRow.appendChild(el('label', { text: 'Use hold key' })); - var ukTog = el('button', { class: 'fg-toggle' + (API._speedUseKey ? ' is-on' : '') }); - ukTog.addEventListener('click', function () { - speedHeld = false; // changing mode ends any active hold so a later key-release won't reset speed - var on = !API._speedUseKey; API._speedUseKey = on; store('speedUseKey', on); ukTog.classList.toggle('is-on', on); - keyRow.style.display = on ? '' : 'none'; - if (on) { API.cheats.setSpeed(1); toast('Speed: hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - else { API.cheats.setSpeed(API._speedBoost || 2); toast('Speed: always on at ' + (API._speedBoost || 2) + '×', 'ok'); } - syncSeg(); - }); - useKeyRow.appendChild(ukTog); - d.appendChild(useKeyRow); - - // ---- rebindable key ---- - var keyRow = el('div', { class: 'fg-field' }); - keyRow.appendChild(el('label', { text: 'Hold key' })); - var keyBtn = el('button', { class: 'fg-btn', text: keyLabel(API._speedKey) }); - keyBtn.addEventListener('click', function () { - keyBtn.textContent = 'Press a key…'; API._capturingSpeedKey = true; - function cap(ev) { - ev.preventDefault(); ev.stopPropagation(); - window.removeEventListener('keydown', cap, true); API._capturingSpeedKey = false; - if (ev.key !== 'Escape') { API._speedKey = ev.key; store('speedKey', ev.key); } - keyBtn.textContent = keyLabel(API._speedKey); - } - window.addEventListener('keydown', cap, true); - }); - keyRow.appendChild(keyBtn); - keyRow.style.display = API._speedUseKey ? '' : 'none'; - d.appendChild(keyRow); - syncSeg(); - d.appendChild(el('h2', { text: 'In-battle actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Instant Win', onclick: function () { API.cheats.instantWin(); toast(API.ops.battle.inBattle() ? 'Enemies downed' : 'Not in battle', API.ops.battle.inBattle() ? 'ok' : 'warn'); } }), - el('button', { class: 'fg-btn', text: 'Flee / Abort', onclick: function () { API.cheats.flee(); } }) - ])); - body.appendChild(d); - return { refresh: function () {}, count: function () { return 0; } }; - }); - - // ---------- render / navigation ---------- - function escapeHtml(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } - function lockBtn(frozen, onToggle) { - var b = el('button', { class: 'fg-lock' + (frozen ? ' is-frozen' : ''), html: frozen ? ICONS.lock : ICONS.unlock, title: 'Freeze value' }); - b.addEventListener('click', function () { frozen = !frozen; b.className = 'fg-lock' + (frozen ? ' is-frozen' : ''); b.innerHTML = frozen ? ICONS.lock : ICONS.unlock; onToggle(frozen); }); - return b; - } - function refreshActive() { if (activeRenderer && activeRenderer.refresh) activeRenderer.refresh(); updateStatus(); } - - SECTIONS.forEach(function (s) { - var item = el('button', { class: 'fg-rail__item', title: s.title }, [el('span', { class: 'ic', html: s.icon }), el('span', { text: s.title.split(' ')[0] })]); - item.addEventListener('click', function () { selectSection(s.id); }); - s._rail = item; rail.appendChild(item); - }); - - function selectSection(id) { - currentSection = id; - SECTIONS.forEach(function (s) { s._rail.classList.toggle('is-active', s.id === id); }); - render(); - store('lastSection', id); - } - function render() { - var s = SECTIONS.filter(function (x) { return x.id === currentSection; })[0]; if (!s) return; - content.innerHTML = ''; - var head = el('div', { class: 'fg-subtoolbar' }); - var sectionHead = el('div', { class: 'fg-section-head' }, [el('h2', { text: s.title }), el('span', { class: 'fg-count', text: '' }), el('span', { class: 'fg-spacer' })]); - content.appendChild(sectionHead); - content.appendChild(head); - var body = el('div', { style: 'flex:1;display:flex;flex-direction:column;min-height:0' }); - content.appendChild(body); - activeRenderer = s.builder(body, head) || {}; - if (head.children.length === 0) head.remove(); - var cnt = activeRenderer.count ? activeRenderer.count() : 0; - sectionHead.querySelector('.fg-count').textContent = cnt + (cnt === 1 ? ' entry' : ' entries'); - // Search only applies to list sections (those expose setQuery); hide it on form sections. - var searchable = !!activeRenderer.setQuery; - // keep the search box's flex space (invisible, not removed) so the titlebar buttons stay anchored right - search.style.visibility = searchable ? 'visible' : 'hidden'; - if (searchable && search.value) activeRenderer.setQuery(search.value.trim()); - updateStatus(); - } - function updateStatus() { - var frozen = API.locks.summary().length; - statusbar.innerHTML = ''; - statusbar.appendChild(el('span', { text: API.env.IS_MZ ? 'RPG Maker MZ' : 'RPG Maker MV' })); - statusbar.appendChild(el('span', { class: 'fg-spacer', style: 'flex:1' })); - statusbar.appendChild(el('span', { text: (frozen ? frozen + ' frozen · ' : '') + 'F10 to toggle' })); - } - - search.addEventListener('input', debounce(function () { if (activeRenderer && activeRenderer.setQuery) activeRenderer.setQuery(search.value.trim()); }, 120)); - function debounce(fn, ms) { var t; return function () { clearTimeout(t); t = setTimeout(fn, ms); }; } - - // ---------- show / hide / hotkeys ---------- - var visible = false; - function show() { visible = true; try { document.body.appendChild(host); } catch (e) {} panel.style.display = 'flex'; launcher.style.display = 'none'; if (!currentSection) selectSection(load('lastSection', 'vars')); else render(); } - function hide() { visible = false; panel.style.display = 'none'; launcher.style.display = 'flex'; API.CHEAT.uiFocused = false; if (typeof Input !== 'undefined' && Input.clear) Input.clear(); } - function toggle() { if (visible) hide(); else show(); } - panel.style.display = 'none'; - - // Speed key = HOLD to fast-forward: while the key is held the game runs at the armed boost speed; - // on release it returns to 1x. Only active when the "use key" option is on. Gated to !uiFocused so - // holding a key while typing in the panel never fast-forwards. - var speedHeld = false; - function isSpeedKey(k) { var sk = API._speedKey || 'Control'; return k === sk || (sk === 'Control' && k === 'Ctrl'); } - function holdStart() { if (!speedHeld) { speedHeld = true; API.cheats.setSpeed(API._speedBoost || 2); toast('Fast-forward ' + API.CHEAT.speed + '×', 'ok'); } } - function holdEnd() { if (speedHeld) { speedHeld = false; API.cheats.setSpeed(1); } } - window.addEventListener('keydown', function (e) { - if (API._capturingSpeedKey) return; // a key-rebind is in progress - var key = e.key || ''; - if (key === (API._hotkey || 'F10')) { e.preventDefault(); toggle(); return; } - if (visible && (e.ctrlKey || e.metaKey) && key.toLowerCase() === 'k') { e.preventDefault(); search.focus(); search.select(); } - else if (visible && key === 'Escape') { if (shadow.activeElement && shadow.activeElement.tagName === 'INPUT') shadow.activeElement.blur(); else hide(); } - if (API._speedUseKey && isSpeedKey(key) && !API.CHEAT.uiFocused) holdStart(); // hold to fast-forward - }, true); - window.addEventListener('keyup', function (e) { - if (API._capturingSpeedKey) return; - if (isSpeedKey(e.key || '')) holdEnd(); - }, true); - window.addEventListener('blur', holdEnd); // alt-tab / focus loss -> stop fast-forward (no stuck key) - - // expose - return { - show: show, hide: hide, toggle: toggle, toast: toast, render: render, - isVisible: function () { return visible; }, root: rootEl, host: host, - select: selectSection, sections: SECTIONS.map(function (s) { return s.id; }) - }; - } - -})(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this)); - -/* ---- MV scaffolding (plugin command + start-open) ---- */ -(function () { - if (typeof Game_Interpreter === 'undefined') return; - var P = (typeof PluginManager !== 'undefined' && PluginManager.parameters) ? PluginManager.parameters('Forge_MV') : {}; - if (window.Forge) { - window.Forge._hotkey = (P.Hotkey || 'F10').trim(); - window.Forge._itemMaxOverride = Number(P.ItemMaxOverride) || 0; - // speed key: plugin-param is the first-run default; a key rebound in the panel (persisted) wins - try { if (!localStorage.getItem('forge:speedKey')) window.Forge._speedKey = (P.SpeedKey || 'Control').trim(); } catch (e) { window.Forge._speedKey = (P.SpeedKey || 'Control').trim(); } - } - var _pc = Game_Interpreter.prototype.pluginCommand; - Game_Interpreter.prototype.pluginCommand = function (cmd, args) { - _pc.call(this, cmd, args); - if (cmd === 'MTC' && window.Forge && window.Forge.ui) window.Forge.ui.toggle(); - }; - if (String(P.StartOpen) === 'true' && typeof Scene_Map !== 'undefined') { - var _s = Scene_Map.prototype.start; - Scene_Map.prototype.start = function () { _s.call(this); if (window.Forge && window.Forge.ui && !window.Forge.ui.isVisible()) window.Forge.ui.show(); }; - } -})(); - +(function(){var e=document.createElement(`style`);e.textContent=`@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:#ff6568;--color-orange-400:#ff8b1a;--color-yellow-300:#ffe02a;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-fuchsia-500:#e12afb;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c10;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}@supports (color:lab(0% 0 0)){:root,:host{--color-red-400:lab(63.7053% 60.745 31.3109);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-yellow-300:lab(89.7033% -.480294 84.4917);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-fuchsia-500:lab(56.4256% 83.132 -64.639);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425)}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-left:20px}:where(select:is([multiple],[size])) optgroup option{padding-left:20px}::-webkit-file-upload-button{margin-right:4px}::file-selector-button{margin-right:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{top:0;bottom:0;left:0;right:0}.top-0{top:0}.top-4{top:calc(var(--spacing) * 4)}.top-\\[-0\\.5px\\]{top:-.5px}.top-\\[4px\\]{top:4px}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.left-4{left:calc(var(--spacing) * 4)}.left-\\[4px\\]{left:4px}.left-\\[24px\\]{left:24px}.z-2147482999{z-index:2147482999}.z-2147483000{z-index:2147483000}.z-2147483647{z-index:2147483647}.m-0{margin:0}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-0{min-height:0}.w-1\\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(140px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(160px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(260px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(300px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{grid-gap:calc(var(--spacing) * 2);gap:calc(var(--spacing) * 2)}.gap-3{grid-gap:calc(var(--spacing) * 3);gap:calc(var(--spacing) * 3)}.gap-4{grid-gap:calc(var(--spacing) * 4);gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(var(--spacing) * var(--tw-space-y-reverse));margin-bottom:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(var(--spacing) * var(--tw-space-x-reverse));margin-right:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 1.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border\\/50>:not(:last-child)){border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\\[\\#2a2d3a\\]{border-color:#2a2d3a}.border-accent{border-color:var(--color-accent)}.border-accent\\/30{border-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/30{border-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.border-accent\\/50{border-color:rgba(99,102,241,.5)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\\/50{border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.border-danger\\/30{border-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.border-danger\\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-fuchsia-500\\/30{border-color:rgba(225,42,251,.3)}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\\/30{border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.border-gray-500\\/30{border-color:rgba(106,114,130,.3)}@supports (color:color-mix(in lab, red, red)){.border-gray-500\\/30{border-color:color-mix(in oklab, var(--color-gray-500) 30%, transparent)}}.border-ok\\/30{border-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.border-ok\\/30{border-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.border-warn\\/30{border-color:rgba(251,146,60,.3)}@supports (color:color-mix(in lab, red, red)){.border-warn\\/30{border-color:color-mix(in oklab, var(--color-warn) 30%, transparent)}}.border-yellow-500\\/30{border-color:rgba(237,178,0,.3)}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-l-frozen{border-left-color:var(--color-frozen)}.bg-\\[\\#1a1d24\\]{background-color:#1a1d24}.bg-\\[\\#3a3f4d\\]{background-color:#3a3f4d}.bg-\\[\\#7ba4ff\\]\\/10{background-color:rgba(123,164,255,.1);background-color:lab(67.3388% 4.90472 -50.2993/.1)}.bg-\\[\\#13151a\\]{background-color:#13151a}.bg-accent{background-color:var(--color-accent)}.bg-accent-weak{background-color:var(--color-accent-weak)}.bg-accent\\/5{background-color:rgba(99,102,241,.05)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/5{background-color:color-mix(in oklab, var(--color-accent) 5%, transparent)}}.bg-accent\\/10{background-color:rgba(99,102,241,.1)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-accent\\/20{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/20{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.bg-bg{background-color:var(--color-bg)}.bg-bg2{background-color:var(--color-bg2)}.bg-border{background-color:var(--color-border)}.bg-border\\/50{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.bg-border\\/50{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\\/10{background-color:rgba(239,68,68,.1)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-danger\\/20{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/20{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.bg-frozen\\/20{background-color:rgba(139,92,246,.2)}@supports (color:color-mix(in lab, red, red)){.bg-frozen\\/20{background-color:color-mix(in oklab, var(--color-frozen) 20%, transparent)}}.bg-fuchsia-500\\/10{background-color:rgba(225,42,251,.1)}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-500\\/10{background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.bg-gray-500\\/10{background-color:rgba(106,114,130,.1)}@supports (color:color-mix(in lab, red, red)){.bg-gray-500\\/10{background-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.bg-ok{background-color:var(--color-ok)}.bg-ok\\/10{background-color:rgba(16,185,129,.1)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/10{background-color:color-mix(in oklab, var(--color-ok) 10%, transparent)}}.bg-ok\\/20{background-color:rgba(16,185,129,.2)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/20{background-color:color-mix(in oklab, var(--color-ok) 20%, transparent)}}.bg-transparent{background-color:transparent}.bg-warn\\/10{background-color:rgba(251,146,60,.1)}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-yellow-500\\/10{background-color:rgba(237,178,0,.1)}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\\/10{background-color:color-mix(in oklab, var(--color-yellow-500) 10%, transparent)}}.fill-current{fill:currentColor}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-left:var(--spacing);padding-right:var(--spacing)}.px-1\\.5{padding-left:calc(var(--spacing) * 1.5);padding-right:calc(var(--spacing) * 1.5)}.px-2{padding-left:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 2)}.px-2\\.5{padding-left:calc(var(--spacing) * 2.5);padding-right:calc(var(--spacing) * 2.5)}.px-3{padding-left:calc(var(--spacing) * 3);padding-right:calc(var(--spacing) * 3)}.px-3\\.5{padding-left:calc(var(--spacing) * 3.5);padding-right:calc(var(--spacing) * 3.5)}.px-4{padding-left:calc(var(--spacing) * 4);padding-right:calc(var(--spacing) * 4)}.py-0\\.5{padding-top:calc(var(--spacing) * .5);padding-bottom:calc(var(--spacing) * .5)}.py-1{padding-top:var(--spacing);padding-bottom:var(--spacing)}.py-1\\.5{padding-top:calc(var(--spacing) * 1.5);padding-bottom:calc(var(--spacing) * 1.5)}.py-2{padding-top:calc(var(--spacing) * 2);padding-bottom:calc(var(--spacing) * 2)}.py-3{padding-top:calc(var(--spacing) * 3);padding-bottom:calc(var(--spacing) * 3)}.pt-1{padding-top:var(--spacing)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#7ba4ff\\]{color:#7ba4ff}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-frozen{color:var(--color-frozen)}.text-fuchsia-500{color:var(--color-fuchsia-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-ok{color:var(--color-ok)}.text-orange-400{color:var(--color-orange-400)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,rgba(0,0,0,.1)), 0 4px 6px -4px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{user-select:none}.select-text{user-select:text}@media (hover:hover){.group-hover\\:text-accent:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.first-letter\\:text-\\[\\#7ba4ff\\]:first-letter{color:#7ba4ff}@media (hover:hover){.hover\\:bg-\\[\\#2a2d3a\\]:hover{background-color:#2a2d3a}.hover\\:bg-accent\\/20:hover{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/20:hover{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.hover\\:bg-accent\\/30:hover{background-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\\:bg-accent\\/80:hover{background-color:rgba(99,102,241,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/80:hover{background-color:color-mix(in oklab, var(--color-accent) 80%, transparent)}}.hover\\:bg-accent\\/85:hover{background-color:rgba(99,102,241,.85)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/85:hover{background-color:color-mix(in oklab, var(--color-accent) 85%, transparent)}}.hover\\:bg-border:hover{background-color:var(--color-border)}.hover\\:bg-border\\/30:hover{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/30:hover{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.hover\\:bg-border\\/50:hover{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/50:hover{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.hover\\:bg-border\\/80:hover{background-color:rgba(34,37,51,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/80:hover{background-color:color-mix(in oklab, var(--color-border) 80%, transparent)}}.hover\\:bg-danger\\/20:hover{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/20:hover{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-danger\\/80:hover{background-color:rgba(239,68,68,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/80:hover{background-color:color-mix(in oklab, var(--color-danger) 80%, transparent)}}.hover\\:bg-frozen\\/30:hover{background-color:rgba(139,92,246,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-frozen\\/30:hover{background-color:color-mix(in oklab, var(--color-frozen) 30%, transparent)}}.hover\\:bg-ok\\/30:hover{background-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-ok\\/30:hover{background-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-gray-200:hover{color:var(--color-gray-200)}.hover\\:text-gray-300:hover{color:var(--color-gray-300)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-red-400:hover{color:var(--color-red-400)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-yellow-300:hover{color:var(--color-yellow-300)}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.focus\\:bg-border\\/30:focus{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.focus\\:bg-border\\/30:focus{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\\:cursor-grabbing:active{cursor:grabbing}.disabled\\:opacity-50:disabled{opacity:.5}:host{--color-bg:#0b0c10;--color-bg-elev:#13151f;--color-bg-input:#1a1c29;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-text-faint:#646b7d;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#222533;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#6366f1}body,:host{color:#f1f5f9;font-family:Outfit,system-ui,-apple-system,sans-serif}*,:after,:before{--tw-border-style:solid}.cursor-grab{cursor:-webkit-grab;cursor:grab}.active\\:cursor-grabbing:active{cursor:-webkit-grabbing;cursor:grabbing}.space-x-1>:not([hidden])~:not([hidden]){margin-left:4px}.space-x-1\\.5>:not([hidden])~:not([hidden]){margin-left:6px}.space-x-2>:not([hidden])~:not([hidden]){margin-left:8px}.space-x-2\\.5>:not([hidden])~:not([hidden]){margin-left:10px}.space-x-3>:not([hidden])~:not([hidden]){margin-left:12px}.space-x-4>:not([hidden])~:not([hidden]){margin-left:16px}.space-y-0\\.5>:not([hidden])~:not([hidden]){margin-top:2px}.space-y-1>:not([hidden])~:not([hidden]){margin-top:4px}.space-y-2>:not([hidden])~:not([hidden]){margin-top:8px}.space-y-2\\.5>:not([hidden])~:not([hidden]){margin-top:10px}.space-y-3>:not([hidden])~:not([hidden]){margin-top:12px}.space-y-4>:not([hidden])~:not([hidden]){margin-top:16px}.space-y-6>:not([hidden])~:not([hidden]){margin-top:24px}.divide-y>:not([hidden])~:not([hidden]){border-top-width:1px;border-color:var(--color-border)}input,textarea,[contenteditable=true]{user-select:text!important}button,button:focus{outline:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 transparent;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 transparent;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 transparent;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 transparent;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 transparent;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}} +/*$vite$:1*/`,document.head.appendChild(e);var t=!1,n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){return e()}function g(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function v(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}function y(e){"@babel/helpers - typeof";return y=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},y(e)}function b(e,t){if(y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function x(e){var t=b(e,`string`);return y(t)==`symbol`?t:t+``}function S(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee,C=1<<24,w=1024,te=2048,ne=4096,re=8192,ie=16384,ae=32768,oe=1<<25,se=65536,ce=1<<19,le=1<<20,ue=1<<25,de=65536,fe=1<<21,pe=1<<22,me=1<<23,he=Symbol(`$state`),ge=Symbol(`legacy props`),_e=Symbol(``),ve=Symbol(`proxy path`),ye=Symbol(`attributes`),be=Symbol(`class`),xe=Symbol(`style`),Se=Symbol(`text`),Ce=Symbol(`form reset`),we=Symbol(`hmr anchor`),Te=new class extends Error{constructor(...e){super(...e),S(this,`name`,`StaleReactionError`),S(this,`message`,"The reaction that called `getAbortSignal()` was re-run or destroyed")}},Ee=!!((ee=globalThis.document)!=null&&ee.contentType)&&globalThis.document.contentType.includes(`xml`);function De(e){if(t){let t=Error(`invariant_violation\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${e}"\nhttps://svelte.dev/e/invariant_violation`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/invariant_violation`)}function Oe(e){if(t){let t=Error(`lifecycle_outside_component\n\`${e}(...)\` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ke(){if(t){let e=Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ae(){if(t){let e=Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/bind_invalid_checkbox_value`)}function je(){if(t){let e=Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/derived_references_self`)}function Me(e,n,r){if(t){let t=Error(`each_key_duplicate\n${r?`Keyed each block has duplicate key \`${r}\` at indexes ${e} and ${n}`:`Keyed each block has duplicate key at indexes ${e} and ${n}`}\nhttps://svelte.dev/e/each_key_duplicate`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ne(e,n,r){if(t){let t=Error(`each_key_volatile\nKeyed each block has key that is not idempotent — the key for item at index ${e} was \`${n}\` but is now \`${r}\`. Keys must be the same each time for a given item\nhttps://svelte.dev/e/each_key_volatile`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_volatile`)}function Pe(e){if(t){let t=Error(`effect_in_teardown\n\`${e}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Fe(){if(t){let e=Error(`effect_in_unowned_derived +Effect cannot be created inside a \`$derived\` value that was not itself created inside an effect +https://svelte.dev/e/effect_in_unowned_derived`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ie(e){if(t){let t=Error(`effect_orphan\n\`${e}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_orphan`)}function Le(){if(t){let e=Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Re(){if(t){let e=Error("invalid_snippet\nCould not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\nhttps://svelte.dev/e/invalid_snippet");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/invalid_snippet`)}function ze(e){if(t){let t=Error(`props_invalid_value\nCannot do \`bind:${e}={undefined}\` when \`${e}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_invalid_value`)}function Be(e){if(t){let t=Error(`props_rest_readonly\nRest element properties of \`$props()\` such as \`${e}\` are readonly\nhttps://svelte.dev/e/props_rest_readonly`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_rest_readonly`)}function Ve(e){if(t){let t=Error(`rune_outside_svelte\nThe \`${e}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/rune_outside_svelte`)}function He(){if(t){let e=Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ue(){if(t){let e=Error(`state_prototype_fixed +Cannot set prototype of \`$state\` object +https://svelte.dev/e/state_prototype_fixed`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function We(){if(t){let e=Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ge(){if(t){let e=Error("svelte_boundary_reset_onerror\nA `` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ke={},qe=Symbol(`uninitialized`),Je=Symbol(`filename`),Ye=`http://www.w3.org/1999/xhtml`,Xe=`http://www.w3.org/2000/svg`,Ze=`font-weight: bold`,Qe=`font-weight: normal`;function $e(e){t?console.warn(`%c[svelte] await_reactivity_loss\n%cDetected reactivity loss when reading \`${e}\`. This happens when state is read in an async function after an earlier \`await\`\nhttps://svelte.dev/e/await_reactivity_loss`,Ze,Qe):console.warn(`https://svelte.dev/e/await_reactivity_loss`)}function et(e,n){t?console.warn(`%c[svelte] await_waterfall\n%cAn async derived, \`${e}\` (${n}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\nhttps://svelte.dev/e/await_waterfall`,Ze,Qe):console.warn(`https://svelte.dev/e/await_waterfall`)}function tt(){t?console.warn(`%c[svelte] derived_inert +%cReading a derived belonging to a now-destroyed effect may result in stale values +https://svelte.dev/e/derived_inert`,Ze,Qe):console.warn(`https://svelte.dev/e/derived_inert`)}function nt(e,n,r){t?console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${e}\` attribute on \`${n}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_attribute_changed`)}function rt(e){t?console.warn(`%c[svelte] hydration_mismatch\n%c${e?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${e}`:`Hydration failed because the initial UI does not match what was rendered on the server`}\nhttps://svelte.dev/e/hydration_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_mismatch`)}function it(){t?console.warn("%c[svelte] select_multiple_invalid_value\n%cThe `value` property of a `` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value",Ze,Qe):console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function at(e){t?console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${e}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`)}function ot(){t?console.warn("%c[svelte] svelte_boundary_reset_noop\n%cA `` `reset` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop",Ze,Qe):console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function st(e){T=e}var E;function ct(e){if(e===null)throw rt(),Ke;return E=e}function lt(){return ct(gi(E))}function D(e){if(T){if(gi(E)!==null)throw rt(),Ke;E=e}}function ut(e=1){if(T){for(var t=e,n=E;t--;)n=gi(n);E=n}}function dt(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=gi(n);e&&n.remove(),n=i}}function ft(e){if(!e||e.nodeType!==8)throw rt(),Ke;return e.data}function pt(e){return e===this.v}function mt(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ht(e){return!mt(e,this.v)}var gt=!1,_t=!1,vt=!1;function yt(){_t=!0}var bt=null;function xt(e,t){return e.label=t,St(e.v,t),e}function St(e,t){var n;return e==null||(n=e[ve])==null||n.call(e,t),e}function Ct(e){let t=Error(),n=wt();return n.length===0?null:(n.unshift(` +`),o(t,`stack`,{value:n.join(` +`)}),o(t,`name`,{value:e}),t)}function wt(){let e=Error.stackTraceLimit;Error.stackTraceLimit=1/0;let t=Error().stack;if(Error.stackTraceLimit=e,!t)return[];let n=t.split(` +`),r=[];for(let e=0;e{t===Lt&&Rt()})}Lt.push(e)}function Bt(){for(;Lt.length>0;)Rt()}var Vt=new WeakMap;function Ht(e){var n=V;if(n===null)return B.f|=me,e;if(t&&e instanceof Error&&!Vt.has(e)&&Vt.set(e,Wt(e,n)),!(n.f&32768)&&!(n.f&4))throw t&&!n.parent&&e instanceof Error&&Gt(e),e;Ut(e,n)}function Ut(e,n){if(!(n!==null&&n.f&16384)){for(;n!==null;){if(n.f&128){if(!(n.f&32768))throw e;try{n.b.error(e);return}catch(t){e=t}}n=n.parent}throw t&&e instanceof Error&&Gt(e),e}}function Wt(e,t){var n,r;let i=s(e,`message`);if(!(i&&!i.configurable)){for(var a=ui?` `:` `,o=`\n${a}in ${((n=t.fn)==null?void 0:n.name)||``}`,c=t.ctx;c!==null;){var l;o+=`\n${a}in ${(l=c.function)==null?void 0:l[Je].split(`/`).pop()}`,c=c.p}return{message:e.message+`\n${o}\n`,stack:(r=e.stack)==null?void 0:r.split(` +`).filter(e=>!e.includes(`svelte/src/internal`)).join(` +`)}}}function Gt(e){let t=Vt.get(e);t&&(o(e,`message`,{value:t.message}),o(e,`stack`,{value:t.stack}))}var Kt=~(te|ne|w);function qt(e,t){e.f=e.f&Kt|t}function Jt(e){e.f&512||e.deps===null?qt(e,w):qt(e,ne)}function Yt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=de,Yt(t.deps))}function Xt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Yt(e.deps),qt(e,w)}var Zt=!1,Qt=!1;function $t(e){var t=Qt;try{return Qt=!1,[e(),Qt]}finally{Qt=t}}function en(e){let n=0,r=Xr(0),i;return t&&xt(r,`createSubscriber version`),()=>{Ai()&&(H(r),Ri(()=>(n===0&&(i=Ea(()=>e(()=>ei(r)))),n+=1,()=>{zt(()=>{--n,n===0&&(i==null||i(),i=void 0,ei(r))})})))}}function tn(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function nn(e,t){tn(e,t),t.add(e)}function k(e,t,n){tn(e,t),t.set(e,n)}function A(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function j(e,t,n){return e.set(A(e,t),n),n}function M(e,t){return e.get(A(e,t))}var rn=se|ce;function an(e,t,n,r){new Cn(e,t,n,r)}var on=new WeakMap,sn=new WeakMap,cn=new WeakMap,ln=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,pn=new WeakMap,mn=new WeakMap,hn=new WeakMap,gn=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakMap,bn=new WeakMap,xn=new WeakMap,Sn=new WeakSet,Cn=class{constructor(e,n,r,i){var a,o;nn(this,Sn),S(this,`parent`,void 0),S(this,`is_pending`,!1),S(this,`transform_error`,void 0),k(this,on,void 0),k(this,sn,T?E:null),k(this,cn,void 0),k(this,ln,void 0),k(this,un,void 0),k(this,dn,null),k(this,fn,null),k(this,pn,null),k(this,mn,null),k(this,hn,0),k(this,gn,0),k(this,_n,!1),k(this,vn,new Set),k(this,yn,new Set),k(this,bn,null),k(this,xn,en(()=>(j(bn,this,Xr(M(hn,this))),t&&xt(M(bn,this),`$effect.pending()`),()=>{j(bn,this,null)}))),j(on,this,e),j(cn,this,n),j(ln,this,e=>{var t=V;t.b=this,t.f|=128,r(e)}),this.parent=V.b,this.transform_error=(a=i==null?(o=this.parent)==null?void 0:o.transform_error:i)==null?(e=>e):a,j(un,this,zi(()=>{if(T){let e=M(sn,this);lt();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));A(Sn,this,Tn).call(this,t)}else t?A(Sn,this,En).call(this):A(Sn,this,wn).call(this)}else A(Sn,this,Dn).call(this)},rn)),T&&j(on,this,E)}defer_effect(e){Xt(e,M(vn,this),M(yn,this))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!M(cn,this).pending}update_pending_count(e,t){A(Sn,this,An).call(this,e,t),j(hn,this,M(hn,this)+e),!(!M(bn,this)||M(_n,this))&&(j(_n,this,!0),zt(()=>{j(_n,this,!1),M(bn,this)&&Qr(M(bn,this),M(hn,this))}))}get_effect_pending(){return M(xn,this).call(this),H(M(bn,this))}error(e){if(!M(cn,this).onerror&&!M(cn,this).failed)throw e;N!=null&&N.is_fork?(M(dn,this)&&N.skip_effect(M(dn,this)),M(fn,this)&&N.skip_effect(M(fn,this)),M(pn,this)&&N.skip_effect(M(pn,this)),N.oncommit(()=>{A(Sn,this,jn).call(this,e)})):A(Sn,this,jn).call(this,e)}};function wn(){try{j(dn,this,Vi(()=>M(ln,this).call(this,M(on,this))))}catch(e){this.error(e)}}function Tn(e){let t=M(cn,this).failed;t&&j(pn,this,Vi(()=>{t(M(on,this),()=>e,()=>()=>{})}))}function En(){let e=M(cn,this).pending;e&&(this.is_pending=!0,j(fn,this,Vi(()=>e(M(on,this)))),zt(()=>{var e=j(mn,this,document.createDocumentFragment()),t=mi();e.append(t),j(dn,this,A(Sn,this,kn).call(this,()=>Vi(()=>M(ln,this).call(this,t)))),M(gn,this)===0&&(M(on,this).before(e),j(mn,this,null),Ji(M(fn,this),()=>{j(fn,this,null)}),A(Sn,this,On).call(this,N))}))}function Dn(){try{if(this.is_pending=this.has_pending_snippet(),j(gn,this,0),j(hn,this,0),j(dn,this,Vi(()=>{M(ln,this).call(this,M(on,this))})),M(gn,this)>0){var e=j(mn,this,document.createDocumentFragment());Qi(M(dn,this),e);let t=M(cn,this).pending;j(fn,this,Vi(()=>t(M(on,this))))}else A(Sn,this,On).call(this,N)}catch(e){this.error(e)}}function On(e){this.is_pending=!1,e.transfer_effects(M(vn,this),M(yn,this))}function kn(e){var t=V,n=B,r=O;aa(M(un,this)),ia(M(un,this)),Et(M(un,this).ctx);try{return Dr.ensure(),e()}catch(e){return Ht(e),null}finally{aa(t),ia(n),Et(r)}}function An(e,t){if(!this.has_pending_snippet()){if(this.parent){var n;A(Sn,n=this.parent,An).call(n,e,t)}return}j(gn,this,M(gn,this)+e),M(gn,this)===0&&(A(Sn,this,On).call(this,t),M(fn,this)&&Ji(M(fn,this),()=>{j(fn,this,null)}),M(mn,this)&&(M(on,this).before(M(mn,this)),j(mn,this,null)))}function jn(e){M(dn,this)&&(Gi(M(dn,this)),j(dn,this,null)),M(fn,this)&&(Gi(M(fn,this)),j(fn,this,null)),M(pn,this)&&(Gi(M(pn,this)),j(pn,this,null)),T&&(ct(M(sn,this)),ut(),ct(dt()));var t=M(cn,this).onerror;let n=M(cn,this).failed;var r=!1,i=!1;let a=()=>{if(r){ot();return}r=!0,i&&Ge(),M(pn,this)!==null&&Ji(M(pn,this),()=>{j(pn,this,null)}),A(Sn,this,kn).call(this,()=>{A(Sn,this,Dn).call(this)})},o=e=>{try{i=!0,t==null||t(e,a),i=!1}catch(e){Ut(e,M(un,this)&&M(un,this).parent)}n&&j(pn,this,A(Sn,this,kn).call(this,()=>{try{return Vi(()=>{var t=V;t.b=this,t.f|=128,n(M(on,this),()=>e,()=>a)})}catch(e){return Ut(e,M(un,this).parent),null}}))};zt(()=>{var t;try{t=this.transform_error(e)}catch(e){Ut(e,M(un,this)&&M(un,this).parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ut(e,M(un,this)&&M(un,this).parent)):o(t)})}function Mn(e,t){this.v=e,this.k=t}function Nn(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof Mn;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}Nn.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},Nn.prototype.next=function(e){return this._invoke(`next`,e)},Nn.prototype.throw=function(e){return this._invoke(`throw`,e)},Nn.prototype.return=function(e){return this._invoke(`return`,e)};function Pn(e,n,r,i){let a=Pt()?Vn:Gn;var o=e.filter(e=>!e.settled),s=n.map(a);if(t&&s.forEach((e,t)=>{e.label=n[t].toString().replace(`() => `,``).replaceAll(`$.eager(() => `,`$state.eager(`).replace(/\$\.get\((.+?)\)/g,(e,t)=>t)}),r.length===0&&o.length===0){i(s);return}var c=V,l=Fn(),u=o.length===1?o[0].promise:o.length>1?Promise.all(o.map(e=>e.promise)):null;function d(e){if(!(c.f&16384)){l();try{i([...s,...e])}catch(e){Ut(e,c)}In()}}var f=Ln();if(r.length===0){u.then(()=>d([])).finally(f);return}function p(){Promise.all(r.map(e=>Un(e))).then(d).catch(e=>Ut(e,c)).finally(f)}u?u.then(()=>{l(),p(),In()}):p()}function Fn(){var e=V,n=B,r=O,i=N;if(t)var a=Dt;return function(o=!0){aa(e),ia(n),Et(r),o&&!(e.f&16384)&&(i==null||i.activate(),i==null||i.apply()),t&&(zn(null),Ot(a))}}function In(e=!0){aa(null),ia(null),Et(null),e&&(N==null||N.deactivate()),t&&(zn(null),Ot(null))}function Ln(){var e=V,t=e.b,n=N,r=!!(t!=null&&t.is_rendered());return t==null||t.update_pending_count(1,n),n.increment(r,e),()=>{t==null||t.update_pending_count(-1,n),n.decrement(r,e)}}var Rn=null;function zn(e){Rn=e}var Bn=new Set;function Vn(e){var n=2|te;V!==null&&(V.f|=ce);let r={ctx:O,deps:null,effects:null,equals:pt,f:n,fn:e,reactions:null,rv:0,v:qe,wv:0,parent:V,ac:null};return t&&vt&&(r.created=Ct(`created at`)),r}var Hn=Symbol(`obsolete`);function Un(e,n,r){let i=V;i===null&&ke();var a=void 0,o=Xr(qe);t&&(o.label=n==null?e.toString():n);var s=!B,c=new Set;return Li(()=>{var n=V;t&&(Rn={effect:n,effect_deps:new Set,warned:!1});var l=_();a=l.promise;try{Promise.resolve(e()).then(l.resolve,e=>{e!==Te&&l.reject(e)}).finally(In)}catch(e){l.reject(e),In()}if(t){if(Rn){if(n.deps!==null)for(let e=0;e{t&&(Rn=null),f==null||f(),c.delete(l),i!==Hn&&(u.activate(),i?(o.f|=me,Qr(o,i)):(o.f&8388608&&(o.f^=me),t&&r!==void 0&&!o.equals(e)&&(Bn.add(o),setTimeout(()=>{Bn.has(o)&&!(n.f&16384)&&(et(o.label,r),Bn.delete(o))})),Qr(o,e)),u.deactivate())};l.promise.then(m,e=>m(null,e||`unknown`))}),ji(()=>{for(let e of c)e.reject(Hn)}),t&&(o.f|=pe),new Promise(e=>{function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}t(a)})}function Wn(e){let t=Vn(e);return gt||sa(t),t}function Gn(e){let t=Vn(e);return t.equals=ht,t}function Kn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;nthis.schedule(e)){var n=M(Cr,this).get(e);if(n){M(Cr,this).delete(e);for(var r of n.d)qt(r,te),t(r);for(r of n.m)qt(r,ne),t(r)}M(wr,this).add(e)}capture(e,t,n=!1){e.v!==qe&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),nr==null||nr.set(e,t)),this.is_fork||(e.v=t)}activate(){N=this}deactivate(){N=null,nr=null}flush(){try{t&&lr.clear(),ar=!0,N=this,A(Er,this,kr).call(this)}finally{if(cr=0,rr=null,or=null,sr=null,ar=!1,N=null,nr=null,Kr.clear(),t)for(let e of lr)e.updated=null}}discard(){var e;for(let e of M(hr,this))e(this);M(hr,this).clear();for(let e of this.async_deriveds.values())e.reject(Hn);A(Er,this,Fr).call(this),(e=M(vr,this))==null||e.resolve()}register_created_effect(e){M(br,this).push(e)}increment(e,t){if(j(gr,this,M(gr,this)+1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;M(_r,this).set(t,e+1)}}decrement(e,t){if(j(gr,this,M(gr,this)-1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;e===1?M(_r,this).delete(t):M(_r,this).set(t,e-1)}M(Tr,this)||(j(Tr,this,!0),zt(()=>{j(Tr,this,!1),this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)M(xr,this).add(t);for(let e of t)M(Sr,this).add(e);e.clear(),t.clear()}oncommit(e){M(mr,this).add(e)}ondiscard(e){M(hr,this).add(e)}settled(){var e;return((e=M(vr,this))==null?j(vr,this,_()):e).promise}static ensure(){if(N===null){let t=N=new e;!ar&&!ir&&zt(()=>{M(dr,t)||t.flush()})}return N}apply(){if(!gt||!this.is_fork&&M(fr,this)===null&&M(pr,this)===null){nr=null;return}nr=new Map;for(let[e,[t]]of this.current)nr.set(e,t);for(let t=$n;t!==null;t=M(pr,t))if(!(t===this||t.is_fork)){var e=!1;if(t.id1e3&&(A(Er,this,Fr).call(this),Lr()),t)for(let e of this.current.keys())lr.add(e);for(let e of M(xr,this))M(Sr,this).delete(e),qt(e,te),this.schedule(e);for(let e of M(Sr,this))qt(e,ne),this.schedule(e);let n=M(yr,this);j(yr,this,[]),this.apply();var r=or=[],i=[],a=sr=[];for(let e of n)try{A(Er,this,Ar).call(this,e,r,i)}catch(t){throw Wr(e),A(Er,this,Or).call(this)||this.discard(),t}if(N=null,a.length>0){var o=Qn.ensure();for(let e of a)o.schedule(e)}if(or=null,sr=null,A(Er,this,Or).call(this)){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r);for(let[e,t]of M(Cr,this))Ur(e,t);a.length>0&&A(Er,N,kr).call(N);return}let s=A(Er,this,jr).call(this);if(s){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r),A(Er,s,Mr).call(s,this);return}M(xr,this).clear(),M(Sr,this).clear();for(let e of M(mr,this))e(this);M(mr,this).clear(),tr=this,zr(i),zr(r),tr=null,(e=M(vr,this))==null||e.resolve();var c=N;if(M(gr,this)===0&&(M(yr,this).length===0||c!==null)&&(A(Er,this,Fr).call(this),gt&&(A(Er,this,Pr).call(this),N=c)),M(yr,this).length>0)if(c!==null){let e=c;M(yr,e).push(...M(yr,this).filter(t=>!M(yr,e).includes(t)))}else c=this;c!==null&&A(Er,c,kr).call(c)}function Ar(e,t,n){e.f^=w;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||M(Cr,this).has(r))&&r.fn!==null){a?r.f^=w:i&4?t.push(r):gt&&i&16777224?n.push(r):_a(r)&&(i&16&&M(Sr,this).add(r),Sa(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}function jr(){for(var e=M(fr,this);e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=M(fr,e)}return null}function Mr(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(M(xr,e),M(Sr,e));let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(M(Sr,this).delete(i),qt(i,te),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),A(Er,e,Fr).call(e),N=this,A(Er,this,kr).call(this)}function Nr(e){for(var t=0;t!d.current.get(e)[1]);if(!(!M(dr,d)||i.length===0)){var a=i.filter(e=>!this.current.has(e));if(a.length===0)e&&d.discard();else if(n.length>0){if(t&&!M(Tr,d)&&Tt(M(yr,d).length===0,`Batch has scheduled roots`),e)for(let e of M(wr,this))d.unskip_effect(e,e=>{e.f&4194320?d.schedule(e):A(Er,d,Nr).call(d,[e])});d.activate();var o=new Set,s=new Map;for(var c of n)Br(c,a,o,s);s=new Map;var l=[...d.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(l.length>0)for(let e of M(br,this))!(e.f&155648)&&Vr(e,l,s)&&(e.f&4194320?(qt(e,te),d.schedule(e)):M(xr,d).add(e));if(M(yr,d).length>0&&!M(Tr,d)){d.apply();for(var u of M(yr,d))A(Er,d,Ar).call(d,u,[],[]);j(yr,d,[])}d.deactivate()}}}}function Fr(){if(this.linked){var e=M(fr,this),t=M(pr,this);e===null?$n=t:j(pr,e,t),t===null?er=e:j(fr,t,e),this.linked=!1}}function Ir(e){var t=ir;ir=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(Bt(),N===null)return n;N.flush()}}finally{ir=t}}function Lr(){if(t){var e=new Map;for(let t of N.current.keys()){var n;for(let[i,a]of(n=t.updated)==null?[]:n){var r=e.get(i);r||(r={error:a.error,count:0},e.set(i,r)),r.count+=a.count}}for(let t of e.values())t.error&&console.error(t.error)}try{Le()}catch(e){t&&o(e,`stack`,{value:``}),Ut(e,rr)}}var Rr=null;function zr(e){var t=e.length;if(t!==0){for(var n=0;n0)){Kr.clear();for(let e of Rr){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Rr.has(n)&&(Rr.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sa(n)}}Rr.clear()}}Rr=null}}function Br(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Br(i,t,n,r):e&4194320&&!(e&2048)&&Vr(i,t,r)&&(qt(i,te),Hr(i))}}function Vr(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(i.call(t,r))return!0;if(r.f&2&&Vr(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function Hr(e){N.schedule(e)}function Ur(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),qt(e,w);for(var n=e.first;n!==null;)Ur(n,t),n=n.next}}function Wr(e){qt(e,w);for(var t=e.first;t!==null;)Wr(t),t=t.next}var Gr=new Set,Kr=new Map;function qr(e){Gr=e}var Jr=!1;function Yr(){Jr=!0}function Xr(e,n){var r={f:0,v:e,reactions:null,equals:pt,rv:0,wv:0};return t&&vt&&(r.created=n==null?Ct(`created at`):n,r.updated=null,r.set_during_effect=!1,r.trace=null),r}function P(e,t){let n=Xr(e,t);return sa(n),n}function Zr(e,t=!1,n=!0){let r=Xr(e);if(t||(r.equals=ht),_t&&n&&O!==null&&O.l!==null){var i,a;((a=(i=O.l).s)==null?i.s=[]:a).push(r)}return r}function F(e,n,r=!1){B!==null&&(!ra||B.f&131072)&&Pt()&&B.f&4325394&&(oa===null||!oa.has(e))&&We();let i=r?I(n):n;return t&&St(i,e.label),Qr(e,i,sr)}function Qr(e,n,r=null){if(!e.equals(n)){Kr.set(e,ta?n:e.v);var i=Dr.ensure();if(i.capture(e,n),t){if(vt||V!==null){var a,o;e.updated!=null||(e.updated=new Map);let t=((a=(o=e.updated.get(``))==null?void 0:o.count)==null?0:a)+1;if(e.updated.set(``,{error:null,count:t}),vt||t>5){let t=Ct(`updated at`);if(t!==null){let n=e.updated.get(t.stack);n||(n={error:t,count:0},e.updated.set(t.stack,n)),n.count++}}}V!==null&&(e.set_during_effect=!0)}if(e.f&2){let t=e;e.f&2048&&Jn(t),nr===null&&Jt(t)}e.wv=ga(),ti(e,te,r),Pt()&&V!==null&&V.f&1024&&!(V.f&96)&&(ua===null?da([e]):ua.push(e)),!i.is_fork&&Gr.size>0&&!Jr&&$r()}return n}function $r(){Jr=!1;for(let e of Gr){e.f&1024&&qt(e,ne);let t;try{t=_a(e)}catch(e){t=!0}t&&Sa(e)}Gr.clear()}function ei(e){F(e,e.v+1)}function ti(e,t,n){var r=e.reactions;if(r!==null)for(var i=Pt(),a=r.length,o=0;o{if(ma===f)return e();var t=B,n=ma;ia(null),ha(f);var r=e();return ia(t),ha(n),r};a&&(i.set(`length`,P(e.length,c)),t&&(e=si(e)));var m=``;let h=!1;function g(e){if(!h){h=!0,m=e,xt(o,`${m} version`);for(let[e,t]of i)xt(t,ri(m,e));h=!1}}return new Proxy(e,{defineProperty(e,n,r){(!(`value`in r)||r.configurable===!1||r.enumerable===!1||r.writable===!1)&&He();var a=i.get(n);return a===void 0?p(()=>{var e=P(r.value,c);return i.set(n,e),t&&typeof n==`string`&&xt(e,ri(m,n)),e}):F(a,r.value,!0),!0},deleteProperty(e,n){var r=i.get(n);if(r===void 0){if(n in e){let e=p(()=>P(qe,c));i.set(n,e),ei(o),t&&xt(e,ri(m,n))}}else F(r,qe),ei(o);return!0},get(n,r,a){var o;if(r===he)return e;if(t&&r===ve)return g;var l=i.get(r),u=r in n;if(l===void 0&&(!u||(o=s(n,r))!=null&&o.writable)&&(l=p(()=>{var e=P(I(u?n[r]:qe),c);return t&&xt(e,ri(m,r)),e}),i.set(r,l)),l!==void 0){var d=H(l);return d===qe?void 0:d}return Reflect.get(n,r,a)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var r=i.get(t);r&&(n.value=H(r))}else if(n===void 0){var a=i.get(t),o=a==null?void 0:a.v;if(a!==void 0&&o!==qe)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,n){var r;if(n===he)return!0;var a=i.get(n),o=a!==void 0&&a.v!==qe||Reflect.has(e,n);return(a!==void 0||V!==null&&(!o||(r=s(e,n))!=null&&r.writable))&&(a===void 0&&(a=p(()=>{var r=P(o?I(e[n]):qe,c);return t&&xt(r,ri(m,n)),r}),i.set(n,a)),H(a)===qe)?!1:o},set(e,n,r,l){var u=i.get(n),d=n in e;if(a&&n===`length`)for(var f=r;fP(qe,c)),i.set(f+``,h),t&&xt(h,ri(m,f))):F(h,qe)}if(u===void 0){var g;(!d||(g=s(e,n))!=null&&g.writable)&&(u=p(()=>P(void 0,c)),t&&xt(u,ri(m,n)),F(u,I(r)),i.set(n,u))}else{d=u.v!==qe;var _=p(()=>I(r));F(u,_)}var v=Reflect.getOwnPropertyDescriptor(e,n);if(v!=null&&v.set&&v.set.call(l,r),!d){if(a&&typeof n==`string`){var y=i.get(`length`),b=Number(n);Number.isInteger(b)&&b>=y.v&&F(y,b+1)}ei(o)}return!0},ownKeys(e){H(o);var t=Reflect.ownKeys(e).filter(e=>{var t=i.get(e);return t===void 0||t.v!==qe});for(var[n,r]of i)r.v!==qe&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ue()}})}function ri(e,t){var n;return typeof t==`symbol`?`${e}[Symbol(${(n=t.description)==null?``:n})]`:ni.test(t)?`${e}.${t}`:/^\d+$/.test(t)?`${e}[${t}]`:`${e}['${t}']`}function ii(e){try{if(typeof e==`object`&&e&&he in e)return e[he]}catch(e){}return e}function ai(e,t){return Object.is(ii(e),ii(t))}var oi=new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);function si(e){return new Proxy(e,{get(e,t,n){var r=Reflect.get(e,t,n);return oi.has(t)?function(...e){Yr();var t=r.apply(this,e);return $r(),t}:r}})}function ci(){let e=Array.prototype,t=Array.__svelte_cleanup;t&&t();let{indexOf:n,lastIndexOf:r,includes:i}=e;e.indexOf=function(e,t){let r=n.call(this,e,t);if(r===-1){for(let n=t==null?0:t;n{e.indexOf=n,e.lastIndexOf=r,e.includes=i}}var li,ui,di,fi;function pi(){if(li===void 0){li=window,ui=/Firefox/.test(navigator.userAgent);var e=Element.prototype,n=Node.prototype,r=Text.prototype;di=s(n,`firstChild`).get,fi=s(n,`nextSibling`).get,f(e)&&(e[be]=void 0,e[ye]=null,e[xe]=void 0,e.__e=void 0),f(r)&&(r[Se]=void 0),t&&(e.__svelte_meta=null,ci())}}function mi(e=``){return document.createTextNode(e)}function hi(e){return di.call(e)}function gi(e){return fi.call(e)}function L(e,t){if(!T)return hi(e);var n=hi(E);if(n===null)n=E.appendChild(mi());else if(t&&n.nodeType!==3){var r=mi();return n==null||n.before(r),ct(r),r}return t&&xi(n),ct(n),n}function _i(e,t=!1){if(!T){var n=hi(e);return n instanceof Comment&&n.data===``?gi(n):n}if(t){if((E==null?void 0:E.nodeType)!==3){var r=mi();return E==null||E.before(r),ct(r),r}xi(E)}return E}function R(e,t=1,n=!1){let r=T?E:e;for(var i;t--;)i=r,r=gi(r);if(!T)return r;if(n){if((r==null?void 0:r.nodeType)!==3){var a=mi();return r===null?i==null||i.after(a):r.before(a),ct(a),a}xi(r)}return ct(r),r}function vi(e){e.textContent=``}function yi(){return!gt||Rr!==null?!1:(V.f&ae)!==0}function bi(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function xi(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Si(e,t){if(t){let t=document.body;e.autofocus=!0,zt(()=>{document.activeElement===t&&e.focus()})}}var Ci=!1;function wi(){Ci||(Ci=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let n of e.target.elements){var t;(t=n[Ce])==null||t.call(n)}})},{capture:!0}))}function Ti(e){var t=B,n=V;ia(null),aa(null);try{return e()}finally{ia(t),aa(n)}}function Ei(e,t,n,r=n){e.addEventListener(t,()=>Ti(n));let i=e[Ce];i?e[Ce]=()=>{i(),r(!0)}:e[Ce]=()=>r(!0),wi()}function Di(e){V===null&&(B===null&&Ie(e),Fe()),ta&&Pe(e)}function Oi(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function ki(e,n){var r=V;if(t)for(;r!==null&&r.f&131072;)r=r.parent;r!==null&&r.f&8192&&(e|=re);var i={ctx:O,deps:null,nodes:null,f:e|te|512,first:null,fn:n,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};t&&(i.component_function=kt),N==null||N.register_created_effect(i);var a=i;if(e&4)or===null?Dr.ensure().schedule(i):or.push(i);else if(n!==null){try{Sa(i)}catch(e){throw Gi(i),e}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&!(a.f&524288)&&(a=a.first,e&16&&e&65536&&a!==null&&(a.f|=se))}if(a!==null&&(a.parent=r,r!==null&&Oi(a,r),B!==null&&B.f&2&&!(e&64))){var o,s=B;((o=s.effects)==null?s.effects=[]:o).push(a)}return i}function Ai(){return B!==null&&!ra}function ji(e){let t=ki(8,null);return qt(t,w),t.teardown=e,t}function Mi(e){Di(`$effect`),t&&o(e,`name`,{value:`$effect`});var n=V.f;if(!B&&n&32&&O!==null&&!O.i){var r,i=O;((r=i.e)==null?i.e=[]:r).push(e)}else return Ni(e)}function Ni(e){return ki(4|le,e)}function Pi(e){return Di(`$effect.pre`),t&&o(e,`name`,{value:`$effect.pre`}),ki(8|le,e)}function Fi(e){Dr.ensure();let t=ki(64|ce,e);return(e={})=>new Promise(n=>{e.outro?Ji(t,()=>{Gi(t),n(void 0)}):(Gi(t),n(void 0))})}function Ii(e){return ki(4,e)}function Li(e){return ki(pe|ce,e)}function Ri(e,t=0){return ki(8|t,e)}function z(e,t=[],n=[],r=[]){Pn(r,t,n,t=>{ki(8,()=>{e(...t.map(H))})})}function zi(e,n=0){var r=ki(16|n,e);return t&&(r.dev_stack=Dt),r}function Bi(e,n=0){var r=ki(C|n,e);return t&&(r.dev_stack=Dt),r}function Vi(e){return ki(32|ce,e)}function Hi(e){var t=e.teardown;if(t!==null){let e=ta,n=B;na(!0),ia(null);try{t.call(null)}finally{na(e),ia(n)}}}function Ui(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&Ti(()=>{e.abort(Te)});var r=n.next;n.f&64?n.parent=null:Gi(n,t),n=r}}function Wi(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Gi(t),t=n}}function Gi(e,n=!0){var r=!1;(n||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Ki(e.nodes.start,e.nodes.end),r=!0),e.f|=oe,Ui(e,n&&!r),xa(e,0);var i=e.nodes&&e.nodes.t;if(i!==null)for(let e of i)e.stop();Hi(e),e.f^=oe,e.f|=ie;var a=e.parent;a!==null&&a.first!==null&&qi(e),t&&(e.component_function=null),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Ki(e,t){for(;e!==null;){var n=e===t?null:gi(e);e.remove(),e=n}}function qi(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Ji(e,t,n=!0){var r=[];Yi(e,r,!0);var i=()=>{n&&Gi(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Yi(e,t,n){if(!(e.f&8192)){e.f^=re;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Yi(i,t,o?n:!1)}i=a}}}function Xi(e){Zi(e,!0)}function Zi(e,t){if(e.f&8192){e.f^=re,e.f&1024||(qt(e,te),Dr.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Zi(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Qi(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:gi(n);t.append(n),n=i}}var $i=null,ea=!1,ta=!1;function na(e){ta=e}var B=null,ra=!1;function ia(e){B=e}var V=null;function aa(e){V=e}var oa=null;function sa(e){if(B!==null&&(!gt||B.f&2)){var t;((t=oa)==null?oa=new Set:t).add(e)}}var ca=null,la=0,ua=null;function da(e){ua=e}var fa=1,pa=0,ma=pa;function ha(e){ma=e}function ga(){return++fa}function _a(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~de),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&nr===null&&qt(e,w)}return!1}function va(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!gt&&oa!==null&&oa.has(e)))for(var i=0;i{e.ac.abort(Te)}),e.ac=null);try{e.f|=fe;var u=e.fn,d=u();e.f|=ae;var f=e.deps,p=N==null?void 0:N.is_fork;if(ca!==null){var m;if(p||xa(e,la),f!==null&&la>0)for(f.length=la+ca.length,m=0;m{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Ir()}function H(e){var n=(e.f&2)!=0;if($i==null||$i.add(e),B!==null&&!ra&&!(V!==null&&V.f&16384)&&(oa===null||!oa.has(e))){var r=B.deps;if(B.f&2097152)e.rvn==null?void 0:n.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?zt(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Ua(e,t,n,r,i){var a={capture:r,passive:i},o=Ha(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&ji(()=>{t.removeEventListener(e,o,a)})}function U(e,t,n){var r;((r=t[za])==null?t[za]={}:r)[e]=n}function Wa(e){for(var t=0;t{throw e});throw m}}finally{e[za]=n,delete e.currentTarget,ia(f),aa(p)}}}var qa,Ja=((qa=globalThis)==null||(qa=qa.window)==null?void 0:qa.trustedTypes)&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Ya(e){var t;return(t=Ja==null?void 0:Ja.createHTML(e))==null?e:t}function Xa(e){var t=bi(`template`);return t.innerHTML=Ya(e.replaceAll(``,``)),t.content}function Za(e,t){var n=V;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(T)return Za(E,null),E;i===void 0&&(i=Xa(a?e:``+e),n||(i=hi(i)));var t=r||ui?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=hi(t),s=t.lastChild;Za(o,s)}else Za(t,t);return t}}function Qa(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}${n}>`,o;return()=>{if(T)return Za(E,null),E;if(!o){var e=hi(Xa(a));if(i)for(o=document.createDocumentFragment();hi(e);)o.appendChild(hi(e));else o=hi(e)}var t=o.cloneNode(!0);if(i){var n=hi(t),r=t.lastChild;Za(n,r)}else Za(t,t);return t}}function $a(e,t){return Qa(e,t,`svg`)}function eo(){if(T)return Za(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=mi();return e.append(t,n),Za(t,n),e}function G(e,t){if(T){var n=V;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),lt();return}e!==null&&e.before(t)}function K(e,t){var n,r,i=t==null?``:typeof t==`object`?`${t}`:t;i!==((r=(n=e)[Se])==null?n[Se]=e.nodeValue:r)&&(e[Se]=i,e.nodeValue=`${i}`)}function to(e,t){return ro(e,t)}var no=new Map;function ro(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){pi();var l=void 0,u=Fi(()=>{var s=n==null?t.appendChild(mi()):n;an(s,{pending:()=>{}},t=>{Mt({});var n=O;if(o&&(n.c=o),i&&(r.$$events=i),T&&Za(t,null),l=e(t,r)||{},T&&(V.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw rt(),Ke;Nt()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=no.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ka),r.delete(e),r.size===0&&no.delete(n)):r.set(e,i)}if(Va.delete(d),s!==n){var a;(a=s.parentNode)==null||a.removeChild(s)}}});return io.set(l,u),l}var io=new WeakMap,ao=new WeakMap,oo=new WeakMap,so=new WeakMap,co=new WeakMap,lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,po=class{constructor(e,n=!0){S(this,`anchor`,void 0),k(this,ao,new Map),k(this,oo,new Map),k(this,so,new Map),k(this,co,new Set),k(this,lo,!0),k(this,uo,e=>{if(M(ao,this).has(e)){var n=M(ao,this).get(e),r=M(oo,this).get(n);if(r)Xi(r),M(co,this).delete(n);else{var i=M(so,this).get(n);i&&(Xi(i.effect),M(oo,this).set(n,i.effect),M(so,this).delete(n),t&&(i.fragment.lastChild[we]=this.anchor),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(let[t,n]of M(ao,this)){if(M(ao,this).delete(t),t===e)break;let r=M(so,this).get(n);r&&(Gi(r.effect),M(so,this).delete(n))}for(let[e,t]of M(oo,this)){if(e===n||M(co,this).has(e))continue;let i=()=>{if(Array.from(M(ao,this).values()).includes(e)){var n=document.createDocumentFragment();Qi(t,n),n.append(mi()),M(so,this).set(e,{effect:t,fragment:n})}else Gi(t);M(co,this).delete(e),M(oo,this).delete(e)};M(lo,this)||!r?(M(co,this).add(e),Ji(t,i,!1)):i()}}}),k(this,fo,e=>{M(ao,this).delete(e);let t=Array.from(M(ao,this).values());for(let[e,n]of M(so,this))t.includes(e)||(Gi(n.effect),M(so,this).delete(e))}),this.anchor=e,j(lo,this,n)}ensure(e,t){var n=N,r=yi();if(t&&!M(oo,this).has(e)&&!M(so,this).has(e))if(r){var i=document.createDocumentFragment(),a=mi();i.append(a),M(so,this).set(e,{effect:Vi(()=>t(a)),fragment:i})}else M(oo,this).set(e,Vi(()=>t(this.anchor)));if(M(ao,this).set(n,e),r){for(let[t,r]of M(oo,this))t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of M(so,this))t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(M(uo,this)),n.ondiscard(M(fo,this))}else T&&(this.anchor=E),M(uo,this).call(this,n)}};function mo(e,t,n=!1){var r;T&&(r=E,lt());var i=new po(e),a=n?se:0;function o(e,t){if(T){var n=ft(r);if(e!==parseInt(n.substring(1))){var a=dt();ct(a),i.anchor=a,st(!1),i.ensure(e,t),st(!0);return}}i.ensure(e,t)}zi(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ho(e,t){return t}function go(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;_o(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;vi(d),d.append(u),e.items.clear()}_o(e,t,!l)}else{var f;o={pending:new Set(t),done:new Set},((f=e.outrogroups)==null?e.outrogroups=new Set:f).add(o)}}function _o(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=i();return n(e)?e:e==null?[]:a(e)});t&&xt(p,`{#each ...}`);var m,h=new Map,g=!0;function _(e){y.effect.f&16384||(y.pending.delete(e),y.fallback=f,xo(y,m,l,r,o),f!==null&&(m.length===0?f.f&33554432?(f.f^=ue,Co(f,null,l)):Xi(f):Ji(f,()=>{f=null})))}function v(e){y.pending.delete(e)}var y={effect:zi(()=>{m=H(p);var e=m.length;let n=!1;T&&ft(l)===`[!`!=(e===0)&&(l=dt(),ct(l),st(!1),n=!0);for(var a=new Set,d=N,y=yi(),b=0;bc(l)):(f=Vi(()=>{var e;return c((e=vo)==null?vo=mi():e)}),f.f|=ue)),e>a.size&&(t?To(m,o):Me(``,``,``)),T&&e>0&&ct(dt()),!g)if(h.set(d,a),y){for(let[e,t]of u)a.has(e)||d.skip_effect(t.e);d.oncommit(_),d.ondiscard(v)}else _(d);n&&st(!0),H(p)}),flags:r,items:u,pending:h,outrogroups:null,fallback:f};g=!1,T&&(l=E)}function bo(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function xo(e,t,n,r,i){var o=(r&8)!=0,s=t.length,c=e.items,l=bo(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o){for(v=0;v0){var se=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f){var e;(e=_.nodes)==null||(e=e.a)==null||e.apply()}})}function So(e,n,r,i,a,o,s,c){var l=s&1?s&16?Xr(r):Zr(r,!1,!1):null,u=s&2?Xr(a):null;return t&&l&&(l.trace=()=>{var e;c()[(e=u==null?void 0:u.v)==null?a:e]}),{v:l,i:u,e:Vi(()=>(o(n,l==null?r:l,u==null?a:u,c),()=>{e.delete(i)}))}}function Co(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=gi(r);if(a.before(r),r===i)return;r=o}}function wo(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function To(e,t){let n=new Map,r=e.length;for(let i=0;i{var e;let a=(e=n())==null?null:e;t&&a==null&&Re(),i.ensure(a,a&&(e=>a(e,...r)))},se)}var Do=()=>performance.now(),Oo={tick:e=>requestAnimationFrame(e),now:()=>Do(),tasks:new Set};function ko(){let e=Oo.now();Oo.tasks.forEach(t=>{t.c(e)||(Oo.tasks.delete(t),t.f())}),Oo.tasks.size!==0&&Oo.tick(ko)}function Ao(e){let t;return Oo.tasks.size===0&&Oo.tick(ko),{promise:new Promise(n=>{Oo.tasks.add(t={c:e,f:n})}),abort(){Oo.tasks.delete(t)}}}function jo(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Mo(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=jo(n.trim());t[i]=r.trim()}return t}var No=e=>e,Po=null;function Fo(e){Po=e}function Io(e,t,n){var r,i=((r=Po)==null?V:r).nodes,a,o,s,c=null;i.a!=null||(i.a={element:e,measure(){a=this.element.getBoundingClientRect()},apply(){if(s==null||s.abort(),o=this.element.getBoundingClientRect(),a.left!==o.left||a.right!==o.right||a.top!==o.top||a.bottom!==o.bottom){let e=t()(this.element,{from:a,to:o},n==null?void 0:n());s=Lo(this.element,e,void 0,1,()=>{},()=>{s==null||s.abort(),s=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var i=e.style;c={position:i.position,width:i.width,height:i.height,transform:i.transform},i.position=`absolute`,i.width=n,i.height=r;var o=e.getBoundingClientRect();if(a.left!==o.left||a.top!==o.top){var s=`translate(${a.left-o.left}px, ${a.top-o.top}px)`;i.transform=i.transform?`${i.transform} ${s}`:s}}}},unfix(){if(c){var t=e.style;t.position=c.position,t.width=c.width,t.height=c.height,t.transform=c.transform}}}),i.a.element=e}function Lo(e,t,n,r,i,a){var o=r===1;if(p(t)){var s,c=!1;return zt(()=>{c||(s=Lo(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n==null||n.deactivate(),!(t!=null&&t.duration)&&!(t!=null&&t.delay))return i(),a(),{abort:m,deactivate:m,reset:m,t:()=>r};let{delay:l=0,css:u,tick:d,easing:f=No}=t;var h=[];if(o&&n===void 0&&(d&&d(0,1),u)){var g=Mo(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{var o;v.cancel(),i();var s=(o=n==null?void 0:n.t())==null?1-r:o;n==null||n.abort();var c=r-s,l=t.duration*Math.abs(c),p=[];if(l>0){var m=!1;if(u)for(var h=Math.ceil(l/(1e3/60)),g=0;g<=h;g+=1){var y=s+c*f(g/h),b=Mo(u(y,1-y));p.push(b),m||(m=b.overflow===`hidden`)}m&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return s+c*f(e/l)},d&&Ao(()=>{if(v.playState!==`running`)return!1;var e=_();return d(e,1-e),!0})}v=e.animate(p,{duration:l,fill:`forwards`}),v.onfinish=()=>{_=()=>r,d==null||d(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=m)},deactivate:()=>{a=m},reset:()=>{r===0&&(d==null||d(1,0))},t:()=>_()}}function Ro(e,n,r,i,a,o){let s=T;T&<();var c=t&&o&&(O==null?void 0:O.function[Je]),l=null;T&&E.nodeType===1&&(l=E,lt());var u=T?E:e,d=V,f=new po(u,!1);zi(()=>{let e=n()||null;var s=a?a():r||e===`svg`?Xe:void 0;if(e===null){f.ensure(null,null);return}return f.ensure(e,n=>{if(e){if(l=T?l:bi(e,s),t&&o&&(l.__svelte_meta={parent:Dt,loc:{file:c,line:o[0],column:o[1]}}),Za(l,l),i){var r=null;T&&Ra(e)&&l.append(r=document.createComment(``));var a=T?hi(l):l.appendChild(mi());T&&(a===null?st(!1):ct(a)),Fo(d),i(l,a),r==null||r.remove(),Fo(null)}V.nodes.end=l,n.before(l)}T&&ct(n)}),()=>{}},se),ji(()=>{}),s&&(st(!0),ct(u))}function zo(e,t){var n=void 0,r;Bi(()=>{n!==(n=t())&&(r&&(Gi(r),r=null),n&&(r=Vi(()=>{Ii(()=>n(e))})))})}function Bo(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Uo.includes(r[o-1]))&&(s===r.length||Uo.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Go(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Ko(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function qo(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Ko)),i&&c.push(...Object.keys(i).map(Ko));var l=0,u=-1;let t=e.length;for(var d=0;d{Zo(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),ji(()=>{t.disconnect()})}function $o(e,t,n=t){var r=new WeakSet,i=!0;Ei(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),es);else{var o,s=(o=e.querySelector(i))==null?e.querySelector(`option:not([disabled])`):o;a=s&&es(s)}n(a),e.__value=a,N!==null&&r.add(N)}),Ii(()=>{var a=t();if(e===document.activeElement){var o=gt?tr:N;if(r.has(o))return}if(Zo(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=es(s),n(a))}e.__value=a,i=!1}),Qo(e)}function es(e){return`__value`in e?e.__value:e.value}var ts=Symbol(`class`),ns=Symbol(`style`),rs=Symbol(`is custom element`),is=Symbol(`is html`),as=Ee?`link`:`LINK`,os=Ee?`input`:`INPUT`,ss=Ee?`option`:`OPTION`,cs=Ee?`select`:`SELECT`,ls=Ee?`progress`:`PROGRESS`;function us(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ps(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ps(e,`checked`,null),e.checked=r}}};e[Ce]=n,zt(n),wi()}}function ds(e,t){var n=gs(e);n.value===(n.value=t==null?void 0:t)||e.value===t&&(t!==0||e.nodeName!==ls)||(e.value=t==null?``:t)}function fs(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ps(e,t,n,r){var i=gs(e);if(T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===as)){r||ys(e,t,n==null?``:n);return}i[t]!==(i[t]=n)&&(t===`loading`&&(e[_e]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&vs(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ms(e,t,n,r,i=!1,a=!1){if(T&&i&&e.nodeName===os){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||us(o)}var s=gs(e),c=s[rs],l=!s[is];let u=T&&c;u&&st(!1);var d=t||{},f=e.nodeName===ss;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ho(n.class):(r||n[ts])&&(n.class=null),n[ns]&&(n.style!=null||(n.style=null));var m=vs(e);if(e.nodeName===os&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,ps(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){Jo(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t==null?void 0:t[ts],n[ts]),d[i]=o,d[ts]=n[ts];continue}if(i===`style`){Xo(e,o,t==null?void 0:t[ns],n[ns]),d[i]=o,d[ns]=n[ns];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=ja(r);if(ka(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)U(r,e,o),Wa([r]);else if(o!=null){function y(e){d[i].call(this,e)}d[n]=Ha(r,e,y,t)}}else if(i===`style`)ps(e,i,o);else if(i===`autofocus`)Si(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)fs(e,o);else{var b=i;l||(b=Pa(b));var x=b===`defaultValue`||b===`defaultChecked`;if(o==null&&!c&&!x)if(s[i]=null,b===`value`||b===`checked`){let n=e,r=t===void 0;if(b===`value`){let e=n.defaultValue;n.removeAttribute(b),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(b),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else x||m.includes(b)&&(c||typeof o!=`string`)?(e[b]=o,b in s&&(s[b]=qe)):typeof o!=`function`&&ps(e,b,o,a)}}}return u&&st(!0),d}function hs(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Pn(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===cs,l=!1;if(Bi(()=>{var u=t(...n.map(H)),d=ms(e,r,u,a,o,s);l&&c&&`value`in u&&Zo(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Gi(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Gi(i[t]),i[t]=Vi(()=>zo(e,()=>f))),d[t]=f}r=d}),c){var u=e;Ii(()=>{Zo(u,r.value,!0),Qo(u)})}l=!0})}function gs(e){var t,n;return(n=(t=e)[ye])==null?t[ye]={[rs]:e.nodeName.includes(`-`),[is]:e.namespaceURI===Ye}:n}var _s=new Map;function vs(e){var t=e.getAttribute(`is`)||e.nodeName,n=_s.get(t);if(n)return n;_s.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=d(i)}return n}function ys(e,n,r){var i;t&&(n===`srcset`&&Ss(e,r)||bs((i=e.getAttribute(n))==null?``:i,r)||nt(n,e.outerHTML.replace(e.innerHTML,e.innerHTML&&`...`),String(r)))}function bs(e,t){return e===t?!0:new URL(e,document.baseURI).href===new URL(t,document.baseURI).href}function xs(e){return e.split(`,`).map(e=>e.trim().split(` `).filter(Boolean))}function Ss(e,t){var n=xs(e.srcset),r=xs(t);return r.length===n.length&&r.every(([e,t],r)=>t===n[r][1]&&(bs(n[r][0],e)||bs(e,n[r][0])))}function Cs(e,n,r=n){var i=new WeakSet;Ei(e,`input`,async a=>{t&&e.type===`checkbox`&&Ae();var o=a?e.defaultValue:e.value;if(o=ws(e)?Ts(o):o,r(o),N!==null&&i.add(N),await Ca(),o!==(o=n())){var s,c=e.selectionStart,l=e.selectionEnd,u=e.value.length;if(e.value=(s=o)==null?``:s,l!==null){var d=e.value.length;c===l&&l===u&&d>u?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=c,e.selectionEnd=Math.min(l,d))}}}),(T&&e.defaultValue!==e.value||Ea(n)==null&&e.value)&&(r(ws(e)?Ts(e.value):e.value),N!==null&&i.add(N)),Ri(()=>{t&&e.type===`checkbox`&&Ae();var r=n();if(e===document.activeElement){var a=gt?tr:N;if(i.has(a))return}ws(e)&&r===Ts(e.value)||e.type===`date`&&!r&&!e.value||r!==e.value&&(e.value=r==null?``:r)})}function ws(e){var t=e.type;return t===`number`||t===`range`}function Ts(e){return e===``?null:+e}var Es,Ds=new WeakMap,Os=new WeakMap,ks=new WeakMap,As=new WeakSet,js=class{constructor(e){nn(this,As),k(this,Ds,new WeakMap),k(this,Os,void 0),k(this,ks,void 0),j(ks,this,e)}observe(e,t){var n=M(Ds,this).get(e)||new Set;return n.add(t),M(Ds,this).set(e,n),A(As,this,Ms).call(this).observe(e,M(ks,this)),()=>{var n=M(Ds,this).get(e);n.delete(t),n.size===0&&(M(Ds,this).delete(e),M(Os,this).unobserve(e))}}};Es=js;function Ms(){var e;return(e=M(Os,this))==null?j(Os,this,new ResizeObserver(e=>{for(var t of e){Es.entries.set(t.target,t);for(var n of M(Ds,this).get(t.target)||[])n(t)}})):e}S(js,`entries`,new WeakMap);function Ns(e,t){return e===t||(e==null?void 0:e[he])===t}function Ps(e={},t,n,r){var i=O.r,a=V;return Ii(()=>{var o,s;return Ri(()=>{o=s,s=(r==null?void 0:r())||[],Ea(()=>{Ns(n(...s),e)||(t(e,...s),o&&Ns(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ns(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c==null||c()}}}),e}function Fs(e=!1){let t=O,n=t.l.u;if(!n)return;let r=()=>Da(t.s);if(e){let e=0,n={},i=Vn(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&Pi(()=>{Is(t,r),g(n.b)}),Mi(()=>{let e=Ea(()=>n.m.map(h));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Mi(()=>{Is(t,r),g(n.a)})}function Is(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function Ls(e){var t=Xr(0);return function(){return arguments.length===1?(F(t,H(t)+1),arguments[0]):(H(t),e())}}var Rs={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,n){return t&&Be(`${e.name}.${String(n)}`),!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.has(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function zs(e,n,r){return new Proxy(t?{props:e,exclude:n,name:r,other:{},to_proxy:[]}:{props:e,exclude:n},Rs)}var Bs={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===he||t===ge)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Vs(...e){return new Proxy({props:e},Bs)}function Hs(e,n,r,i){var a=!_t||(r&2)!=0,o=(r&8)!=0,c=(r&16)!=0,l=i,u=!0,d=void 0,f=()=>c&&a?(d!=null||(d=Vn(i)),H(d)):(u&&(u=!1,l=c?Ea(i):i),l);let p;if(o){var m,h,g=he in e||ge in e;p=(m=(h=s(e,n))==null?void 0:h.set)==null?g&&n in e?t=>e[n]=t:void 0:m}var _,v=!1;o?[_,v]=$t(()=>e[n]):_=e[n],_===void 0&&i!==void 0&&(_=f(),p&&(a&&ze(n),p(_)));var y=a?()=>{var t=e[n];return t===void 0?f():(u=!0,t)}:()=>{var t=e[n];return t!==void 0&&(l=void 0),t===void 0?l:t};if(a&&!(r&4))return y;if(p){var b=e.$$legacy;return(function(e,t){return arguments.length>0?((!a||!t||b||v)&&p(t?y():e),e):y()})}var x=!1,S=(r&1?Vn:Gn)(()=>(x=!1,y()));t&&(S.label=n),o&&H(S);var ee=V;return(function(e,t){if(arguments.length>0){let n=t?H(S):a&&o?I(e):e;return F(S,n),x=!0,l!==void 0&&(l=n),e}return ta&&x||ee.f&16384?S.v:H(S)})}if(t){function Us(e){if(!(e in globalThis)){let t;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(t!==void 0)return t;Ve(e)},set:e=>{t=e}})}}Us(`$state`),Us(`$effect`),Us(`$derived`),Us(`$inspect`),Us(`$props`),Us(`$bindable`)}function Ws(e){O===null&&Oe(`onMount`),_t&&O.l!==null?Gs(O).m.push(e):Mi(()=>{let t=Ea(e);if(typeof t==`function`)return t})}function Gs(e){var t,n=e.l;return(t=n.u)==null?n.u={a:[],b:[],m:[]}:t}if(typeof window<`u`){var Ks,qs,Js,Ys;((qs=(Ks=(Ys=(Js=window).__svelte)==null?Js.__svelte={}:Ys).v)==null?Ks.v=new Set:qs).add(`5`)}var Xs={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},Zs=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Qs=Symbol(`lucide-context`),$s=()=>jt(Qs),ec=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),tc=$a(``);function nc(e,t){var n;Mt(t,!0);let r=(n=$s())==null?{}:n,i=Hs(t,`color`,19,()=>{var e;return(e=r.color)==null?`currentColor`:e}),a=Hs(t,`size`,19,()=>{var e;return(e=r.size)==null?24:e}),o=Hs(t,`strokeWidth`,19,()=>{var e;return(e=r.strokeWidth)==null?2:e}),s=Hs(t,`absoluteStrokeWidth`,19,()=>{var e;return(e=r.absoluteStrokeWidth)==null?!1:e}),c=Hs(t,`iconNode`,19,()=>[]),l=zs(t,ec),u=Wn(()=>s()?Number(o())*24/Number(a()):o());var d=tc();hs(d,e=>({...Xs,...e,...l,width:a(),height:a(),stroke:i(),"stroke-width":H(u),class:[`lucide-icon lucide`,r.class,t.name&&`lucide-${t.name}`,t.class]}),[()=>!t.children&&!Zs(l)&&{"aria-hidden":`true`}]);var f=L(d);yo(f,17,c,ho,(e,t)=>{var n=Wn(()=>v(H(t),2));let r=()=>H(n)[0],i=()=>H(n)[1];var a=eo();Ro(_i(a),r,!0,(e,t)=>{hs(e,()=>({...i()}))}),G(e,a)}),Eo(R(f),()=>{var e;return(e=t.children)==null?m:e}),D(d),G(e,d),Nt()}var rc=new Set([`$$slots`,`$$events`,`$$legacy`]);function ic(e,t){let n=zs(t,rc),r=[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`}]];nc(e,Vs({name:`hash`},()=>n,{get iconNode(){return r}}))}var ac=new Set([`$$slots`,`$$events`,`$$legacy`]);function oc(e,t){let n=zs(t,ac),r=[[`path`,{d:`M10 8h.01`}],[`path`,{d:`M12 12h.01`}],[`path`,{d:`M14 8h.01`}],[`path`,{d:`M16 12h.01`}],[`path`,{d:`M18 8h.01`}],[`path`,{d:`M6 8h.01`}],[`path`,{d:`M7 16h10`}],[`path`,{d:`M8 12h.01`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`}]];nc(e,Vs({name:`keyboard`},()=>n,{get iconNode(){return r}}))}var sc=new Set([`$$slots`,`$$events`,`$$legacy`]);function cc(e,t){let n=zs(t,sc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`}]];nc(e,Vs({name:`lock-open`},()=>n,{get iconNode(){return r}}))}var lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function uc(e,t){let n=zs(t,lc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];nc(e,Vs({name:`lock`},()=>n,{get iconNode(){return r}}))}var dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function fc(e,t){let n=zs(t,dc),r=[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`}],[`circle`,{cx:`12`,cy:`10`,r:`3`}]];nc(e,Vs({name:`map-pin`},()=>n,{get iconNode(){return r}}))}var pc=new Set([`$$slots`,`$$events`,`$$legacy`]);function mc(e,t){let n=zs(t,pc),r=[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`}]];nc(e,Vs({name:`message-square`},()=>n,{get iconNode(){return r}}))}var hc=new Set([`$$slots`,`$$events`,`$$legacy`]);function gc(e,t){let n=zs(t,hc),r=[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`}],[`path`,{d:`M12 22V12`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`}],[`path`,{d:`m7.5 4.27 9 5.15`}]];nc(e,Vs({name:`package`},()=>n,{get iconNode(){return r}}))}var _c=new Set([`$$slots`,`$$events`,`$$legacy`]);function vc(e,t){let n=zs(t,_c),r=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];nc(e,Vs({name:`settings`},()=>n,{get iconNode(){return r}}))}var yc=new Set([`$$slots`,`$$events`,`$$legacy`]);function bc(e,t){let n=zs(t,yc),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];nc(e,Vs({name:`star`},()=>n,{get iconNode(){return r}}))}var xc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sc(e,t){let n=zs(t,xc),r=[[`circle`,{cx:`9`,cy:`12`,r:`3`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`}]];nc(e,Vs({name:`toggle-left`},()=>n,{get iconNode(){return r}}))}var Cc=new Set([`$$slots`,`$$events`,`$$legacy`]);function wc(e,t){let n=zs(t,Cc),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Tc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ec(e,t){let n=zs(t,Tc),r=[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash`},()=>n,{get iconNode(){return r}}))}var Dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oc(e,t){let n=zs(t,Dc),r=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]];nc(e,Vs({name:`user`},()=>n,{get iconNode(){return r}}))}var kc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ac(e,t){let n=zs(t,kc),r=[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`}]];nc(e,Vs({name:`wrench`},()=>n,{get iconNode(){return r}}))}var jc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mc(e,t){let n=zs(t,jc),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];nc(e,Vs({name:`x`},()=>n,{get iconNode(){return r}}))}var Nc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pc(e,t){let n=zs(t,Nc),r=[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`}]];nc(e,Vs({name:`zap`},()=>n,{get iconNode(){return r}}))}var Fc=function(e){return e.Item=`item`,e.Weapon=`weapon`,e.Armor=`armor`,e}({}),Ic=function(e){return e.General=`general`,e.Vars=`vars`,e.Switches=`switches`,e.Inv=`inv`,e.Actors=`actors`,e.Map=`map`,e.CommonEv=`commonev`,e.Locks=`locks`,e.Logs=`logs`,e.Shortcuts=`shortcuts`,e.Settings=`settings`,e}({}),Lc=function(e){return e[e.MHP=0]=`MHP`,e[e.MMP=1]=`MMP`,e[e.ATK=2]=`ATK`,e[e.DEF=3]=`DEF`,e[e.MAT=4]=`MAT`,e[e.MDF=5]=`MDF`,e[e.AGI=6]=`AGI`,e[e.LUK=7]=`LUK`,e}({}),Rc=new WeakMap,zc=new class{constructor(){k(this,Rc,P(I([])))}get toasts(){return H(M(Rc,this))}set toasts(e){F(M(Rc,this),e,!0)}show(e,t=`info`,n=1500){let r=Math.random().toString(),i={id:r,type:t,message:e,duration:n};this.toasts=[...this.toasts,i],setTimeout(()=>{this.dismiss(r)},n)}dismiss(e){this.toasts=this.toasts.filter(t=>t.id!==e)}},Bc=e=>!!e&&typeof e.then==`function`,q={vars:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.variables)==null)&&e.length?window.$dataSystem.variables.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.variables)==null?void 0:t[e];return n?String(n):`Variable ${e}`},get:e=>{var t;return(t=window.$gameVariables)==null?void 0:t.value(e)},set:(e,t)=>{if(!window.$gameVariables)return;let n=q.vars.get(e),r=t;if(typeof n==`number`&&typeof t==`string`){let e=Number(t);!isNaN(e)&&t.trim()!==``&&(r=e)}else typeof n==`boolean`&&typeof t==`string`&&(r=t.toLowerCase()===`true`||t===`1`);window.$gameVariables.setValue(e,r)},list:()=>{let e=q.vars.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.vars.name(n),value:q.vars.get(n)});return t}},switches:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.switches)==null)&&e.length?window.$dataSystem.switches.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.switches)==null?void 0:t[e];return n?String(n):`Switch ${e}`},get:e=>{var t;return!!((t=window.$gameSwitches)!=null&&t.value(e))},set:(e,t)=>{window.$gameSwitches&&window.$gameSwitches.setValue(e,!!t)},toggle:e=>{q.switches.set(e,!q.switches.get(e))},list:()=>{let e=q.switches.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.switches.name(n),value:q.switches.get(n)});return t}},inv:{table:e=>e===Fc.Item?window.$dataItems||[]:e===Fc.Weapon?window.$dataWeapons||[]:e===Fc.Armor&&window.$dataArmors||[],data:(e,t)=>q.inv.table(e)[t],count:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.numItems(n):0},maxStack:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.maxItems(n):99},grant:(e,t,n)=>{let r=q.inv.data(e,t);r&&window.$gameParty&&window.$gameParty.gainItem(r,n,!1)},setCount:(e,t,n)=>{let r=q.inv.count(e,t),i=q.inv.maxStack(e,t);n=Math.max(0,Math.min(i,n)),n!==r&&q.inv.grant(e,t,n-r)},list:e=>{let t=q.inv.table(e),n=[];for(let r=1;rwindow.$gameParty?window.$gameParty.gold():0,max:()=>window.$gameParty&&window.$gameParty.maxGold?window.$gameParty.maxGold():99999999,add:e=>{window.$gameParty&&(e>0?window.$gameParty.gainGold(e):e<0&&window.$gameParty.loseGold(-e))},set:e=>{let t=q.gold.max();e=Math.max(0,Math.min(t,e)),q.gold.add(e-q.gold.get())}},party:{members:()=>window.$gameParty?window.$gameParty.members().map(e=>({id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1})):[],steps:()=>window.$gameParty?window.$gameParty.steps():0,playtime:()=>window.Graphics?Math.floor(window.Graphics.frameCount/60):0,recoverAll:()=>{window.$gameParty&&window.$gameParty.members().forEach(e=>{var t;(t=e.recoverAll)==null||t.call(e)})}},map:{list:()=>window.$dataMapInfos?window.$dataMapInfos.filter(e=>!!e).map(e=>({id:e.id,name:e.name,parentId:e.parentId})):[],current:()=>!window.$gameMap||!window.$gamePlayer?null:{mapId:window.$gameMap.mapId(),x:window.$gamePlayer.x,y:window.$gamePlayer.y,dir:window.$gamePlayer.direction()},teleport:(e,t,n,r=0,i=0)=>{window.$gamePlayer&&window.$gamePlayer.reserveTransfer(e,t,n,r,i)},speed:e=>{window.$gamePlayer&&(e=Math.max(1,Math.min(8,e)),window.$gamePlayer.setMoveSpeed(e))},events:()=>!window.$gameMap||typeof window.$gameMap.events!=`function`?[]:(window.$gameMap.events()||[]).map(e=>{let t=typeof e.event==`function`?e.event():null,n=t&&t.name?t.name:`Event ${e._eventId||0}`,r=typeof e.x==`number`?e.x:e._x||0,i=typeof e.y==`number`?e.y:e._y||0;return{id:typeof e.eventId==`function`?e.eventId():e._eventId||0,name:n,x:r,y:i}}),loadMapEvents:async e=>{if(e<=0)return[];try{let t=`data/Map${e.toString().padStart(3,`0`)}.json`,n=await(await fetch(t)).json();return!n||!n.events?[]:n.events.filter(e=>e).map(e=>{let t=e.name||`Event ${e.id}`;if(t.match(/^EV\d+$/i)){if(e.note)t=`${t} (${e.note.split(` +`)[0].trim()})`;else if(e.pages&&e.pages.length>0){let n=e.pages[0].list;if(n&&n.length>0){let e=n.find(e=>e.code===108||e.code===401);if(e&&e.parameters&&e.parameters[0]){let n=String(e.parameters[0]).substring(0,20).trim();n&&(t=`${t} [${n}]`)}}}}return{id:e.id,name:t,x:e.x,y:e.y}})}catch(t){return console.warn(`Failed to load events for map`,e,t),[]}}},commonev:{list:()=>window.$dataCommonEvents?window.$dataCommonEvents.filter(e=>e&&e.name).map(e=>({id:e.id,name:e.name})):[],run:e=>{window.$gameTemp&&window.$gameTemp.reserveCommonEvent(e)}},battle:{inBattle:()=>!window.SceneManager||!window.SceneManager._scene?!1:window.SceneManager._scene.constructor.name===`Scene_Battle`,canExecuteBattleEnd:()=>q.battle.inBattle()&&window.BattleManager&&window.BattleManager._phase!==`battleEnd`,instantWin:()=>{!q.battle.inBattle()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.isDead()||(e.setHp(0),e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId()),e.performCollapse&&e.performCollapse(),e.refresh&&e.refresh())}),window.BattleManager.checkBattleEnd())},flee:()=>{!q.battle.inBattle()||!window.BattleManager||window.BattleManager.processAbort()},forceVictory:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processVictory(),zc.show(`Forced victory from battle!`,`success`))},forceDefeat:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||(window.$gameParty.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processDefeat(),zc.show(`Forced defeat from battle...`,`warn`))},forceEscape:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||!window.SoundManager||(window.$gameParty.performEscape(),window.SoundManager.playEscape(),window.BattleManager._escaped=!0,window.BattleManager.processEscape(),zc.show(`Forced escape from battle`,`success`))},changeAllEnemyHealth:e=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all enemies`,`success`))},recoverAllEnemy:()=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all enemies`,`success`))},changeAllPartyHealth:e=>{window.$gameParty&&(window.$gameParty.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all party members`,`success`))},recoverAllParty:()=>{window.$gameParty&&(window.$gameParty.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all party members`,`success`))}},scene:{gotoTitle:()=>{window.SceneManager&&window.Scene_Title&&window.SceneManager.goto(window.Scene_Title)},toggleSaveScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Save?window.SceneManager.pop():t===window.Scene_Load?window.SceneManager.goto(window.Scene_Save):window.SceneManager.push(window.Scene_Save)},toggleLoadScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Load?window.SceneManager.pop():t===window.Scene_Save?window.SceneManager.goto(window.Scene_Load):window.SceneManager.push(window.Scene_Load)},quickSave:(e=1)=>{window.$gameSystem&&window.DataManager?(window.$gameSystem.onBeforeSave(),window.DataManager.saveGame(e),zc.show(`Game Saved - Slot ${e}`,`success`)):zc.show(`Quick Save failed`,`error`)},quickLoad:async(e=1)=>{if(window.DataManager&&window.SceneManager&&window.Scene_Map)try{let t=window.DataManager.loadGame(e);Bc(t)?(await t,q.scene.completeQuickLoad(e)):t?q.scene.completeQuickLoad(e):zc.show(`Quick Load failed`,`error`)}catch(e){console.error(e),zc.show(`Quick Load failed`,`error`)}else zc.show(`Quick Load failed`,`error`)},completeQuickLoad:e=>{var t,n,r,i,a,o;if(!(!window.SceneManager||!window.Scene_Map)){if(window.$gameSystem&&window.$dataSystem&&typeof window.$gameSystem.versionId==`function`&&typeof window.$dataSystem.versionId==`number`&&window.$gameSystem.versionId()!==window.$dataSystem.versionId&&window.$gameMap&&window.$gamePlayer){var s,c;let e=window.$gameMap.mapId(),t=window.$gamePlayer.x,n=window.$gamePlayer.y,r=window.$gamePlayer.direction();window.$gamePlayer.reserveTransfer(e,t,n,r,0),(s=(c=window.$gamePlayer).requestMapReload)==null||s.call(c)}(t=window.SoundManager)==null||(n=t.playLoad)==null||n.call(t),(r=window.SceneManager._scene)==null||(i=r.fadeOutAll)==null||i.call(r),window.SceneManager.goto(window.Scene_Map),(a=window.$gameSystem)==null||(o=a.onAfterLoad)==null||o.call(a),zc.show(`Game Loaded - Slot ${e}`,`success`)}}},system:{openDevTool:()=>{if(typeof window<`u`&&window.require)try{let e=window.require(`nw.gui`);e&&e.Window&&e.Window.get&&e.Window.get().showDevTools()}catch(e){}}}},J={list:()=>window.$dataActors?window.$dataActors.filter(e=>!!e).map(e=>{let t=window.$gameActors?window.$gameActors.actor(e.id):null;return{id:e.id,name:t?t.name():e.name,level:t&&(typeof t.level==`function`?t.level():t._level)||1,inParty:t&&window.$gameParty?window.$gameParty.members().includes(t):!1}}):[],get:e=>{var t;if(!window.$gameActors)return null;let n=window.$gameActors.actor(e);if(!n)return null;let r=[];for(let e=0;e<8;e++)r.push({id:e,value:n.param?n.param(e):0});let i=window.$dataSkills?window.$dataSkills.filter(e=>!!e).map(e=>({id:e.id,name:e.name,learned:n.hasSkill?n.hasSkill(e.id):!1})):[],a=n.equips&&n.equips()?n.equips().map((e,t)=>({slotId:t,name:e?e.name:`Empty`,item:e})):[],o=n.states&&n.states()?n.states().map(e=>({id:e.id,name:e.name})):[];return{id:n.actorId(),name:n.name(),level:typeof n.level==`function`?n.level()||1:n._level||1,exp:n.currentExp?n.currentExp():0,nextExp:n.nextRequiredExp?n.nextRequiredExp():0,hp:n.hp,mp:n.mp,tp:n.tp,mhp:n.mhp,mmp:n.mmp,mtp:n.maxTp?n.maxTp():100,params:r,skills:i,states:o,equips:a,inParty:(t=window.$gameParty)==null?void 0:t.members().includes(n)}},setLevel:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeLevel&&r.changeLevel(Math.max(1,Math.min(r.maxLevel?r.maxLevel():99,t)),!1)},setExp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeExp&&r.changeExp(Math.max(0,t),!1)},setHp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setHp&&r.setHp(Math.max(0,Math.min(r.mhp,t)))},setMp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setMp&&r.setMp(Math.max(0,Math.min(r.mmp,t)))},setTp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e),i=r&&r.maxTp?r.maxTp():100;r&&r.setTp&&r.setTp(Math.max(0,Math.min(i,t)))},addParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);i&&i.addParam&&i.addParam(t,n)},setParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);if(!i||!i.param||!i.addParam)return;let a=1;i.paramRate&&(a*=i.paramRate(t)),i.paramBuffRate&&(a*=i.paramBuffRate(t)),a===0&&(a=1);let o=i.paramBase?i.paramBase(t):0,s=i.paramPlus?i.paramPlus(t):0,c=Math.round(n/a)-o-s;i.addParam(t,c)},learnSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.learnSkill&&r.learnSkill(t)},forgetSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.forgetSkill&&r.forgetSkill(t)},recover:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.recoverAll&&n.recoverAll()},setName:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setName&&r.setName(String(t))},addToParty:e=>{window.$gameParty&&window.$gameParty.addActor&&window.$gameParty.addActor(e)},removeFromParty:e=>{window.$gameParty&&window.$gameParty.removeActor&&window.$gameParty.removeActor(e)},listStates:()=>window.$dataStates?window.$dataStates.filter(e=>!!(e&&e.name)):[],addState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.addState&&r.addState(t)},removeState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.removeState&&r.removeState(t)},clearStates:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.clearStates&&n.clearStates()}},Y=I({vars:new Map,switches:new Map,items:new Map,gold:null,stats:new Map,noclip:!1}),Vc=!1,Hc=null,X={install:()=>{if(!Vc&&!(typeof window>`u`)&&!window.__FORGE_LOCKS__){if(window.__FORGE_LOCKS__=!0,window.Game_Variables&&window.Game_Variables.prototype.setValue){let e=window.Game_Variables.prototype.setValue;window.Game_Variables.prototype.setValue=function(t,n){Y.vars.has(t)&&(n=Y.vars.get(t)),e.call(this,t,n)}}if(window.Game_Switches&&window.Game_Switches.prototype.setValue){let e=window.Game_Switches.prototype.setValue;window.Game_Switches.prototype.setValue=function(t,n){Y.switches.has(t)&&(n=Y.switches.get(t)),e.call(this,t,n)}}if(window.Game_Party&&window.Game_Party.prototype.gainGold&&(Hc=window.Game_Party.prototype.gainGold,window.Game_Party.prototype.gainGold=function(e){Y.gold===null&&Hc.call(this,e)}),window.Scene_Base&&window.Scene_Base.prototype.update){let e=window.Scene_Base.prototype.update;window.Scene_Base.prototype.update=function(){e.call(this),X.tick()}}if(window.DataManager){if(window.DataManager.setupNewGame){let e=window.DataManager.setupNewGame;window.DataManager.setupNewGame=function(...t){e.apply(this,t)}}if(window.DataManager.extractSaveContents){let e=window.DataManager.extractSaveContents;window.DataManager.extractSaveContents=function(...t){let n=e.apply(this,t);return X.applyValueLocks(),n}}}X.loadFromStorage(),Vc=!0}},saveToStorage:()=>{try{let e={vars:Array.from(Y.vars.entries()),switches:Array.from(Y.switches.entries()),items:Array.from(Y.items.entries()),gold:Y.gold,stats:Array.from(Y.stats.entries()),noclip:Y.noclip};localStorage.setItem(`forge:locks`,JSON.stringify(e))}catch(e){}},loadFromStorage:()=>{try{let e=localStorage.getItem(`forge:locks`);if(e){let t=JSON.parse(e);Y.vars=new Map(t.vars||[]),Y.switches=new Map(t.switches||[]),Y.items=new Map(t.items||[]),Y.gold=t.gold===void 0?null:t.gold,Y.stats=new Map(t.stats||[]),t.noclip&&X.setNoclip(!0,!0)}}catch(e){}},tick:()=>{if(X.applyValueLocks(),Y.noclip&&window.$gamePlayer&&!window.$gamePlayer.isThrough()&&window.$gamePlayer.setThrough(!0),Y.gold!==null&&window.$gameParty){let e=window.$gameParty.gold();e!==Y.gold&&Hc&&Hc.call(window.$gameParty,Y.gold-e)}if(Y.stats.size>0&&window.$gameActors)for(let[e,t]of Y.stats.entries()){let[n,r]=e.split(`:`),i=parseInt(n,10),a=window.$gameActors.actor(i);if(a){if(r===`hp`&&a.hp!==t)J.setHp(i,t);else if(r===`mp`&&a.mp!==t)J.setMp(i,t);else if(r===`tp`&&a.tp!==t)J.setTp(i,t);else if(r===`level`&&(typeof a.level==`function`?a.level():a._level)!==t)J.setLevel(i,t);else if(r===`exp`&&(a.currentExp?a.currentExp():0)!==t)J.setExp(i,t);else if(r.startsWith(`param_`)){let e=parseInt(r.split(`_`)[1],10);a.param&&a.param(e)!==t&&J.setParam(i,e,t)}}}if(Y.items.size>0&&window.$gameParty)for(let[e,t]of Y.items.entries()){let[n,r]=e.split(`:`),i=parseInt(r,10),a=n;q.inv.setCount(a,i,t)}},applyValueLocks:()=>{if(Y.vars.size>0&&window.$gameVariables)for(let[e,t]of Y.vars.entries())window.$gameVariables.value(e)!==t&&window.$gameVariables.setValue(e,t);if(Y.switches.size>0&&window.$gameSwitches)for(let[e,t]of Y.switches.entries())window.$gameSwitches.value(e)!==t&&window.$gameSwitches.setValue(e,t)},freezeVar:(e,t)=>{t?Y.vars.set(e,q.vars.get(e)):Y.vars.delete(e),Y.vars=new Map(Y.vars),X.saveToStorage()},freezeSwitch:(e,t)=>{t?Y.switches.set(e,q.switches.get(e)):Y.switches.delete(e),Y.switches=new Map(Y.switches),X.saveToStorage()},freezeItem:(e,t,n)=>{let r=`${e}:${t}`;n?Y.items.set(r,q.inv.count(e,t)):Y.items.delete(r),Y.items=new Map(Y.items),X.saveToStorage()},freezeGold:e=>{e?Y.gold=q.gold.get():Y.gold=null,X.saveToStorage()},freezeStat:(e,t,n)=>{let r=`${e}:${t}`;if(n){let n=J.get(e),i=0;if(n){if(t===`hp`||t===`mp`||t===`tp`||t===`level`||t===`exp`)i=n[t];else if(t.startsWith(`param_`)){let e=parseInt(t.split(`_`)[1],10),r=n.params.find(t=>t.id===e);r&&(i=r.value)}}Y.stats.set(r,i)}else Y.stats.delete(r);Y.stats=new Map(Y.stats),X.saveToStorage()},setNoclip:(e,t=!1)=>{Y.noclip=e,window.$gamePlayer&&window.$gamePlayer.setThrough(e),t||zc.show(`Noclip: ${e?`ON`:`OFF`}`,e?`success`:`info`)},clearAll:()=>{Y.vars.clear(),Y.vars=new Map,Y.switches.clear(),Y.switches=new Map,Y.items.clear(),Y.items=new Map,Y.stats.clear(),Y.stats=new Map,Y.gold=null,X.setNoclip(!1,!0),X.saveToStorage()},summary:()=>{let e=[];return Y.vars.forEach((t,n)=>e.push({type:`var`,id:n,label:q.vars.name(n),value:t})),Y.switches.forEach((t,n)=>e.push({type:`switch`,id:n,label:q.switches.name(n),value:t})),Y.items.forEach((t,n)=>{let[r,i]=n.split(`:`),a=parseInt(i,10),o=q.inv.data(r,a);e.push({type:`item`,key:n,label:o?o.name:n,value:t})}),Y.gold!==null&&e.push({type:`gold`,id:`gold`,label:`Gold`,value:Y.gold}),Y.stats.forEach((t,n)=>{var r;let[i,a]=n.split(`:`),o=parseInt(i,10),s=((r=J.get(o))==null?void 0:r.name)||`Actor ${o}`,c=`${s} ${a.toUpperCase()}`,l=`stat`;a.startsWith(`param_`)&&(l=`param`,c=`${s} ${[`Max HP`,`Max MP`,`Attack`,`Defense`,`M. Attack`,`M. Defense`,`Agility`,`Luck`][parseInt(a.split(`_`)[1],10)]||a}`),e.push({type:l,key:n,label:c,value:t})}),e}},Z=I({god:!1,ohko:!1,noEncounter:!1,speed:1,speedBoost:2,speedUseKey:!0,speedHeld:!1,messageSkip:!1}),Uc=!1,Wc={install:()=>{if(!Uc&&!(typeof window>`u`)&&!window.__FORGE_CHEATS__){if(window.__FORGE_CHEATS__=!0,window.Game_Action&&window.Game_Action.prototype.executeHpDamage){let e=window.Game_Action.prototype.executeHpDamage;window.Game_Action.prototype.executeHpDamage=function(t,n){Z.god&&t.isActor()&&n>0&&(n=0),Z.ohko&&this.subject().isActor()&&t.isEnemy()&&(n=t.hp),e.call(this,t,n)}}if(window.Game_Battler&&window.Game_Battler.prototype.gainHp){let e=window.Game_Battler.prototype.gainHp;window.Game_Battler.prototype.gainHp=function(t){Z.god&&this.isActor()&&t<0&&(t=0),e.call(this,t)}}if(window.Game_Actor&&window.Game_Actor.prototype.executeFloorDamage){let e=window.Game_Actor.prototype.executeFloorDamage;window.Game_Actor.prototype.executeFloorDamage=function(){Z.god||e.call(this)}}if(window.Game_Player&&window.Game_Player.prototype.encounterProgressValue){let e=window.Game_Player.prototype.encounterProgressValue;window.Game_Player.prototype.encounterProgressValue=function(){return Z.noEncounter?0:e.call(this)}}if(window.SceneManager&&window.SceneManager.updateScene){let e=window.SceneManager.updateScene,t=0,n=e=>{if(e.isCurrentSceneStarted){if(!e.isCurrentSceneStarted())return!1}else if(e._scene&&e._scene.isStarted&&!e._scene.isStarted())return!1;return!(e.isSceneChanging&&e.isSceneChanging()||window.$gamePlayer&&window.$gamePlayer.isTransferring&&window.$gamePlayer.isTransferring()||window.DataManager&&window.DataManager.isMapLoaded&&!window.DataManager.isMapLoaded())};window.SceneManager.updateScene=function(){let r=Z.speedHeld?Z.speedBoost:Z.speed;if(Z.speedUseKey&&!Z.speedHeld&&(r=1),r>=1)if(e.call(this),r>1&&this._scene&&typeof this._scene.update==`function`&&n(this)){t+=r-1;let e=0;for(;t>=1&&e++<64;){--t;try{this._scene.update()}catch(e){t=0;break}}}else t=0;else if(t+=r,t>=1)--t,e.call(this);else if(this._scene){let t=this._scene.update;this._scene.update=function(){};try{e.call(this)}finally{this._scene.update=t}}}}if(window.Window_Message&&window.Window_Message.prototype.updateShowFast){let e=window.Window_Message.prototype.updateShowFast;window.Window_Message.prototype.updateShowFast=function(){e.call(this),Z.messageSkip&&(this._showFast=!0,this._pauseSkip=!0)}}if(window.Window_Message&&window.Window_Message.prototype.updateInput){let e=window.Window_Message.prototype.updateInput;window.Window_Message.prototype.updateInput=function(){let t=e.call(this);return this.pause&&Z.messageSkip?(this.pause=!1,this._textState||this.terminateMessage(),!0):t}}if(window.Window_ScrollText&&window.Window_ScrollText.prototype.scrollSpeed){let e=window.Window_ScrollText.prototype.scrollSpeed;window.Window_ScrollText.prototype.scrollSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t*=100),t}}if(window.Window_BattleLog&&window.Window_BattleLog.prototype.messageSpeed){let e=window.Window_BattleLog.prototype.messageSpeed;window.Window_BattleLog.prototype.messageSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t=1),t}}Uc=!0}},setGod:e=>{Z.god=e},setOhko:e=>{Z.ohko=e},setNoEncounter:e=>{Z.noEncounter=e},setSpeed:e=>{Z.speed=e},setSpeedBoost:e=>{Z.speedBoost=e},setSpeedUseKey:e=>{Z.speedUseKey=e},startSpeedHold:()=>{Z.speedHeld=!0},stopSpeedHold:()=>{Z.speedHeld=!1},setMessageSkip:e=>{Z.messageSkip=e}},Gc={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":19,capslock:20,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,meta:91,rightclick:93,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,"numpad*":106,"numpad+":107,"numpad-":109,"numpad.":110,"numpad/":111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,numlock:144,scrolllock:145,mycomputer:182,mycalculator:183,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},Kc={};for(let e of Object.keys(Gc))Kc[e.toLowerCase()]=Gc[e];var qc={};for(let e of Object.keys(Kc))qc[Kc[e]]=e;var Jc=new Set([17,18,16,91]),Yc=class e{constructor(e,t,n,r,i){S(this,`code`,void 0),S(this,`ctrl`,void 0),S(this,`alt`,void 0),S(this,`shift`,void 0),S(this,`meta`,void 0),this.code=e,this.ctrl=t,this.alt=n,this.shift=r,this.meta=i}static createEmpty(){return new e(256,!1,!1,!1,!1)}static fromKey(t){return new e(t.code,t.ctrl,t.alt,t.shift,t.meta)}static fromString(t){if(!t||t===``)return e.createEmpty();let n=t.toLowerCase().split(` `);if(n.length===0)throw Error(`No keymap found`);let r=null,i=!1,a=!1,o=!1,s=!1;for(let e of n)switch(e=e.trim(),e){case`ctrl`:case`control`:i=!0;break;case`alt`:a=!0;break;case`shift`:o=!0;break;case`meta`:s=!0;break;default:if(r!==null)throw Error(`Cannot combine multiple standard keys`);if(!Object.prototype.hasOwnProperty.call(Kc,e))throw Error(`Unknown key: ${e}`);r=Kc[e]}return r===null&&(r=256),new e(r,i,a,o,s)}static fromEvent(t){return Jc.has(t.keyCode)?e._fromCombiningAloneEvent(t):new e(t.keyCode,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey)}static _fromCombiningAloneEvent(t){return new e(256,t.keyCode===17||t.ctrlKey,t.keyCode===18||t.altKey,t.keyCode===16||t.shiftKey,t.keyCode===91||t.metaKey)}isEmpty(){return this.code===256&&!this.ctrl&&!this.alt&&!this.shift&&!this.meta}isCombiningKey(){return this.code===256&&!this.isEmpty()}equals(e){return this.code===e.code&&this.ctrl===e.ctrl&&this.alt===e.alt&&this.shift===e.shift&&this.meta===e.meta}contains(e){return(!e.ctrl||this.ctrl)&&(!e.alt||this.alt)&&(!e.shift||this.shift)&&(!e.meta||this.meta)&&(e.isCombiningKey()||e.code===this.code)}countPressingKeys(){let e=0;return this.code!==256&&(e+=1),this.ctrl&&(e+=1),this.alt&&(e+=1),this.shift&&(e+=1),this.meta&&(e+=1),e}asStringArray(){if(this.isEmpty())return[];let e=[];return this.ctrl&&e.push(`ctrl`),this.alt&&e.push(`alt`),this.shift&&e.push(`shift`),this.meta&&e.push(`meta`),this.code!==256&&e.push(qc[this.code]||`key_${this.code}`),e}adjustCombiningKey(e){this.ctrl=e.ctrlKey,this.alt=e.altKey,this.shift=e.shiftKey,this.meta=e.metaKey}add(e){if(Jc.has(e)){this._setCombiningKey(e,!0);return}this.code=e}remove(e){if(Jc.has(e)){this._setCombiningKey(e,!1);return}this.code===e&&(this.code=256)}_setCombiningKey(e,t){switch(e){case 17:this.ctrl=t;break;case 18:this.alt=t;break;case 16:this.shift=t;break;case 91:this.meta=t;break}}capitalize(e){return e.length===0?``:e.length===1?e.charAt(0).toUpperCase():e.charAt(0).toUpperCase()+e.slice(1)}asString(){return this.asStringArray().join(` `)}asDisplayString(){return this.asStringArray().map(e=>this.capitalize(e)).join(` + `)}},Q=I({visible:!1,activeTab:Ic.General,targetActorId:null,targetActorStat:null,targetVarId:null,targetSwitchId:null,targetItemKey:null}),$={currentKey:Yc.createEmpty(),shortcuts:[],activeShortcutIds:new Set,init:e=>{let t=localStorage.getItem(`forge:shortcuts`),n={};if(t)try{n=JSON.parse(t)}catch(e){}$.shortcuts=e.map(e=>{let t=n[e.id];return{...e,keyStr:(t==null?void 0:t.keyStr)===void 0?e.keyStr:t.keyStr,enabled:(t==null?void 0:t.enabled)===void 0?e.enabled:t.enabled,params:(t==null?void 0:t.params)||e.params}}),window.addEventListener(`keydown`,$.onKeyDown.bind($),{capture:!0}),window.addEventListener(`keyup`,$.onKeyUp.bind($),{capture:!0})},save:()=>{let e={};$.shortcuts.forEach(t=>{e[t.id]={keyStr:t.keyStr,enabled:t.enabled,params:t.params}}),localStorage.setItem(`forge:shortcuts`,JSON.stringify(e))},get:e=>$.shortcuts.find(t=>t.id===e),update:(e,t)=>{let n=$.get(e);n&&(Object.assign(n,t),$.save())},_isFocusedOnInput:()=>{let e=document.activeElement;for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable)},_hasSelection:()=>{var e;if(!Q.visible)return!1;let t=((e=window.getSelection())==null?void 0:e.toString())||``;if(!t){let e=document.getElementById(`forge-mvmz-host`);e&&e.shadowRoot&&e.shadowRoot.getSelection&&(t=e.shadowRoot.getSelection().toString()||``)}return t.trim().length>0},onKeyDown:e=>{if(!$._isFocusedOnInput()&&!$._hasSelection()){if(e.repeat){let t=!1;for(let e of $.activeShortcutIds){let n=$.get(e);n&&n.onRepeat&&(n.onRepeat(n.params),t=!0)}t&&(e.preventDefault(),e.stopPropagation());return}$.currentKey.add(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e)}},onKeyUp:e=>{$._isFocusedOnInput()||($.currentKey.remove(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e))},processTransitions:e=>{let t=new Set;for(let e of $.shortcuts)if(!(!e.enabled||!e.keyStr))try{let n=Yc.fromString(e.keyStr),r=!1;r=e.combiningKeyAlone?$.currentKey.contains(n):n.equals($.currentKey),r&&t.add(e.id)}catch(t){console.error(`[FORGE] Error parsing keyStr for ${e.id}:`,t)}let n=Array.from($.activeShortcutIds);for(let e of n)if(!t.has(e)){let t=$.get(e);if(t){var r;(r=t.onLeave)==null||r.call(t,t.params)}$.activeShortcutIds.delete(e)}let i=!1;for(let e of t)if(!$.activeShortcutIds.has(e)){let t=$.get(e);if(t){var a;(a=t.onEnter)==null||a.call(t,t.params),$.activeShortcutIds.add(e),i=!0}}i&&e.type===`keydown`&&(e.preventDefault(),e.stopPropagation())}},Xc=I({inactiveOpacity:80,autoOpen:!1,rememberPosition:!0,favorites:{},showLauncher:!0,quickSaveSlot:1}),Zc={load:()=>{try{let e=localStorage.getItem(`forge:config`);if(e){let t=JSON.parse(e);typeof t.inactiveOpacity==`number`&&(Xc.inactiveOpacity=t.inactiveOpacity),typeof t.autoOpen==`boolean`&&(Xc.autoOpen=t.autoOpen),typeof t.rememberPosition==`boolean`&&(Xc.rememberPosition=t.rememberPosition),t.favorites&&typeof t.favorites==`object`&&(Xc.favorites=t.favorites),typeof t.showLauncher==`boolean`&&(Xc.showLauncher=t.showLauncher),typeof t.quickSaveSlot==`number`&&(Xc.quickSaveSlot=t.quickSaveSlot)}}catch(e){}},save:()=>{localStorage.setItem(`forge:config`,JSON.stringify({inactiveOpacity:Xc.inactiveOpacity,autoOpen:Xc.autoOpen,rememberPosition:Xc.rememberPosition,favorites:Xc.favorites,showLauncher:Xc.showLauncher,quickSaveSlot:Xc.quickSaveSlot}))},toggleFavorite:(e,t)=>{Xc.favorites[e]||(Xc.favorites[e]=[]);let n=Xc.favorites[e].indexOf(t);n===-1?Xc.favorites[e].push(t):Xc.favorites[e].splice(n,1),Zc.save()},isFavorite:(e,t)=>{var n;return((n=Xc.favorites[e])==null?void 0:n.includes(t))||!1},resetAll:()=>{confirm(`Are you sure you want to reset all Forge settings, locks, and saved data? This cannot be undone.`)&&(localStorage.clear(),window.location.reload())}},Qc=I({entries:[]}),$c=!1,el=1,tl={install:()=>{if(!$c&&!(typeof window>`u`)&&!window.__FORGE_LOGS__){if(window.__FORGE_LOGS__=!0,window.Game_Message&&window.Game_Message.prototype.add){let e=window.Game_Message.prototype.add;window.Game_Message.prototype.add=function(t){e.call(this,t);let n=``;typeof this.speakerName==`function`&&(n=this.speakerName()||``),tl.addEntry(n,t)}}$c=!0}},addEntry:(e,t)=>{let n=t;if(n=n.replace(/\\\\/g,`\x1B`),n=n.replace(/\\x1b/g,`\x1B`),n=n.replace(/\\V\[(\d+)\]/gi,(e,t)=>window.$gameVariables?String(window.$gameVariables.value(parseInt(t))):``),n=n.replace(/\\N\[(\d+)\]/gi,(e,t)=>{var n;return window.$gameActors&&((n=window.$gameActors.actor(parseInt(t)))==null?void 0:n.name())||``}),n=n.replace(/\\P\[(\d+)\]/gi,(e,t)=>{let n=(window.$gameParty?window.$gameParty.members():[])[parseInt(t)-1];return n?n.name():``}),n=n.replace(/\\G/gi,()=>window.TextManager?window.TextManager.currencyUnit:``),n=n.replace(/\x1bC\[\d+\]/gi,``),n=n.replace(/\x1bI\[\d+\]/gi,``),n=n.replace(/\x1b[\\{\\}\.\|!><\^]/g,``),n=n.replace(/\x1b[A-Z]\[.*?\]/gi,``),n=n.replace(/\x1b/g,``),!e){let t=n.match(/^\\n<([^>]+)>/i);t&&(e=t[1],n=n.replace(/^\\n<([^>]+)>/i,``))}if(n=n.replace(/\n/g,` `),n=n.replace(/\s+/g,` `),n=n.trim(),!n)return;let r=Date.now(),i=Qc.entries[Qc.entries.length-1];i&&i.speaker===e&&r-i.timestamp<100?(i.text+=` ${n}`,i.timestamp=r):Qc.entries.push({id:el++,speaker:e,text:n,timestamp:r})},clear:()=>{Qc.entries=[]}},nl=[{id:`toggle_ui`,name:`Toggle Cheat UI`,desc:`Show/Hide the cheat panel`,keyStr:`Ctrl C`,enabled:!0,required:!0,onEnter:()=>Q.visible=!Q.visible},{id:`toggle_save_recall`,name:`Toggle Save Locations Tab`,desc:`Open/close panel on Bookmarks`,keyStr:`Ctrl M`,enabled:!0,onEnter:()=>{Q.visible=!0,Q.activeTab=Ic.Map}},{id:`quick_save`,name:`Quick Save`,desc:`Quick save to configured slot`,keyStr:`Ctrl S`,enabled:!0,onEnter:()=>q.scene.quickSave(Xc.quickSaveSlot)},{id:`quick_load`,name:`Quick Load`,desc:`Quick load from configured slot`,keyStr:`Ctrl Q`,enabled:!0,onEnter:()=>q.scene.quickLoad(Xc.quickSaveSlot)},{id:`open_save_scene`,name:`Open Save Scene`,desc:`Push or pop Save scene`,keyStr:`Ctrl [`,enabled:!0,onEnter:()=>q.scene.toggleSaveScene()},{id:`open_load_scene`,name:`Open Load Scene`,desc:`Push or pop Load scene`,keyStr:`Ctrl ]`,enabled:!0,onEnter:()=>q.scene.toggleLoadScene()},{id:`goto_title`,name:`Go to Title`,desc:`Return to title screen`,keyStr:`Ctrl T`,enabled:!0,onEnter:()=>q.scene.gotoTitle()},{id:`force_victory`,name:`Force Victory`,desc:`Force battle victory`,keyStr:`Ctrl V`,enabled:!0,onEnter:()=>q.battle.forceVictory()},{id:`force_defeat`,name:`Force Defeat`,desc:`Force battle defeat`,keyStr:`Ctrl D`,enabled:!0,onEnter:()=>q.battle.forceDefeat()},{id:`force_escape`,name:`Force Escape`,desc:`Force battle escape`,keyStr:`Ctrl E`,enabled:!0,onEnter:()=>q.battle.forceEscape()},{id:`toggle_noclip`,name:`Toggle Noclip`,desc:`Walk through walls`,keyStr:`Alt W`,enabled:!0,onEnter:()=>X.setNoclip(!Y.noclip)},{id:`enemy_wound`,name:`Enemies HP to 1`,desc:`Wound all active enemies`,keyStr:`Alt 1`,enabled:!0,onEnter:()=>q.battle.changeAllEnemyHealth(1)},{id:`enemy_recovery`,name:`Recover Enemies`,desc:`Fully recover enemies`,keyStr:`Alt 0`,enabled:!0,onEnter:()=>q.battle.recoverAllEnemy()},{id:`party_wound`,name:`Party HP to 1`,desc:`Wound all party members`,keyStr:`Alt 2`,enabled:!0,onEnter:()=>q.battle.changeAllPartyHealth(1)},{id:`party_recovery`,name:`Recover Party`,desc:`Fully recover party members`,keyStr:`Alt 9`,enabled:!0,onEnter:()=>q.battle.recoverAllParty()},{id:`trigger_encounter`,name:`Trigger Encounter`,desc:`Next step triggers random battle`,keyStr:``,enabled:!0,onEnter:()=>{window.$gamePlayer&&(window.$gamePlayer._encounterCount=0)}},{id:`speed_hold`,name:`Speed Hold Key`,desc:`Hold to fast forward game`,keyStr:`Ctrl`,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.startSpeedHold(),onLeave:()=>Wc.stopSpeedHold()},{id:`skip_message`,name:`Skip Message Key`,desc:`Hold to skip dialogs`,keyStr:``,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.setMessageSkip(!0),onLeave:()=>Wc.setMessageSkip(!1)},{id:`open_dev_tool`,name:`Open Dev Tools`,desc:`Show Nw.js developer tools`,keyStr:`F12`,enabled:!0,onEnter:()=>q.system.openDevTool()}],rl=W(``);function il(e,t){var n=rl();U(`mousedown`,n,function(...e){var n;(n=t.onmousedown)==null||n.apply(this,e)}),G(e,n)}Wa([`mousedown`]);var al=W(``);function ol(e,t){Mt(t,!0);let n=P(0),r=P(0);Ws(()=>{try{let e=JSON.parse(localStorage.getItem(`forge:launcherPos`)||`null`);e?(F(n,e.x,!0),F(r,e.y,!0)):(F(n,(window.innerWidth||800)-56),F(r,(window.innerHeight||600)-56))}catch(e){F(n,100),F(r,100)}});let i=P(!1),a=P(0),o=P(0),s=P(0),c=P(0),l=P(!1),u=e=>{if(!H(i))return;e.stopPropagation(),e.preventDefault();let t=e.clientX-H(a),u=e.clientY-H(o);Math.abs(t)+Math.abs(u)>3&&F(l,!0),F(n,Math.max(4,Math.min(window.innerWidth-46,H(s)+t)),!0),F(r,Math.max(4,Math.min(window.innerHeight-46,H(c)+u)),!0)},d=e=>{H(i)&&(e.stopPropagation(),e.preventDefault()),F(i,!1),window.removeEventListener(`mousemove`,u,!0),window.removeEventListener(`mouseup`,d,!0);try{localStorage.setItem(`forge:launcherPos`,JSON.stringify({x:H(n),y:H(r)}))}catch(e){}setTimeout(()=>{F(l,!1)},0)},f=e=>{e.preventDefault(),F(i,!0),F(l,!1),F(a,e.clientX,!0),F(o,e.clientY,!0),F(s,H(n),!0),F(c,H(r),!0),window.addEventListener(`mousemove`,u,!0),window.addEventListener(`mouseup`,d,!0)},p=()=>{H(l)||(Q.visible=!Q.visible)};var m=eo(),h=_i(m),g=e=>{var t=al();Ac(L(t),{size:20}),D(t),z(()=>{var e,i;return Xo(t,`left: ${(e=H(n))==null?``:e}px; top: ${(i=H(r))==null?``:i}px;`)}),U(`mousedown`,t,e=>{e.stopPropagation(),f(e)}),U(`click`,t,e=>{e.stopPropagation(),p()}),G(e,t)};mo(h,e=>{Xc.showLauncher&&e(g)}),G(e,m),Nt()}Wa([`mousedown`,`click`]);var sl=W(``),cl=W(`Nothing here`),ll=W(` `);function ul(e,t){Mt(t,!0);let n=Hs(t,`items`,19,()=>[]),r=Hs(t,`itemHeight`,3,32),i=Hs(t,`containerHeight`,3,400),a=P(0),o=P(void 0),s=Wn(()=>n().length*r()),c=Wn(()=>Math.floor(H(a)/r())),l=Wn(()=>Math.min(n().length-1,H(c)+Math.ceil(i()/r())+2)),u=Wn(()=>n().slice(H(c),H(l)+1).map((e,t)=>({...e,_index:H(c)+t}))),d=e=>{F(a,e.target.scrollTop,!0)};var f={resetScroll:()=>{H(o)&&(H(o).scrollTop=0)},scrollToBottom:()=>{H(o)&&(H(o).scrollTop=H(o).scrollHeight)},scrollToIndex:e=>{setTimeout(()=>{H(o)&&(F(a,e*r()),H(o).scrollTop=e*r())},100)}},p=ll(),m=L(p),h=L(m);yo(h,21,()=>H(u),e=>e.id,(e,n)=>{var i=sl();Eo(L(i),()=>t.itemTemplate,()=>H(n),()=>H(n)._index),D(i),z(()=>{var e;return Xo(i,`height: ${(e=r())==null?``:e}px;`)}),G(e,i)}),D(h),D(m);var g=R(m,2),_=e=>{G(e,cl())};return mo(g,e=>{n().length===0&&e(_)}),D(p),Ps(p,e=>F(o,e),()=>H(o)),z(()=>{var e;Xo(m,`height: ${(e=H(s))==null?``:e}px;`),Xo(h,`transform: translateY(${H(c)*r()}px);`)}),Ua(`scroll`,p,d),G(e,p),Nt(f)}var dl=W(`- +`);function fl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,0),r=Hs(t,`min`,19,()=>-1/0),i=Hs(t,`max`,3,1/0),a=P(I(String(n())));Mi(()=>{F(a,String(n()),!0)});let o=()=>{var e;let o=parseFloat(H(a));isNaN(o)&&(o=n()),o=Math.max(r(),Math.min(i(),o)),n(o),F(a,String(o),!0),(e=t.onchange)==null||e.call(t,n())},s=(e,o)=>{var s;o.shiftKey&&(e*=10);let c=n()+e;c=Math.max(r(),Math.min(i(),c)),n(c),F(a,String(c),!0),(s=t.onchange)==null||s.call(t,n())},c=e=>{e.stopPropagation(),e.key===`Enter`?(o(),e.target.blur()):e.key===`Escape`&&(F(a,String(n()),!0),e.target.blur())};var l=dl(),u=L(l),d=R(u,2);us(d);var f=R(d,2);D(l),U(`click`,u,e=>s(-1,e)),Ua(`blur`,d,o),U(`keydown`,d,c),Cs(d,()=>H(a),e=>F(a,e)),U(`click`,f,e=>s(1,e)),G(e,l),Nt()}Wa([`click`,`keydown`]);var pl=W(``);function ml(e,t){Mt(t,!0);let n=Hs(t,`locked`,3,!1);var r=pl(),i=L(r),a=e=>{uc(e,{size:14})},o=e=>{cc(e,{size:14})};mo(i,e=>{n()?e(a):e(o,-1)}),D(r),z(()=>{Jo(r,1,`flex h-6 w-6 shrink-0 items-center justify-center rounded transition-colors focus:outline-none ${n()?`bg-frozen/20 text-frozen hover:bg-frozen/30`:`hover:bg-border text-gray-500 hover:text-gray-300`}`),ps(r,`title`,n()?`Unfreeze`:`Freeze`),ps(r,`aria-label`,n()?`Unfreeze state`:`Freeze state`)}),U(`click`,r,()=>{var e;return(e=t.ontoggle)==null?void 0:e.call(t,!n())}),G(e,r),Nt()}Wa([`click`]);var hl=W(`TrueFalse`),gl=W(``),_l=W(` `),vl=W(` `);function yl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetVarId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetVarId);e!==-1&&H(a).scrollToIndex(e),Q.targetVarId=null}});let o,s=P(!1),c=new Set,l=I({}),u=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||t.value!==void 0&&t.value!==null&&String(t.value).toLowerCase().includes(e));c=new Set(t.map(e=>e.id))}},d=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`variables`,e.id),r=Zc.isFavorite(`variables`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},f=()=>{F(n,q.vars.list(),!0),u(),d()},p=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(s)||(F(n,q.vars.list(),!0),d())},1e3);return()=>clearInterval(e)});let h=(e,t)=>{q.vars.set(e,t),Y.vars.has(e)&&X.freezeVar(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)};var g=vl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y);D(y),D(_);var x=R(_,2);Ps(ul(L(x),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{let r=Wn(()=>l[t().id]||typeof t().value);var i=_l(),a=L(i),o=L(a,!0);D(a);var c=R(a,2),u=L(c),f=L(u,!0);D(u),D(c);var p=R(c,2),g=L(p),_=L(g);{let e=Wn(()=>Zc.isFavorite(`variables`,t().id)?`fill-current`:``);bc(_,{size:16,get class(){return H(e)}})}D(g);var v=R(g,2),y=L(v,!0);D(v);var b=R(v,2),x=e=>{{let n=Wn(()=>Number(t().value)||0);fl(e,{get value(){return H(n)},onchange:e=>h(t().id,e)})}},S=e=>{var n=hl(),r=L(n);r.value=r.__value=`true`;var i=R(r);i.value=i.__value=`false`,D(n);var a;Qo(n),z(()=>{a!==(a=t().value?`true`:`false`)&&(n.value=n.__value=t().value?`true`:`false`,Zo(n,t().value?`true`:`false`))}),U(`change`,n,e=>h(t().id,e.currentTarget.value===`true`)),G(e,n)},ee=e=>{var n=gl();us(n),z(e=>ds(n,e),[()=>String(t().value===void 0||t().value===null?``:t().value)]),Ua(`blur`,n,e=>h(t().id,e.currentTarget.value)),U(`keydown`,n,e=>{e.stopPropagation(),e.key===`Enter`&&e.currentTarget.blur()}),G(e,n)};mo(b,e=>{H(r)===`number`?e(x):H(r)===`boolean`?e(S,1):e(ee,-1)});var C=R(b,2),w=L(C);{let e=Wn(()=>Y.vars.has(t().id));ml(w,{get locked(){return H(e)},ontoggle:e=>{X.freezeVar(t().id,e),F(n,[...H(n)],!0),d()}})}D(C),D(p),D(i),z((e,n,a)=>{Jo(i,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(o,n),ps(u,`title`,t().name),K(f,t().name),Jo(g,1,`mr-2 flex items-center justify-center transition-colors ${a==null?``:a}`),K(y,H(r)===`number`?`NUM`:H(r)===`string`?`STR`:`BOOL`)},[()=>Y.vars.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`variables`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,p,()=>F(s,!0)),U(`focusout`,p,()=>F(s,!1)),U(`click`,g,()=>{Zc.toggleFavorite(`variables`,t().id),d()}),U(`click`,v,()=>{(l[t().id]||typeof t().value)===`number`?l[t().id]=`string`:l[t().id]=`number`}),G(e,i)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(x),D(g),z(()=>{var e;ds(v,H(i)),K(b,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,p),G(e,g),Nt()}Wa([`input`,`focusin`,`focusout`,`click`,`change`,`keydown`]);var bl=W(``);function xl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,!1),r=()=>{var e;n(!n()),(e=t.onchange)==null||e.call(t,n())};var i=bl(),a=L(i);D(i),z(()=>{Jo(i,1,`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors ${n()?`bg-ok`:`bg-[#3a3f4d]`}`),Jo(a,1,`absolute top-[4px] h-4 w-4 rounded-full bg-white shadow transition-all ${n()?`left-[24px]`:`left-[4px]`}`)}),U(`click`,i,r),G(e,i),Nt()}Wa([`click`]);var Sl=W(` `),Cl=W(` All ON All OFF `);function wl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetSwitchId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetSwitchId);e!==-1&&H(a).scrollToIndex(e),Q.targetSwitchId=null}});let o,s=P(!1),c=new Set,l=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||(t.value?`true`:`false`).includes(e));c=new Set(t.map(e=>e.id))}},u=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`switches`,e.id),r=Zc.isFavorite(`switches`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},d=()=>{F(n,q.switches.list(),!0),l(),u()},f=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{l(),u()},300)};Ws(()=>{d();let e=setInterval(()=>{H(s)||(F(n,q.switches.list(),!0),u())},1e3);return()=>clearInterval(e)});let p=(e,t)=>{q.switches.set(e,t),Y.switches.has(e)&&X.freezeSwitch(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)},h=e=>{H(r).forEach(t=>p(t.id,e)),d(),zc.show(`All filtered switches turned ${e?`ON`:`OFF`}`,`success`)};var g=Cl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y),x=R(b,2),S=R(x,2),ee=L(S);D(S),D(y),D(_);var C=R(_,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{var r=Sl(),i=L(r),a=L(i,!0);D(i);var o=R(i,2),c=L(o),l=L(c,!0);D(c),D(o);var d=R(o,2),f=L(d),h=L(f);{let e=Wn(()=>Zc.isFavorite(`switches`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(f);var g=R(f,2);xl(g,{get value(){return t().value},onchange:e=>p(t().id,e)});var _=R(g,2),v=L(_);{let e=Wn(()=>Y.switches.has(t().id));ml(v,{get locked(){return H(e)},ontoggle:e=>{X.freezeSwitch(t().id,e),F(n,[...H(n)],!0),u()}})}D(_),D(d),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),Jo(c,1,`truncate text-sm select-text cursor-text ${t().value?`text-white font-bold`:`text-gray-400`}`),K(l,t().name),Jo(f,1,`flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.switches.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`switches`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),Ua(`mouseenter`,d,()=>F(s,!0)),Ua(`mouseleave`,d,()=>F(s,!1)),U(`click`,f,()=>{Zc.toggleFavorite(`switches`,t().id),u()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(g),z(()=>{var e;ds(v,H(i)),K(ee,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,f),U(`click`,b,()=>h(!0)),U(`click`,x,()=>h(!1)),G(e,g),Nt()}Wa([`input`,`click`]);var Tl=W(` `),El=W(` `),Dl=W(`Items Weapons Armors `);function Ol(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetItemKey!==null&&H(a)){let[e,t]=Q.targetItemKey.split(`:`);if(e===H(o)){if(H(r).length>0){let e=H(r).findIndex(e=>e.id===parseInt(t,10));e!==-1&&H(a).scrollToIndex(e),Q.targetItemKey=null}}else p(e)}});let o=P(I(Fc.Item)),s,c=P(!1),l=new Set,u=()=>{if(!H(i).trim())l=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||String(t.count).includes(e)||t.description&&t.description.toLowerCase().includes(e));l=new Set(t.map(e=>e.id))}},d=()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;F(r,H(n).filter(e=>l.has(e.id)).sort((t,n)=>{let r=Zc.isFavorite(e,t.id),i=Zc.isFavorite(e,n.id);return r&&!i?-1:!r&&i?1:t.id-n.id}),!0)},f=()=>{F(n,q.inv.list(H(o)),!0),u(),d()},p=e=>{F(o,e,!0),f(),H(a)&&H(a).resetScroll()},h=e=>{F(i,e.target.value,!0),clearTimeout(s),s=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(c)||(F(n,q.inv.list(H(o)),!0),d())},1e3);return()=>clearInterval(e)});let g=(e,t)=>{q.inv.setCount(H(o),e,t),Y.items.has(`${H(o)}:${e}`)&&X.freezeItem(H(o),e,!0)};var _=Dl(),v=L(_),y=L(v),b=L(y),x=R(b,2),S=R(x,2);D(y);var ee=R(y,2);us(ee),D(v);var C=R(v,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:48,itemTemplate:(e,t=m)=>{var r=El(),i=L(r),a=L(i,!0);D(i);var s=R(i,2),l=L(s),u=L(l,!0);D(l);var f=R(l,2),p=e=>{var n=Tl(),r=L(n,!0);D(n),z((e,t)=>{ps(n,`title`,e),K(r,t)},[()=>t().description.replace(/\n/g,` `),()=>t().description.replace(/\n/g,` `)]),G(e,n)};mo(f,e=>{t().description&&e(p)}),D(s);var h=R(s,2),_=L(h),v=L(_);{let e=Wn(()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`fill-current`:``);bc(v,{size:16,get class(){return H(e)}})}D(_);var y=R(_,2);{let e=Wn(()=>q.inv.maxStack(H(o),t().id));fl(y,{get value(){return t().count},min:0,get max(){return H(e)},onchange:e=>g(t().id,e)})}var b=R(y,2),x=L(b);{let e=Wn(()=>Y.items.has(`${H(o)}:${t().id}`));ml(x,{get locked(){return H(e)},ontoggle:e=>{X.freezeItem(H(o),t().id,e),F(n,[...H(n)],!0),d()}})}D(b),D(h),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),ps(l,`title`,t().name),K(u,t().name),Jo(_,1,`mr-1 flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.items.has(`${H(o)}:${t().id}`)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,h,()=>F(c,!0)),U(`focusout`,h,()=>F(c,!1)),U(`click`,_,()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;Zc.toggleFavorite(e,t().id),d()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(_),z(()=>{Jo(b,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Item?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(x,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Weapon?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(S,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Armor?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),ds(ee,H(i))}),U(`click`,b,()=>p(Fc.Item)),U(`click`,x,()=>p(Fc.Weapon)),U(`click`,S,()=>p(Fc.Armor)),U(`input`,ee,h),G(e,_),Nt()}Wa([`click`,`input`,`focusin`,`focusout`]);var kl=W(``),Al=W(` `),jl=W(` `),Ml=W(` `),Nl=W(`No skills in database.`),Pl=W(`Clear All States`),Fl=W(` ×`),Il=W(`No active states.`),Ll=W(` `),Rl=W(` Recover All Core Status Level EXP HP MP TP Parameters Skills States Select a state to apply... Add State`,1),zl=W(`Start a game or select an actor to edit stats.`),Bl=W(`Actors `);function Vl(e,t){Mt(t,!0);let n=P(I([])),r=P(null),i=P(null),a=P(null),o=P(``),s=P(``);Mi(()=>{Q.targetActorId!==null&&H(n).length>0&&(F(r,Q.targetActorId,!0),Q.targetActorId=null,Q.targetActorStat=null,c())});let c=()=>{F(n,J.list(),!0),H(r)===null&&H(n).length>0&&F(r,H(n)[0].id,!0),H(r)!==null&&F(i,J.get(H(r)),!0)};Ws(()=>{c();let e=setInterval(()=>{c()},1e3);return()=>clearInterval(e)});let l=e=>{F(r,e,!0),F(i,J.get(e),!0)},u=(e,t)=>{H(r)!==null&&(e===`hp`?J.setHp(H(r),t):e===`mp`?J.setMp(H(r),t):e===`tp`&&J.setTp(H(r),t),Y.stats.has(`${H(r)}:${e}`)&&X.freezeStat(H(r),e,!0),F(i,J.get(H(r)),!0))},d=(e,t)=>{H(r)!==null&&(J.setParam(H(r),e,t),F(i,J.get(H(r)),!0))},f=()=>{H(r)===null||!H(i)||(H(i).inParty?J.removeFromParty(H(r)):J.addToParty(H(r)),c())},p=(e,t)=>{H(r)!==null&&(t?J.forgetSkill(H(r),e):J.learnSkill(H(r),e),F(i,J.get(H(r)),!0))},m={[Lc.MHP]:`Max HP`,[Lc.MMP]:`Max MP`,[Lc.ATK]:`Attack`,[Lc.DEF]:`Defense`,[Lc.MAT]:`M. Attack`,[Lc.MDF]:`M. Defense`,[Lc.AGI]:`Agility`,[Lc.LUK]:`Luck`};var h=Bl(),g=L(h),_=R(L(g),2);yo(_,21,()=>H(n),ho,(e,t)=>{var n=Al(),i=L(n),a=L(i),o=e=>{G(e,kl())};mo(a,e=>{H(t).inParty&&e(o)});var s=R(a,2),c=L(s,!0);D(s),D(i);var u=R(i,2),d=L(u);D(u),D(n),z(()=>{var e;ps(n,`id`,`actor-btn-${H(t).id}`),Jo(n,1,`flex w-full items-center justify-between rounded px-2.5 py-2 text-left text-sm transition-colors ${H(r)===H(t).id?`bg-accent text-white font-semibold`:`hover:bg-border/50 text-gray-300`}`),K(c,H(t).name),K(d,`Lv.${(e=H(t).level)==null?``:e}`)}),U(`click`,n,()=>l(H(t).id)),G(e,n)}),D(_),D(g);var v=R(g,2),y=L(v),b=e=>{var t,n=Rl(),l=_i(n),h=L(l),g=L(h),_=L(g,!0);D(g);var v=R(g,2),y=L(v);D(v),D(h);var b=R(h,2),x=L(b),S=R(x,2),ee=L(S,!0);D(S),D(b),D(l);var C=R(l,2),w=L(C),te=R(L(w),2),ne=R(L(te),2),re=L(ne);fl(re,{get value(){return H(i).level},min:1,max:99,onchange:e=>{H(r)!==null&&(J.setLevel(H(r),e),Y.stats.has(`${H(r)}:level`)&&X.freezeStat(H(r),`level`,!0),F(i,J.get(H(r)),!0),c())}});var ie=R(re,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:level`));ml(ie,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`level`,e),F(i,J.get(H(r)),!0))}})}D(ne),D(te);var ae=R(te,2),oe=R(L(ae),2),se=L(oe);fl(se,{get value(){return H(i).exp},min:0,onchange:e=>{H(r)!==null&&(J.setExp(H(r),e),Y.stats.has(`${H(r)}:exp`)&&X.freezeStat(H(r),`exp`,!0),F(i,J.get(H(r)),!0),c())}});var ce=R(se,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:exp`));ml(ce,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`exp`,e),F(i,J.get(H(r)),!0))}})}D(oe),D(ae);var le=R(ae,2),ue=R(L(le),2),de=L(ue);fl(de,{get value(){return H(i).hp},min:0,get max(){return H(i).mhp},onchange:e=>u(`hp`,e)});var fe=R(de,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:hp`));ml(fe,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`hp`,e),F(i,J.get(H(r)),!0))}})}D(ue),D(le);var pe=R(le,2),me=R(L(pe),2),he=L(me);fl(he,{get value(){return H(i).mp},min:0,get max(){return H(i).mmp},onchange:e=>u(`mp`,e)});var ge=R(he,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:mp`));ml(ge,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`mp`,e),F(i,J.get(H(r)),!0))}})}D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve);fl(ye,{get value(){return H(i).tp},min:0,get max(){return H(i).mtp},onchange:e=>u(`tp`,e)});var be=R(ye,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:tp`));ml(be,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`tp`,e),F(i,J.get(H(r)),!0))}})}D(ve),D(_e),D(w);var xe=R(w,2);yo(R(L(xe),2),17,()=>H(i).params,e=>e.id,(e,t)=>{var n=jl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2),c=L(s);fl(c,{get value(){return H(t).value},min:1,onchange:e=>{d(H(t).id,e),Y.stats.has(`${H(r)}:param_${H(t).id}`)&&X.freezeStat(H(r),`param_${H(t).id}`,!0)}});var l=R(c,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:param_${H(t).id}`));ml(l,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`param_${H(t).id}`,e),F(i,J.get(H(r)),!0))}})}D(s),D(n),z(()=>{ps(n,`id`,`stat-param_${H(t).id}`),K(o,m[H(t).id]||`Stat`)}),G(e,n)}),D(xe),D(C);var Se=R(C,2),Ce=L(Se),we=R(L(Ce),2);us(we),D(Ce);var Te=R(Ce,2);yo(Te,21,()=>H(i).skills.filter(e=>!H(o).trim()||e.name.toLowerCase().includes(H(o).trim().toLowerCase())||e.id.toString().includes(H(o).trim())),e=>e.id,(e,t)=>{var n=Ml(),r=L(n),i=L(r);D(r);var a=R(r,2),o=L(a,!0);D(a),D(n),z(e=>{var n;K(i,`${e==null?``:e}: ${(n=H(t).name)==null?``:n}`),Jo(a,1,`rounded border px-3 py-1 text-xs font-semibold transition-colors ${H(t).learned?`border-danger/30 text-danger bg-danger/10 hover:bg-danger/20`:`border-accent/30 text-accent bg-accent/10 hover:bg-accent/20`}`),K(o,H(t).learned?`Forget`:`Learn`)},[()=>H(t).id.toString().padStart(3,`0`)]),U(`click`,a,()=>p(H(t).id,H(t).learned)),G(e,n)},e=>{G(e,Nl())}),D(Te),D(Se);var Ee=R(Se,2),De=L(Ee),Oe=R(L(De),2),ke=L(Oe);us(ke);var Ae=R(ke,2),je=e=>{var t=Pl();U(`click`,t,()=>{H(r)!==null&&(J.clearStates(H(r)),F(i,J.get(H(r)),!0))}),G(e,t)};mo(Ae,e=>{H(i).states.length>0&&e(je)}),D(Oe),D(De);var Me=R(De,2);yo(Me,21,()=>H(i).states,ho,(e,t)=>{var n=Fl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2);D(n),z(()=>K(o,H(t).name)),U(`click`,s,()=>{H(r)!==null&&(J.removeState(H(r),H(t).id),F(i,J.get(H(r)),!0))}),G(e,n)},e=>{G(e,Il())}),D(Me);var Ne=R(Me,2),Pe=L(Ne),Fe=L(Pe);Fe.value=(t=Fe.__value=null)!=null&&t!==void 0?t:``,yo(R(Fe),17,()=>J.listStates().filter(e=>!H(s).trim()||e.name.toLowerCase().includes(H(s).trim().toLowerCase())||e.id.toString().includes(H(s).trim())),ho,(e,t)=>{var n=Ll(),r=L(n);D(n);var i={};z(e=>{var a;if(K(r,`${e==null?``:e}: ${(a=H(t).name)==null?``:a}`),i!==(i=H(t).id)){var o;n.value=(o=n.__value=H(t).id)==null?``:o}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,n)}),D(Pe);var Ie=R(Pe,2);D(Ne),D(Ee),z(()=>{var e;K(_,H(i).name),K(y,`Actor ID: ${(e=H(i).id)==null?``:e}`),Jo(S,1,`rounded border px-3 py-1.5 text-xs font-semibold transition-colors ${H(i).inParty?`border-danger/30 bg-danger/20 text-danger hover:bg-danger/30`:`border-ok/30 bg-ok/20 text-ok hover:bg-ok/30`}`),K(ee,H(i).inParty?`Remove Party`:`Add Party`),Ie.disabled=H(a)===null}),U(`click`,x,()=>{H(r)!==null&&(J.recover(H(r)),F(i,J.get(H(r)),!0))}),U(`click`,S,f),Cs(we,()=>H(o),e=>F(o,e)),Cs(ke,()=>H(s),e=>F(s,e)),$o(Pe,()=>H(a),e=>F(a,e)),U(`click`,Ie,()=>{H(r)!==null&&H(a)!==null&&(J.addState(H(r),H(a)),F(i,J.get(H(r)),!0),F(a,null))}),G(e,n)},x=e=>{G(e,zl())};mo(y,e=>{H(i)?e(b):e(x,-1)}),D(v),D(h),G(e,h),Nt()}Wa([`click`]);function Hl(e){let t=e-1;return t*t*t+1}function Ul(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Hl}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=Wl(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function Wl(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var Gl=W(` `),Kl=W(` `),ql=W(` `),Jl=W(`Configure the hold key in the Keys panel.`),Yl=W(`Warning: Game is permanently sped up. Turn this back on to require holding a key.`),Xl=W(` `),Zl=W(` `),Ql=W(`Active Enemies `),$l=W(`LEAD`),eu=W(`⋮⋮ `),tu=W(`No active party members found (start/load a game).`),nu=W(`Quick Actions Party Resources Gold Steps Playtime Battle Settings God Mode One-Hit Kill Disable Encounters Movement Noclip (Walk Through Walls) Move Speed Game Speed Hold Key to Fast Forward Speed Multiplier Party Members Status `);function ru(e,t){Mt(t,!0);let n=P(0),r=P(0),i=P(0),a=P(4),o=P(!1),s=P(I([])),c=P(I([])),l=[{title:`System & Menus`,actions:[`quick_save`,`quick_load`,`open_save_scene`,`open_load_scene`,`goto_title`]},{title:`Battle Actions`,actions:[`force_victory`,`force_defeat`,`force_escape`,`trigger_encounter`]},{title:`Health Controls`,actions:[`party_recovery`,`party_wound`,`enemy_recovery`,`enemy_wound`]}],u=()=>{F(n,q.gold.get(),!0),F(r,q.party.steps(),!0),F(i,q.party.playtime(),!0),window.$gamePlayer&&F(a,window.$gamePlayer._moveSpeed||4,!0),F(o,!!(window.SceneManager&&window.SceneManager._scene&&window.SceneManager._scene.constructor.name===`Scene_Battle`)),H(o)&&window.$gameTroop?F(s,window.$gameTroop.members().map(e=>({ref:e,name:e.name(),hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(s,[],!0),window.$gameParty?F(c,window.$gameParty.members().map(e=>({ref:e,id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1,hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(c,[],!0)};Ws(()=>{u();let e=setInterval(u,1e3);return()=>clearInterval(e)});let d=e=>{q.gold.set(e),Y.gold!==null&&X.freezeGold(!0),F(n,q.gold.get(),!0)},f=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`},p=(e,t)=>{e.ref.setHp(t),u()},m=(e,t)=>{e.ref.setMp(t),u()},h=(e,t)=>{e.ref.setTp?e.ref.setTp(t):e.ref.tp=t,u()},g=P(null),_=(e,t)=>{e!==t&&window.$gameParty&&typeof window.$gameParty.swapOrder==`function`&&(window.$gameParty.swapOrder(e,t),u())};var v=nu(),y=L(v),b=R(L(y),2);yo(b,21,()=>l,ho,(e,t)=>{var n=ql(),r=L(n),i=L(r,!0);D(r);var a=R(r,2);yo(a,21,()=>H(t).actions,ho,(e,t)=>{let n=Wn(()=>nl.find(e=>e.id===H(t)));var r=eo(),i=_i(r),a=e=>{var t=Kl(),r=L(t),i=L(r,!0);D(r);var a=R(r,2),o=e=>{var t=Gl(),r=L(t,!0);D(t),z(e=>K(r,e),[()=>{var e;return Yc.fromString(((e=$.get(H(n).id))==null?void 0:e.keyStr)||``).asDisplayString()}]),G(e,t)},s=Wn(()=>{var e;return(e=$.get(H(n).id))==null?void 0:e.keyStr});mo(a,e=>{H(s)&&e(o)}),D(t),z(()=>K(i,H(n).name)),U(`click`,t,()=>{var e,t;(e=(t=H(n)).onEnter)==null||e.call(t),u()}),G(e,t)};mo(i,e=>{H(n)&&e(a)}),G(e,r)}),D(a),D(n),z(()=>K(i,H(t).title)),G(e,n)}),D(b),D(y);var x=R(y,2),S=L(x),ee=R(L(S),2),C=R(L(ee),2),w=L(C);fl(w,{get value(){return H(n)},min:0,max:99999999,onchange:d});var te=R(w,2);{let e=Wn(()=>Y.gold!==null);ml(te,{get locked(){return H(e)},ontoggle:e=>{X.freezeGold(e),u()}})}D(C),D(ee);var ne=R(ee,2),re=R(L(ne),2),ie=L(re,!0);D(re),D(ne);var ae=R(ne,2),oe=R(L(ae),2),se=L(oe,!0);D(oe),D(ae),D(S);var ce=R(S,2),le=R(L(ce),2),ue=L(le);xl(R(L(ue),2),{get value(){return Z.god},onchange:e=>Wc.setGod(e)}),D(ue);var de=R(ue,2);xl(R(L(de),2),{get value(){return Z.ohko},onchange:e=>Wc.setOhko(e)}),D(de);var fe=R(de,2);xl(R(L(fe),2),{get value(){return Z.noEncounter},onchange:e=>Wc.setNoEncounter(e)}),D(fe),D(le),D(ce),D(x);var pe=R(x,2),me=R(L(pe),2),he=L(me);xl(R(L(he),2),{get value(){return Y.noclip},onchange:e=>X.setNoclip(e)}),D(he);var ge=R(he,2);fl(R(L(ge),2),{get value(){return H(a)},min:1,max:8,onchange:e=>q.map.speed(e)}),D(ge),D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve),be=L(ye);xl(R(L(be),2),{get value(){return Z.speedUseKey},onchange:e=>{Wc.setSpeedUseKey(e),e?Wc.setSpeed(1):Wc.setSpeed(Z.speedBoost)}}),D(be);var xe=R(be,2),Se=e=>{G(e,Jl())},Ce=e=>{G(e,Yl())};mo(xe,e=>{Z.speedUseKey?e(Se):e(Ce,-1)}),D(ye);var we=R(ye,2),Te=R(L(we),2);yo(Te,20,()=>[.5,1,2,3,5,8],ho,(e,t)=>{var n=Xl(),r=L(n);D(n),z(()=>{Jo(n,1,`border-border h-7 w-9 rounded border text-xs transition-colors ${Z.speedBoost===t?`border-accent bg-accent text-white font-semibold`:`bg-bg hover:bg-border/50 text-gray-300`}`),K(r,`${t==null?``:t}x`)}),U(`click`,n,()=>{Wc.setSpeedBoost(t),Z.speedUseKey||Wc.setSpeed(t)}),G(e,n)}),D(Te),D(we),D(ve),D(_e);var Ee=R(_e,2),De=e=>{var t=Ql(),n=R(L(t),2);yo(n,21,()=>H(s),ho,(e,t)=>{var n=Zl(),r=L(n),i=L(r),a=L(i,!0);D(i),D(r);var o=R(r,2),s=L(o),c=L(s),l=L(c);D(c),fl(R(c,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(s);var u=R(s,2),d=L(u),f=L(d);D(d),fl(R(d,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(u);var g=R(u,2),_=L(g),v=L(_);D(_),fl(R(_,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(g),D(o),D(n),z(()=>{var e,n,r,i,o;K(a,H(t).name),K(l,`HP (${(e=H(t).hp)==null?``:e}/${(n=H(t).mhp)==null?``:n})`),K(f,`MP (${(r=H(t).mp)==null?``:r}/${(i=H(t).mmp)==null?``:i})`),K(v,`TP (${(o=H(t).tp)==null?``:o})`)}),G(e,n)}),D(n),D(t),G(e,t)};mo(Ee,e=>{H(o)&&H(s).length>0&&e(De)});var Oe=R(Ee,2),ke=R(L(Oe),2);yo(ke,31,()=>H(c),e=>e.id,(e,t,n)=>{var r=eu(),i=L(r),a=L(i),o=L(a),s=R(L(o),2),c=L(s),l=R(c),u=e=>{G(e,$l())};mo(l,e=>{H(n)===0&&e(u)}),D(s),D(o);var d=R(o,2),f=L(d);D(d),D(a);var v=R(a,2),y=L(v),b=L(y),x=L(b);D(b),fl(R(b,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(y);var S=R(y,2),ee=L(S),C=L(ee);D(ee),fl(R(ee,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(S);var w=R(S,2),te=L(w),ne=L(te);D(te),fl(R(te,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(w),D(v),D(i),D(r),z(()=>{var e,o,s,l,u,d,p;Jo(r,1,`rounded p-2.5 transition-all duration-200 ${H(g)===H(n)?`border border-dashed border-accent/50 bg-accent/5`:`border border-border bg-bg`}`),Jo(i,1,`space-y-2 ${H(g)===H(n)?`invisible`:``}`),Jo(a,1,`flex w-full items-center justify-between pb-2 text-xs font-bold text-white ${H(g)===null?`cursor-grab active:cursor-grabbing`:``}`),K(c,`${(e=H(t).name)==null?``:e} `),K(f,`Lv.${(o=H(t).level)==null?``:o}`),K(x,`HP (${(s=H(t).hp)==null?``:s}/${(l=H(t).mhp)==null?``:l})`),K(C,`MP (${(u=H(t).mp)==null?``:u}/${(d=H(t).mmp)==null?``:d})`),K(ne,`TP (${(p=H(t).tp)==null?``:p})`)}),Ua(`dragenter`,r,e=>e.preventDefault()),Ua(`dragover`,r,e=>{if(e.preventDefault(),H(g)!==null&&H(g)!==H(n)){let t=e.currentTarget.getBoundingClientRect(),r=t.top+t.height/2;if(H(g)H(n)&&e.clientY>r)return;_(H(g),H(n)),F(g,H(n),!0)}}),Ua(`dragstart`,a,e=>{if(e.dataTransfer){e.dataTransfer.effectAllowed=`move`;let t=e.currentTarget.closest(`[role="listitem"]`);t&&e.dataTransfer.setDragImage(t,20,20)}setTimeout(()=>{F(g,H(n),!0)},0)}),Ua(`dragend`,a,()=>{F(g,null)}),Io(r,()=>Ul,()=>({duration:250})),G(e,r)},e=>{G(e,tu())}),D(ke),D(Oe),D(v),z(e=>{K(ie,H(r)),K(se,e)},[()=>f(H(i))]),Ua(`dragenter`,Oe,e=>e.preventDefault()),Ua(`dragover`,Oe,e=>e.preventDefault()),Ua(`dragenter`,ke,e=>e.preventDefault()),Ua(`dragover`,ke,e=>e.preventDefault()),G(e,v),Nt()}Wa([`click`]);var iu=W(` `),au=W(`No saved locations yet.`),ou=W(` Teleport `),su=W(`Teleport Target Map Point of Interest (POI) -- Select a POI -- X Y Teleport Now Saved Locations Save Current `);function cu(e,t){Mt(t,!0);let n=P(I({mapId:0,x:0,y:0,dir:0})),r=P(I([])),i=P(0),a=P(0),o=P(0),s=P(I([])),c=P(``),l=P(``),u=P(``);Mi(()=>{H(o)>0&&q.map.loadMapEvents(H(o)).then(e=>{F(s,e,!0),e.find(e=>e.id.toString()===H(c))||F(c,``)})});let d=P(I([])),f=P(``),p=()=>{let e=q.map.current();e&&(F(n,e,!0),F(o,H(o)||e.mapId,!0),F(i,e.x,!0),F(a,e.y,!0)),F(r,q.map.list(),!0);try{let e=localStorage.getItem(`forge:locations`);e&&F(d,JSON.parse(e),!0)}catch(e){}};Ws(()=>{p();let e=setInterval(()=>{let e=q.map.current();e&&(e.mapId!==H(n).mapId||e.x!==H(n).x||e.y!==H(n).y)&&F(n,e,!0)},1e3);return()=>clearInterval(e)});let m=()=>{q.map.teleport(H(o),H(i),H(a),0,0)},h=()=>{let e=q.map.current();if(!e)return;let t=H(r).find(t=>t.id===e.mapId);F(d,[...H(d),{id:Date.now().toString(),name:H(f)||`Saved Location`,mapId:e.mapId,mapName:t?t.name:`Map ${e.mapId}`,x:e.x,y:e.y}],!0),F(f,``),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},g=e=>{F(d,H(d).filter(t=>t.id!==e),!0),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},_=e=>{q.map.teleport(e.mapId,e.x,e.y,0,0)};var v=su(),y=L(v),b=R(L(y),2),x=L(b);D(b);var S=R(b,2),ee=L(S),C=L(ee),w=R(L(C),2);us(w),D(C);var te=R(C,2);yo(te,21,()=>H(r).filter(e=>!H(l).trim()||e.name.toLowerCase().includes(H(l).trim().toLowerCase())||e.id.toString().includes(H(l).trim())),ho,(e,t)=>{var r=iu(),i=L(r);D(r);var a={};z(e=>{var o;if(K(i,`${H(t).id===H(n).mapId?`[CURRENT] `:``}${e==null?``:e}: ${(o=H(t).name)==null?``:o}`),a!==(a=H(t).id)){var s;r.value=(s=r.__value=H(t).id)==null?``:s}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,r)}),D(te),D(ee);var ne=R(ee,2),re=L(ne),ie=R(L(re),2);us(ie),D(re);var ae=R(re,2),oe=L(ae);oe.value=oe.__value=``,yo(R(oe),17,()=>H(s).filter(e=>!H(u).trim()||e.name.toLowerCase().includes(H(u).trim().toLowerCase())||e.id.toString().includes(H(u).trim())),ho,(e,t)=>{var n=iu(),r=L(n);D(n);var i={};z(()=>{var e,a,o;if(K(r,`${(e=H(t).name)==null?``:e} (X:${(a=H(t).x)==null?``:a}, Y:${(o=H(t).y)==null?``:o})`),i!==(i=H(t).id)){var s;n.value=(s=n.__value=H(t).id)==null?``:s}}),G(e,n)}),D(ae),D(ne);var se=R(ne,2),ce=L(se),le=R(L(ce),2);us(le),D(ce);var ue=R(ce,2),de=R(L(ue),2);us(de),D(ue),D(se);var fe=R(se,2);D(S),D(y);var pe=R(y,2),me=R(L(pe),2),he=L(me);us(he);var ge=R(he,2);D(me);var _e=R(me,2),ve=L(_e),ye=e=>{G(e,au())},be=e=>{var t=eo();yo(_i(t),17,()=>H(d),e=>e.id,(e,t)=>{var n=ou(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o);D(o),D(r);var c=R(r,2),l=L(c),u=R(l,2);Ec(L(u),{size:14}),D(u),D(c),D(n),z(()=>{var e,n,r,i;K(a,H(t).name),K(s,`${(e=H(t).mapName)==null?``:e} (Map ${(n=H(t).mapId)==null?``:n}) • X:${(r=H(t).x)==null?``:r} Y:${(i=H(t).y)==null?``:i}`)}),U(`click`,l,()=>_(H(t))),U(`click`,u,()=>g(H(t).id)),G(e,n)}),G(e,t)};mo(ve,e=>{H(d).length===0?e(ye):e(be,-1)}),D(_e),D(pe),D(v),z(()=>{var e,t,r;return K(x,`Current: Map ${(e=H(n).mapId)==null?``:e} (${(t=H(n).x)==null?``:t}, ${(r=H(n).y)==null?``:r})`)}),Cs(w,()=>H(l),e=>F(l,e)),$o(te,()=>H(o),e=>F(o,e)),Cs(ie,()=>H(u),e=>F(u,e)),U(`change`,ae,e=>{let t=parseInt(e.target.value);if(isNaN(t))return;let n=H(s).find(e=>e.id===t);n&&(F(i,n.x,!0),F(a,n.y,!0))}),$o(ae,()=>H(c),e=>F(c,e)),Cs(le,()=>H(i),e=>F(i,e)),Cs(de,()=>H(a),e=>F(a,e)),U(`click`,fe,m),U(`keydown`,he,e=>{e.stopPropagation(),e.key===`Enter`&&h()}),Cs(he,()=>H(f),e=>F(f,e)),U(`click`,ge,h),G(e,v),Nt()}Wa([`change`,`click`,`keydown`]);var lu=W(`Confirm? Cancel`,1),uu=W(`Run`),du=W(` `),fu=W(` `);function pu(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(null),o,s=()=>{let e=H(n);if(H(i).trim()){let t=H(i).trim().toLowerCase();e=H(n).filter(e=>String(e.id)===t||e.name.toLowerCase().includes(t))}F(r,e.sort((e,t)=>{let n=Zc.isFavorite(`commonEvents`,e.id),r=Zc.isFavorite(`commonEvents`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},c=()=>{F(n,q.commonev.list(),!0),s()},l=e=>{F(i,e.target.value,!0),s()};Ws(()=>{c()});let u=e=>{H(a)===e?(q.commonev.run(e),F(a,null),clearTimeout(o)):(F(a,e,!0),clearTimeout(o),o=setTimeout(()=>{H(a)===e&&F(a,null)},3e3))},d=()=>{F(a,null),clearTimeout(o)};var f=fu(),p=L(f),h=L(p);us(h);var g=R(h,2),_=L(g);D(g),D(p);var v=R(p,2);ul(L(v),{get items(){return H(r)},itemHeight:38,itemTemplate:(e,t=m)=>{var n=du(),r=L(n),i=L(r),o=L(i,!0);D(i);var c=R(i,2),l=L(c,!0);D(c),D(r);var f=R(r,2),p=L(f),h=L(p);{let e=Wn(()=>Zc.isFavorite(`commonEvents`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(p);var g=R(p,2),_=L(g),v=e=>{var n=lu(),r=_i(n),i=R(r,2);U(`click`,r,()=>u(t().id)),U(`click`,i,d),G(e,n)},y=e=>{var n=uu();U(`click`,n,()=>u(t().id)),G(e,n)};mo(_,e=>{H(a)===t().id?e(v):e(y,-1)}),D(g),D(f),D(n),z((e,n)=>{K(o,e),ps(c,`title`,t().name),K(l,t().name),Jo(p,1,`mr-2 flex items-center justify-center transition-colors ${n==null?``:n}`)},[()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`commonEvents`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`click`,p,()=>{Zc.toggleFavorite(`commonEvents`,t().id),s()}),G(e,n)},$$slots:{itemTemplate:!0}}),D(v),D(f),z(()=>{var e;ds(h,H(i)),K(_,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,h,l),G(e,f),Nt()}Wa([`input`,`click`]);var mu=W(`Unfreeze All`),hu=W(` Unfreeze`),gu=W(`No active data locks. Use the lock icon on variables, switches, items, or stats to freeze their value.`),_u=W(` `);function vu(e,t){Mt(t,!0);let n=P(I([])),r=()=>{F(n,X.summary(),!0)};Ws(()=>{r();let e=setInterval(r,1e3);return()=>clearInterval(e)});let i=e=>{if(e.type===`var`)X.freezeVar(e.id,!1);else if(e.type===`switch`)X.freezeSwitch(e.id,!1);else if(e.type===`item`){let[t,n]=e.key.split(`:`);X.freezeItem(t,parseInt(n,10),!1)}else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);X.freezeStat(parseInt(t,10),n,!1)}else e.type===`gold`&&X.freezeGold(!1);r()},a=e=>{if(e.type===`var`)Q.targetVarId=e.id,Q.activeTab=Ic.Vars;else if(e.type===`switch`)Q.targetSwitchId=e.id,Q.activeTab=Ic.Switches;else if(e.type===`item`)Q.targetItemKey=e.key,Q.activeTab=Ic.Inv;else if(e.type===`gold`)Q.activeTab=Ic.General;else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);Q.targetActorId=parseInt(t,10),Q.targetActorStat=n,Q.activeTab=Ic.Actors}},o=()=>{X.clearAll(),r()},s=e=>e===`var`?`VAR`:e===`switch`?`SW`:e===`item`?`ITEM`:e===`stat`?`STAT`:e===`param`?`PARAM`:e===`gold`?`GOLD`:`LOCK`,c=e=>e===`var`?`border-accent/30 bg-accent/10 text-accent`:e===`switch`?`border-ok/30 bg-ok/10 text-ok`:e===`item`?`border-warn/30 bg-warn/10 text-warn`:e===`stat`?`border-danger/30 bg-danger/10 text-danger`:e===`param`?`border-fuchsia-500/30 bg-fuchsia-500/10 text-fuchsia-500`:e===`gold`?`border-yellow-500/30 bg-yellow-500/10 text-yellow-500`:`border-gray-500/30 bg-gray-500/10 text-gray-400`;var l=_u(),u=L(l),d=L(u),f=L(d);D(d);var p=R(d,2),m=e=>{var t=mu();U(`click`,t,o),G(e,t)};mo(p,e=>{H(n).length>0&&e(m)}),D(u);var h=R(u,2);yo(h,21,()=>H(n),ho,(e,t)=>{var n=hu(),r=L(n),o=L(r),l=L(o,!0);D(o);var u=R(o,2),d=L(u,!0);D(u),D(r);var f=R(r,2),p=L(f),m=L(p,!0);D(p);var h=R(p,2);D(f),D(n),z((e,n)=>{Jo(o,1,`rounded border px-1.5 py-0.5 text-[10px] font-bold font-mono tracking-wide ${e==null?``:e}`),K(l,n),ps(u,`title`,H(t).label),K(d,H(t).label),K(m,typeof H(t).value==`boolean`?H(t).value?`ON`:`OFF`:H(t).value)},[()=>c(H(t).type),()=>s(H(t).type)]),U(`keydown`,n,e=>e.key===`Enter`&&a(H(t))),U(`click`,n,()=>a(H(t))),U(`click`,h,e=>{e.stopPropagation(),i(H(t))}),G(e,n)},e=>{G(e,gu())}),D(h),D(l),z(()=>{var e;return K(f,`${(e=H(n).length)==null?``:e} active locks`)}),G(e,l),Nt()}Wa([`click`,`keydown`]);var yu=W(`Press a key...`),bu=W(` `),xu=W(``),Su=W(` `);function Cu(e,t){Mt(t,!0);let n=Hs(t,`value`,15,``),r=Hs(t,`required`,3,!1),i=Hs(t,`combiningKeyAlone`,3,!1),a=P(!1),o=()=>{F(a,!0);let e=e=>{var a;e.preventDefault(),e.stopPropagation();let o=Yc.fromEvent(e);o.isCombiningKey()&&!i()||(n(o.asString()),(a=t.onchange)==null||a.call(t,n()),r())},r=()=>{F(a,!1),window.removeEventListener(`keydown`,e,{capture:!0})};window.addEventListener(`keydown`,e,{capture:!0}),setTimeout(()=>{window.addEventListener(`click`,r,{capture:!0,once:!0})},100)},s=e=>{if(!e)return`None`;try{return Yc.fromString(e).asDisplayString()}catch(t){return e}};var c=Su(),l=L(c),u=e=>{G(e,yu())},d=e=>{var t=bu(),r=L(t,!0);D(t),z(e=>{Jo(t,1,`border-border bg-bg2 hover:bg-border/50 flex h-8 flex-1 items-center rounded border px-3 text-sm font-medium transition-colors ${n()?`text-white`:`text-gray-500`}`),K(r,e)},[()=>s(n())]),U(`click`,t,o),G(e,t)};mo(l,e=>{H(a)?e(u):e(d,-1)});var f=R(l,2),p=e=>{var r=xu();Mc(L(r),{size:14}),D(r),U(`click`,r,()=>{var e;n(``),(e=t.onchange)==null||e.call(t,n())}),G(e,r)};mo(f,e=>{!r()&&n()&&!H(a)&&e(p)}),D(c),G(e,c),Nt()}Wa([`click`]);var wu=W(` `),Tu=W(` Restore Defaults `);function Eu(e,t){Mt(t,!0);let n=P(I([])),r=P(``),i=P(I([])),a=()=>{if(!H(r).trim())F(i,H(n),!0);else{let e=H(r).trim().toLowerCase();F(i,H(n).filter(t=>t.name.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)||t.keyStr.toLowerCase().includes(e)),!0)}},o=()=>{F(n,$.shortcuts.map(e=>({...e})),!0),a()};Ws(()=>{o()});let s=e=>{F(r,e.target.value,!0),a()},c=(e,t)=>{$.update(e,{keyStr:t}),o()},l=(e,t)=>{$.update(e,{enabled:t}),o()},u=()=>{localStorage.removeItem(`forge:shortcuts`),zc.show(`Defaults restored. Please reload the game.`,`success`)};var d=Tu(),f=L(d),p=L(f);us(p);var m=R(p,2);D(f);var h=R(f,2);yo(h,21,()=>H(i),e=>e.id,(e,t)=>{var n=wu(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o,!0);D(o),D(r);var u=R(r,2),d=L(u);{let e=Wn(()=>H(t).id===`speed_hold`||H(t).id===`skip_message`);Cu(d,{get value(){return H(t).keyStr},get required(){return H(t).required},get combiningKeyAlone(){return H(e)},onchange:e=>c(H(t).id,e)})}D(u);var f=R(u,2);xl(L(f),{get value(){return H(t).enabled},onchange:e=>l(H(t).id,e)}),D(f),D(n),z(()=>{Jo(i,1,`font-semibold text-sm ${H(t).enabled?`text-white`:`text-gray-500`}`),K(a,H(t).name),K(s,H(t).desc)}),G(e,n)}),D(h),D(d),z(()=>ds(p,H(r))),U(`input`,p,s),U(`click`,m,u),G(e,d),Nt()}Wa([`input`,`click`]),yt();var Du=Ls(()=>Xc),Ou=W(`UI Preferences Inactive Opacity Controls how transparent the panel becomes when the mouse leaves. Remember Window Position Save the exact window dimensions and position between game boots. Auto-Open on Boot Automatically display the Forge panel when the game finishes loading. Show Launcher Icon Display a draggable icon to open the panel without a shortcut. Gameplay Quick Save / Load Slot The save file slot used by the Quick Save and Quick Load shortcuts. Data Management Factory Reset Wipes all Forge settings, locks, and saved layout data. Reset Everything`);function ku(e,t){Mt(t,!1);let n=()=>Zc.save();Fs();var r=Ou(),i=L(r),a=R(L(i),2),o=R(L(a),2);fl(L(o),{get value(){return Du().inactiveOpacity},min:10,max:100,onchange:e=>{Du(Du().inactiveOpacity=e),n()}}),D(o),D(a);var s=R(a,2);xl(R(L(s),2),{onchange:()=>n(),get value(){return Du().rememberPosition},set value(e){Du(Du().rememberPosition=e)},$$legacy:!0}),D(s);var c=R(s,2);xl(R(L(c),2),{onchange:()=>n(),get value(){return Du().autoOpen},set value(e){Du(Du().autoOpen=e)},$$legacy:!0}),D(c);var l=R(c,2);xl(R(L(l),2),{onchange:()=>n(),get value(){return Du().showLauncher},set value(e){Du(Du().showLauncher=e)},$$legacy:!0}),D(l),D(i);var u=R(i,2),d=R(L(u),2),f=R(L(d),2);fl(L(f),{get value(){return Du().quickSaveSlot},min:1,max:20,onchange:e=>{Du(Du().quickSaveSlot=e),n()}}),D(f),D(d),D(u);var p=R(u,2),m=R(L(p),2),h=R(L(m),2);D(m),D(p),D(r),U(`click`,h,()=>Zc.resetAll()),G(e,r),Nt()}Wa([`click`]);var Au=W(` No logs recorded yet.`),ju=W(` `),Mu=W(`Narrator / Unknown`),Nu=W(` `),Pu=W(`Game Dialogue Logs CLEAR `);function Fu(e,t){Mt(t,!0);let n=P(void 0),r=e=>{let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`};Mi(()=>{Qc.entries.length&&setTimeout(()=>{var e,t;H(n)&&((e=(t=H(n)).scrollToBottom)==null||e.call(t))},10)});var i=Pu(),a=L(i),o=L(a),s=R(L(o),2);wc(L(s),{size:14}),ut(2),D(s),D(o);var c=R(o,2),l=L(c),u=e=>{var t=Au();mc(L(t),{size:32,class:`opacity-50`}),ut(2),D(t),G(e,t)},d=e=>{Ps(ul(e,{get items(){return Qc.entries},itemHeight:80,containerHeight:400,itemTemplate:(e,t=m)=>{var n=Nu(),i=L(n),a=L(i),o=e=>{var n=ju(),r=L(n,!0);D(n),z(()=>K(r,t().speaker)),G(e,n)},s=e=>{G(e,Mu())};mo(a,e=>{t().speaker?e(o):e(s,-1)});var c=R(a,2),l=L(c,!0);D(c),D(i);var u=R(i,2),d=L(u,!0);D(u),D(n),z(e=>{K(l,e),K(d,t().text)},[()=>r(t().timestamp)]),G(e,n)},$$slots:{itemTemplate:!0}}),e=>F(n,e,!0),()=>H(n))};mo(l,e=>{Qc.entries.length===0?e(u):e(d,-1)}),D(c),D(a),D(i),U(`click`,s,()=>tl.clear()),G(e,i),Nt()}Wa([`click`]);var Iu=W(` `),Lu=W(`Forge `),Ru=W(` `),zu=W(` `,1);function Bu(e,t){Mt(t,!0),Mi(()=>{let e=document.getElementById(`forge-mvmz-host`);if(!e)return;let t=!1,n=()=>{t=!1},r=[`mousedown`,`mousemove`,`mouseup`,`click`,`dblclick`,`pointerdown`,`pointermove`,`pointerup`,`contextmenu`,`wheel`,`touchstart`,`touchmove`,`touchend`,`keydown`,`keyup`],i=e=>{(e.type===`mousedown`||e.type===`pointerdown`||e.type===`touchstart`)&&(t=!0);let n=e.type===`mousemove`||e.type===`pointermove`||e.type===`touchmove`,r=e.type===`mouseup`||e.type===`pointerup`||e.type===`touchend`;if(n){let n=!1;if(`buttons`in e?n=e.buttons>0:`touches`in e&&(n=e.touches.length>0),n&&!t)return}r&&!t||e.stopPropagation()};if(window.addEventListener(`mouseup`,n,{capture:!0}),window.addEventListener(`pointerup`,n,{capture:!0}),window.addEventListener(`touchend`,n,{capture:!0}),Q.visible)for(let t of r)e.addEventListener(t,i,!1);else for(let t of r)e.removeEventListener(t,i,!1);return()=>{window.removeEventListener(`mouseup`,n,{capture:!0}),window.removeEventListener(`pointerup`,n,{capture:!0}),window.removeEventListener(`touchend`,n,{capture:!0});for(let t of r)e.removeEventListener(t,i,!1)}});let n=[{id:Ic.General,label:`General`},{id:Ic.Vars,label:`Variables`},{id:Ic.Switches,label:`Switches`},{id:Ic.Inv,label:`Inventory`},{id:Ic.Actors,label:`Actors`},{id:Ic.Map,label:`Map`},{id:Ic.CommonEv,label:`Events`},{id:Ic.Locks,label:`Locks`},{id:Ic.Logs,label:`Logs`},{id:Ic.Shortcuts,label:`Keys`},{id:Ic.Settings,label:`Settings`}],r=P(0),i=P(0),a=P(840),o=P(520),s=P(!1);Ws(()=>{Zc.load(),X.install(),Wc.install(),tl.install(),$.init(nl);try{let e=JSON.parse(localStorage.getItem(`forge:panel`)||`null`);e&&Xc.rememberPosition?(F(r,e.x,!0),F(i,e.y,!0),F(a,e.w,!0),F(o,e.h,!0)):typeof window<`u`&&(F(r,0),F(i,0),F(a,Math.min(840,window.innerWidth||840),!0),F(o,Math.min(520,window.innerHeight||520),!0));let t=localStorage.getItem(`forge:lastTab`);t&&Object.values(Ic).includes(t)&&(Q.activeTab=t)}catch(e){}Xc.autoOpen&&!Q.visible&&(Q.visible=!0)});let c=()=>{Xc.rememberPosition&&localStorage.setItem(`forge:panel`,JSON.stringify({x:H(r),y:H(i),w:H(a),h:H(o)})),localStorage.setItem(`forge:lastTab`,Q.activeTab)},l=P(!1),u=P(0),d=P(0),f=P(0),p=P(0),m=e=>{H(l)&&(F(r,Math.max(0,Math.min(window.innerWidth-H(a),H(f)+e.clientX-H(u))),!0),F(i,Math.max(0,Math.min(window.innerHeight-H(o),H(p)+e.clientY-H(d))),!0))},h=()=>{F(l,!1),window.removeEventListener(`mousemove`,m,!0),window.removeEventListener(`mouseup`,h,!0),c()},g=e=>{e.target.closest(`button, input, select`)||(F(l,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(f,H(r),!0),F(p,H(i),!0),window.addEventListener(`mousemove`,m,!0),window.addEventListener(`mouseup`,h,!0))},_=P(!1),v=P(0),y=P(0),b=e=>{H(_)&&(F(a,Math.max(560,Math.min(window.innerWidth-H(r),H(v)+e.clientX-H(u))),!0),F(o,Math.max(360,Math.min(window.innerHeight-H(i),H(y)+e.clientY-H(d))),!0))},x=()=>{F(_,!1),window.removeEventListener(`mousemove`,b,!0),window.removeEventListener(`mouseup`,x,!0),c()},S=e=>{F(_,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(v,H(a),!0),F(y,H(o),!0),window.addEventListener(`mousemove`,b,!0),window.addEventListener(`mouseup`,x,!0),e.stopPropagation()};var ee=zu(),C=_i(ee),w=e=>{var t=Lu(),u=L(t),d=L(u),f=R(d,2);yo(f,21,()=>n,ho,(e,t)=>{var n=Iu(),r=L(n),i=e=>{Ac(e,{size:14})},a=e=>{ic(e,{size:14})},o=e=>{Sc(e,{size:14})},s=e=>{gc(e,{size:14})},l=e=>{Oc(e,{size:14})},u=e=>{fc(e,{size:14})},d=e=>{Pc(e,{size:14})},f=e=>{uc(e,{size:14})},p=e=>{mc(e,{size:14})},m=e=>{oc(e,{size:14})},h=e=>{vc(e,{size:14})};mo(r,e=>{H(t).id===`general`?e(i):H(t).id===`vars`?e(a,1):H(t).id===`switches`?e(o,2):H(t).id===`inv`?e(s,3):H(t).id===`actors`?e(l,4):H(t).id===`map`?e(u,5):H(t).id===`commonev`?e(d,6):H(t).id===`locks`?e(f,7):H(t).id===`logs`?e(p,8):H(t).id===`shortcuts`?e(m,9):H(t).id===`settings`&&e(h,10)});var g=R(r,2),_=L(g,!0);D(g),D(n),z(()=>{Jo(n,1,`w-full text-left rounded px-3 py-2 text-xs font-semibold transition-all flex items-center space-x-2.5 focus:outline-none ${Q.activeTab===H(t).id?`bg-[#7ba4ff]/10 text-[#7ba4ff] shadow-sm`:`text-gray-400 hover:bg-[#2a2d3a] hover:text-gray-200`}`),K(_,H(t).label)}),U(`click`,n,()=>{var e;Q.activeTab=H(t).id,(e=window.getSelection())==null||e.removeAllRanges(),c()}),G(e,n)}),D(f);var p=R(f,2),m=L(p);ps(m,`title`,`1.0.0`),m.textContent=`1.0.0`,D(p),D(u);var h=R(u,2),v=L(h),y=L(v),b=L(y,!0);D(y);var x=R(y,2);Mc(L(x),{size:14}),D(x),D(v);var ee=R(v,2),C=L(ee),w=e=>{yl(e,{})},te=e=>{wl(e,{})},ne=e=>{Ol(e,{})},re=e=>{Vl(e,{})},ie=e=>{ru(e,{})},ae=e=>{cu(e,{})},oe=e=>{pu(e,{})},se=e=>{vu(e,{})},ce=e=>{Fu(e,{})},le=e=>{Eu(e,{})},ue=e=>{ku(e,{})};mo(C,e=>{Q.activeTab===Ic.Vars?e(w):Q.activeTab===Ic.Switches?e(te,1):Q.activeTab===Ic.Inv?e(ne,2):Q.activeTab===Ic.Actors?e(re,3):Q.activeTab===Ic.General?e(ie,4):Q.activeTab===Ic.Map?e(ae,5):Q.activeTab===Ic.CommonEv?e(oe,6):Q.activeTab===Ic.Locks?e(se,7):Q.activeTab===Ic.Logs?e(ce,8):Q.activeTab===Ic.Shortcuts?e(le,9):Q.activeTab===Ic.Settings&&e(ue,10)}),D(ee),D(h),il(R(h,2),{onmousedown:S}),D(t),z(e=>{var n,c,u,d;Xo(t,`opacity: ${H(l)||H(_)||H(s)?1:Xc.inactiveOpacity/100}; left: ${(n=H(r))==null?``:n}px; top: ${(c=H(i))==null?``:c}px; width: ${(u=H(a))==null?``:u}px; height: ${(d=H(o))==null?``:d}px; background: #13151a; color: #d4d8e3;`),K(b,e)},[()=>{var e;return((e=n.find(e=>e.id===Q.activeTab))==null?void 0:e.label)||``}]),Ua(`mouseenter`,t,()=>F(s,!0)),Ua(`mouseleave`,t,()=>F(s,!1)),U(`mousedown`,d,g),U(`mousedown`,v,g),U(`click`,x,()=>Q.visible=!1),G(e,t)};mo(C,e=>{Q.visible&&e(w)});var te=R(C,2);yo(te,21,()=>zc.toasts,e=>e.id,(e,t)=>{var n=Ru(),r=L(n),i=R(r,2),a=L(i,!0);D(i),D(n),z(()=>{Xo(n,`background: #1a1d24; border-color: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`}; opacity: 0.95; min-width: 160px; max-width: 320px;`),Xo(r,`background: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`};`),K(a,H(t).message)}),G(e,n)}),D(te),ol(R(te,2),{}),G(e,ee),Nt()}Wa([`mousedown`,`click`]);var Vu=`forge-mvmz-host`,Hu=document.getElementById(Vu);Hu||(Hu=document.createElement(`div`),Hu.id=Vu,Hu.style.position=`fixed`,Hu.style.top=`0`,Hu.style.left=`0`,Hu.style.width=`100vw`,Hu.style.height=`100vh`,Hu.style.pointerEvents=`none`,Hu.style.zIndex=`2147483647`,document.body.appendChild(Hu));var Uu=document.createElement(`style`);Uu.textContent=`#${Vu} { z-index: 2147483647 !important; }`,document.head.appendChild(Uu);var Wu=null,Gu;typeof Hu.attachShadow==`function`?(Wu=Hu.attachShadow({mode:`open`}),Gu=Wu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,Wu.appendChild(e)}}},0)):(Gu=Hu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,document.head.appendChild(e)}}},0));var Ku=document.createElement(`div`);Ku.style.pointerEvents=`none`,Ku.style.width=`100%`,Ku.style.height=`100%`,Gu.appendChild(Ku);try{to(Bu,{target:Ku})}catch(e){console.error(`[FORGE] Error mounting Svelte App:`,e)}if(window.Input!==void 0&&window.Input._onKeyDown){let e=window.Input._onKeyDown;window.Input._onKeyDown=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}if(window.Input!==void 0&&window.Input._onKeyUp){let e=window.Input._onKeyUp;window.Input._onKeyUp=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}})(); \ No newline at end of file diff --git a/util/forge/upstream/Forge_MZ.js b/util/forge/upstream/Forge_MZ.js index 98111b9..7023672 100644 --- a/util/forge/upstream/Forge_MZ.js +++ b/util/forge/upstream/Forge_MZ.js @@ -1,1115 +1,28 @@ //============================================================================= -// Forge_MZ.js — In-game cheat & editor overlay for RPG Maker MZ +// forge.js - In-game cheat & editor overlay for RPG Maker MV/MZ //============================================================================= /*: - * @target MZ - * @plugindesc Forge — modern in-game editor: variables, switches, items, actors, gold, teleport, common events, freeze/lock & battle cheats. (MZ) - * @author len (Forge - clean-room, MTool-inspired) - * @url - * - * @param hotkey - * @text Toggle Hotkey - * @desc Key to toggle the panel. - * @type string - * @default F10 - * - * @param speedKey - * @text Speedhack Key - * @desc Key to toggle fast-forward (e.g. Control, Shift, Alt, or a letter). - * @type string - * @default Control - * - * @param startOpen - * @text Open on start - * @desc Open the panel automatically on new game / load. - * @type boolean - * @default false - * - * @param itemMaxOverride - * @text Item "Max" value - * @desc Value used by the "Max" button for item stacks (0 = use engine maxItems). - * @type number - * @min 0 - * @default 0 - * - * @command open - * @text Open / Toggle Panel - * @desc Toggle the Forge overlay. - * - * @help - * Forge — drop-in cheat & editor for RPG Maker MZ. - * Place in js/plugins/ and enable in the Plugin Manager. Press F10 to open. - * - * Sections: Variables · Switches · Items/Weapons/Armors · Actors · Party/Gold · - * Map/Teleport · Common Events · Data Lock (freeze) · Battle cheats. - * - * All edits are RAM-only and never written to save files. No external requests. - * Plugin command "Open / Toggle Panel" toggles the overlay from events. + * @target MZ MV + * @plugindesc Forge - modern in-game editor + * @author len, shellawa + * @url https://gitgud.io/zero64801/forge-mvmz/ */ - -/* =================================================================================== - * Forge — in-game cheat & editor overlay for RPG Maker MV / MZ (shared core) - * Clean-room reimplementation of MTool's variable/value editor. Vanilla JS, zero deps. - * This file is the engine-agnostic core; the MV/MZ ship files prepend the plugin header. - * Layers: ops (DOM-free, testable) · locks (prototype monkeypatches) · cheats · ui (Shadow DOM) - * =================================================================================== */ -(function (root) { - 'use strict'; - if (root && root.__FORGE_CORE__) return; - - // ---------- environment ---------- - var IS_MZ = (typeof Utils !== 'undefined' && Utils.RPGMAKER_NAME === 'MZ'); - var nodeFs = null, nodePath = null; - try { if (typeof require === 'function') { nodeFs = require('fs'); nodePath = require('path'); } } catch (e) {} - function gameCwd() { try { return process.cwd(); } catch (e) { return '.'; } } - - var PARAM_NAMES = ['Max HP', 'Max MP', 'Attack', 'Defense', 'M.Attack', 'M.Defense', 'Agility', 'Luck']; - - // ---------- small utils ---------- - function clampInt(v, lo, hi) { v = Math.floor(Number(v) || 0); if (v < lo) v = lo; if (hi != null && v > hi) v = hi; return v; } - function defined(x) { return typeof x !== 'undefined' && x !== null; } - function dataName(d) { return d && d.name ? d.name : ''; } - // actor.level may be a getter (number), a method, or only the _level field across engines/plugins. - function actorLevel(a) { if (!a) return 0; if (typeof a.level === 'number') return a.level; if (typeof a.level === 'function') return a.level(); return a._level || 1; } - - // =================================================================================== - // OPS — pure logic, only touches $game*/$data* globals. Unit-testable. - // =================================================================================== - var ops = {}; - - ops.vars = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.variables.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.variables[id]) || ('Variable ' + id); }, - get: function (id) { return defined(window.$gameVariables) ? $gameVariables.value(id) : 0; }, - set: function (id, v) { if (!defined(window.$gameVariables)) return; $gameVariables.setValue(id, typeof v === 'string' && v.trim() !== '' && !isNaN(v) ? Number(v) : v); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - ops.switches = { - count: function () { return defined(window.$dataSystem) ? $dataSystem.switches.length - 1 : 0; }, - name: function (id) { return (defined(window.$dataSystem) && $dataSystem.switches[id]) || ('Switch ' + id); }, - get: function (id) { return defined(window.$gameSwitches) ? $gameSwitches.value(id) : false; }, - set: function (id, v) { if (!defined(window.$gameSwitches)) return; $gameSwitches.setValue(id, !!v); }, - toggle: function (id) { this.set(id, !this.get(id)); }, - list: function () { - var out = [], n = this.count(); - for (var id = 1; id <= n; id++) out.push({ id: id, name: this.name(id), value: this.get(id) }); - return out; - } - }; - - var INV_TABLES = { item: '$dataItems', weapon: '$dataWeapons', armor: '$dataArmors' }; - ops.inv = { - table: function (kind) { return window[INV_TABLES[kind]] || []; }, - data: function (kind, id) { return this.table(kind)[id] || null; }, - count: function (kind, id) { var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.numItems(d) : 0; }, - maxStack: function (kind, id) { if (MTC._itemMaxOverride > 0) return MTC._itemMaxOverride; var d = this.data(kind, id); return d && defined(window.$gameParty) ? $gameParty.maxItems(d) : 99; }, - grant: function (kind, id, n) { var d = this.data(kind, id); if (d && defined(window.$gameParty)) $gameParty.gainItem(d, n, false); if (locks.isItemFrozen(kind, id)) LOCK.items.set(itemKey(kind, id), { kind: kind, id: id, value: this.count(kind, id) }); }, - setCount: function (kind, id, target) { this.grant(kind, id, clampInt(target, 0, null) - this.count(kind, id)); }, - max: function (kind, id) { this.setCount(kind, id, this.maxStack(kind, id)); }, - list: function (kind) { - var t = this.table(kind), out = []; - for (var id = 1; id < t.length; id++) { - var d = t[id]; if (!d || !d.name) continue; - out.push({ id: id, name: d.name, description: d.description || '', iconIndex: d.iconIndex || 0, count: $gameParty.numItems(d) }); - } - return out; - } - }; - - ops.gold = { - get: function () { return defined(window.$gameParty) ? $gameParty.gold() : 0; }, - max: function () { return defined(window.$gameParty) && $gameParty.maxGold ? $gameParty.maxGold() : 99999999; }, - add: function (n) { - if (!defined(window.$gameParty)) return; - if (LOCK.gold != null) { LOCK.gold = clampInt(LOCK.gold + n, 0, this.max()); (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); return; } - if (n >= 0) $gameParty.gainGold(n); else $gameParty.loseGold(-n); - }, - set: function (target) { this.add(clampInt(target, 0, this.max()) - this.get()); } - }; - - ops.actors = { - list: function () { - var out = []; - if (!defined(window.$dataActors)) return out; - for (var id = 1; id < $dataActors.length; id++) { - var d = $dataActors[id]; if (!d) continue; - var a = $gameActors.actor(id); - out.push({ id: id, name: a ? a.name() : d.name, level: a ? actorLevel(a) : (d.initialLevel || 1), inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false }); - } - return out; - }, - get: function (id) { - var a = $gameActors.actor(id); if (!a) return null; - var params = []; - for (var p = 0; p < 8; p++) params.push({ id: p, name: PARAM_NAMES[p], value: a.param(p) }); - var skills = []; - if (defined(window.$dataSkills)) for (var s = 1; s < $dataSkills.length; s++) { var sk = $dataSkills[s]; if (sk && sk.name) skills.push({ id: s, name: sk.name, learned: a.isLearnedSkill ? a.isLearnedSkill(s) : (a.skills().indexOf(sk) >= 0) }); } - var equips = [], slots = a.equipSlots ? a.equipSlots() : [], cur = a.equips(); - for (var e = 0; e < slots.length; e++) equips.push({ slot: e, etypeId: slots[e], current: cur[e] ? cur[e].name : '(none)' }); - return { - id: id, name: a.name(), level: actorLevel(a), exp: a.currentExp ? a.currentExp() : 0, - nextExp: a.nextLevelExp ? a.nextLevelExp() : 0, - hp: a.hp, mp: a.mp, tp: a.tp, mhp: a.mhp, mmp: a.mmp, - params: params, skills: skills, equips: equips, - inParty: $gameParty._actors ? $gameParty._actors.indexOf(id) >= 0 : false - }; - }, - setLevel: function (id, lv) { var a = $gameActors.actor(id); if (a) { var cap = a.maxLevel ? a.maxLevel() : 99; a.changeLevel(clampInt(lv, 1, cap), false); a.refresh(); } }, - setExp: function (id, exp) { var a = $gameActors.actor(id); if (a) { a.changeExp(clampInt(exp, 0, null), false); a.refresh(); } }, - setHp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setHp(clampInt(v, 0, a.mhp)); a.refresh(); } }, - setMp: function (id, v) { var a = $gameActors.actor(id); if (a) { a.setMp(clampInt(v, 0, a.mmp)); a.refresh(); } }, - setTp: function (id, v) { var a = $gameActors.actor(id); if (a && a.setTp) { a.setTp(clampInt(v, 0, 100)); a.refresh(); } }, - addParam: function (id, pid, delta) { var a = $gameActors.actor(id); if (a) { a.addParam(pid, Math.floor(delta)); a.refresh(); } }, - // param(pid) = round((paramBase+paramPlus) * paramRate * paramBuffRate) clamped to [paramMin,paramMax]. - // addParam only mutates paramPlus, so invert the rate to land the *visible* param on target. - setParam: function (id, pid, target) { - var a = $gameActors.actor(id); if (!a) return; - var rate = (a.paramRate ? a.paramRate(pid) : 1) * (a.paramBuffRate ? a.paramBuffRate(pid) : 1) || 1; - var cap = a.paramMax ? a.paramMax(pid) : null; - var want = clampInt(target, a.paramMin ? a.paramMin(pid) : 0, cap); - var base = a.paramBase ? a.paramBase(pid) : 0, plus = (a.paramPlus ? a.paramPlus(pid) : (a._paramPlus ? a._paramPlus[pid] : 0)) || 0; - a.addParam(pid, Math.round(want / rate) - base - plus); - a.refresh(); - }, - learn: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.learnSkill(skillId); }, - forget: function (id, skillId) { var a = $gameActors.actor(id); if (a) a.forgetSkill(skillId); }, - equip: function (id, slotId, kind, itemId) { var a = $gameActors.actor(id); if (!a) return; var item = itemId ? ops.inv.data(kind, itemId) : null; if (a.forceChangeEquip) a.forceChangeEquip(slotId, item); else a.changeEquip(slotId, item); a.refresh(); }, - recover: function (id) { var a = $gameActors.actor(id); if (a) { a.recoverAll(); a.refresh(); } }, - setName: function (id, name) { var a = $gameActors.actor(id); if (a) a.setName(String(name)); }, - addToParty: function (id) { $gameParty.addActor(id); }, - removeFromParty: function (id) { $gameParty.removeActor(id); } - }; - - ops.party = { - members: function () { return defined(window.$gameParty) ? $gameParty.members().map(function (a) { return { id: a.actorId(), name: a.name(), level: actorLevel(a) }; }) : []; }, - add: function (id) { if (defined(window.$gameParty)) $gameParty.addActor(id); }, - remove: function (id) { if (defined(window.$gameParty)) $gameParty.removeActor(id); }, - steps: function () { return defined(window.$gameParty) ? $gameParty.steps() : 0; }, - // RPG Maker derives playtime from frame count (Game_System has no playtime()). - playtime: function () { return (typeof Graphics !== 'undefined' && Graphics.frameCount) ? Math.floor(Graphics.frameCount / 60) : 0; } - }; - - ops.map = { - list: function () { - var out = []; - if (!defined(window.$dataMapInfos)) return out; - for (var id = 1; id < $dataMapInfos.length; id++) { var m = $dataMapInfos[id]; if (m) out.push({ id: id, name: m.name || ('Map ' + id) }); } - return out; - }, - current: function () { if (!defined(window.$gameMap) || !defined(window.$gamePlayer)) return { mapId: 0, x: 0, y: 0, dir: 2 }; return { mapId: $gameMap.mapId(), x: $gamePlayer.x, y: $gamePlayer.y, dir: $gamePlayer.direction ? $gamePlayer.direction() : 2 }; }, - teleport: function (mapId, x, y, dir, fade) { $gamePlayer.reserveTransfer(mapId, clampInt(x, 0, null), clampInt(y, 0, null), dir || 0, fade == null ? 0 : fade); }, - loadMapFile: function (mapId) { - if (!nodeFs) return null; - try { var f = 'Map' + String(mapId).padStart(3, '0') + '.json'; return JSON.parse(nodeFs.readFileSync(nodePath.join(gameCwd(), 'data', f), 'utf8')); } - catch (e) { return null; } - }, - noclip: function (b) { locks.state.noclip = !!b; if (defined(window.$gamePlayer)) $gamePlayer.setThrough(!!b); }, - isNoclip: function () { return !!locks.state.noclip; }, - speed: function (n) { if (defined(window.$gamePlayer)) $gamePlayer.setMoveSpeed(clampInt(n, 1, 8)); } - }; - - ops.commonev = { - list: function () { - var out = []; - if (!defined(window.$dataCommonEvents)) return out; - for (var id = 1; id < $dataCommonEvents.length; id++) { var c = $dataCommonEvents[id]; if (c) out.push({ id: id, name: c.name || ('Common Event ' + id) }); } - return out; - }, - run: function (id) { if (defined(window.$gameTemp)) $gameTemp.reserveCommonEvent(id); } - }; - - ops.battle = { - inBattle: function () { - if (typeof SceneManager === 'undefined' || !SceneManager._scene) return false; - if (typeof Scene_Battle !== 'undefined' && SceneManager._scene instanceof Scene_Battle) return true; - var c = SceneManager._scene.constructor; // fallback if class binding unavailable - return !!(c && c.name === 'Scene_Battle'); - }, - instantWin: function () { - if (typeof $gameTroop === 'undefined' || !$gameTroop) return; - $gameTroop.members().forEach(function (e) { - e.setHp(0); - if (e.deathStateId && e.addState) e.addState(e.deathStateId()); // mark actually dead - else if (e.die) e.die(); - if (e.performCollapse) e.performCollapse(); // visual collapse - e.refresh(); - }); - if (typeof BattleManager !== 'undefined' && BattleManager.checkBattleEnd) BattleManager.checkBattleEnd(); - }, - flee: function () { if (typeof BattleManager !== 'undefined' && BattleManager.processAbort) BattleManager.processAbort(); } - }; - - // =================================================================================== - // LOCKS — prototype-level monkeypatches + per-frame re-assertion. Installed once. - // =================================================================================== - var LOCK = { vars: new Map(), switches: new Map(), items: new Map(), gold: null, stats: new Map(), noclip: false }; - function itemKey(kind, id) { return kind + ':' + id; } - - var locks = { - state: LOCK, - _installed: false, - install: function () { - if (this._installed) return; this._installed = true; - // Variables - if (typeof Game_Variables !== 'undefined') { - var _sv = Game_Variables.prototype.setValue; - Game_Variables.prototype.setValue = function (id, value) { if (LOCK.vars.has(id)) value = LOCK.vars.get(id); _sv.call(this, id, value); }; - } - // Switches - if (typeof Game_Switches !== 'undefined') { - var _ss = Game_Switches.prototype.setValue; - Game_Switches.prototype.setValue = function (id, value) { if (LOCK.switches.has(id)) value = LOCK.switches.get(id); _ss.call(this, id, value); }; - } - // Gold: substitute (not block) so freezeGold can re-snapshot on edit; item freeze is tick-based - // (NOT a gainItem block) so equip bookkeeping / give-take still runs, corrected next frame. - if (typeof Game_Party !== 'undefined') { - var _gg = Game_Party.prototype.gainGold; - locks._origGainGold = _gg; - Game_Party.prototype.gainGold = function (n) { if (LOCK.gold != null) return; _gg.call(this, n); }; - } - // Battle: god mode + OHKO via one executeHpDamage override - if (typeof Game_Action !== 'undefined') { - var _ehd = Game_Action.prototype.executeHpDamage; - Game_Action.prototype.executeHpDamage = function (target, value) { - if (CHEAT.god && target.isActor && target.isActor() && value > 0) value = 0; - if (CHEAT.ohko && this.subject().isActor && this.subject().isActor() && target.isEnemy && target.isEnemy()) value = target.hp; - _ehd.call(this, target, value); - }; - } - // God mode also blocks non-action HP loss for actors (slip/regen, event Change-HP) + floor damage. - if (typeof Game_Battler !== 'undefined' && Game_Battler.prototype.gainHp) { - var _gh = Game_Battler.prototype.gainHp; - Game_Battler.prototype.gainHp = function (value) { if (CHEAT.god && this.isActor && this.isActor() && value < 0) value = 0; _gh.call(this, value); }; - } - if (typeof Game_Actor !== 'undefined' && Game_Actor.prototype.executeFloorDamage) { - var _efd = Game_Actor.prototype.executeFloorDamage; - Game_Actor.prototype.executeFloorDamage = function () { if (CHEAT.god) return; _efd.call(this); }; - } - // No encounters - if (typeof Game_Player !== 'undefined') { - var _epv = Game_Player.prototype.encounterProgressValue; - Game_Player.prototype.encounterProgressValue = function () { return CHEAT.noEncounter ? 0 : _epv.call(this); }; - } - // Speedhack: drive the scene update extra times per frame (speed>1) or skip frames (speed<1). - // Input is still read once per real frame, so the whole game (movement, anim, battle, messages, - // events, timers) runs faster/slower. Works for MV and MZ (both expose SceneManager.updateScene). - if (typeof SceneManager !== 'undefined' && SceneManager.updateScene) { - var _updateScene = SceneManager.updateScene, _spdAcc = 0; - // Extra updates are only safe in a steady scene: the scene must be started, not changing, and - // (on a map) not mid-transfer — otherwise $dataMap is briefly null and the scroll code throws. - function speedSafe(mgr) { - if (mgr.isCurrentSceneStarted) { if (!mgr.isCurrentSceneStarted()) return false; } // MV - else if (mgr._scene && mgr._scene.isStarted) { if (!mgr._scene.isStarted()) return false; } // MZ - if (mgr.isSceneChanging && mgr.isSceneChanging()) return false; // mid scene transition - if (typeof $gamePlayer !== 'undefined' && $gamePlayer && $gamePlayer.isTransferring && $gamePlayer.isTransferring()) return false; - if (typeof DataManager !== 'undefined' && DataManager.isMapLoaded && !DataManager.isMapLoaded()) return false; // map (re)loading - return true; - } - SceneManager.updateScene = function () { - var sp = CHEAT.speed || 1; - if (sp >= 1) { - _updateScene.call(this); - if (sp > 1 && this._scene && typeof this._scene.update === 'function' && speedSafe(this)) { - _spdAcc += (sp - 1); - var guard = 0; - while (_spdAcc >= 1 && guard++ < 64) { _spdAcc -= 1; try { this._scene.update(); } catch (e) { _spdAcc = 0; break; } } - } else { _spdAcc = 0; } // not safe / not boosting -> don't bank up a burst of catch-up updates - } else { - _spdAcc += sp; - if (_spdAcc >= 1) { _spdAcc -= 1; _updateScene.call(this); } - else if (this._scene) { // skip the game advance this frame, keep start/ready bookkeeping - var u = this._scene.update; this._scene.update = function () {}; - try { _updateScene.call(this); } finally { this._scene.update = u; } - } - } - }; - } - // Clear stale freeze snapshots when the engine swaps in fresh game objects (new game / load). - if (typeof DataManager !== 'undefined') { - if (DataManager.setupNewGame) { var _sng = DataManager.setupNewGame; DataManager.setupNewGame = function () { locks.clearAll(); _sng.call(this); }; } - if (DataManager.extractSaveContents) { var _esc = DataManager.extractSaveContents; DataManager.extractSaveContents = function (c) { locks.clearAll(); return _esc.call(this, c); }; } - } - }, - // Freeze setters update both the lock map and the live value once. Maps store parsed objects so - // the per-frame tick never re-parses string keys. - freezeVar: function (id, on) { if (on) { LOCK.vars.set(id, ops.vars.get(id)); ops.vars.set(id, ops.vars.get(id)); } else LOCK.vars.delete(id); }, - freezeSwitch: function (id, on) { if (on) LOCK.switches.set(id, ops.switches.get(id)); else LOCK.switches.delete(id); }, - freezeItem: function (kind, id, on) { var k = itemKey(kind, id); if (on) LOCK.items.set(k, { kind: kind, id: id, value: ops.inv.count(kind, id) }); else LOCK.items.delete(k); }, - freezeGold: function (on) { LOCK.gold = on ? ops.gold.get() : null; }, - freezeStat: function (actorId, stat, on) { var k = actorId + ':' + stat; if (on) { var a = defined(window.$gameActors) ? $gameActors.actor(actorId) : null; LOCK.stats.set(k, { actorId: actorId, stat: stat, value: a ? a[stat] : 0 }); } else LOCK.stats.delete(k); }, - isVarFrozen: function (id) { return LOCK.vars.has(id); }, - isSwitchFrozen: function (id) { return LOCK.switches.has(id); }, - isItemFrozen: function (kind, id) { return LOCK.items.has(itemKey(kind, id)); }, - isStatFrozen: function (actorId, stat) { return LOCK.stats.has(actorId + ':' + stat); }, - // Per-frame: re-assert values the overrides can't catch (hp/mp/tp, gold target, item counts, noclip). - tick: function () { - if (!LOCK.noclip && LOCK.gold == null && !LOCK.stats.size && !LOCK.items.size) return; // early-out - if (LOCK.noclip && defined(window.$gamePlayer) && !$gamePlayer.isThrough()) $gamePlayer.setThrough(true); - if (LOCK.gold != null && defined(window.$gameParty) && $gameParty.gold() !== LOCK.gold) (locks._origGainGold || $gameParty.gainGold).call($gameParty, LOCK.gold - $gameParty.gold()); - if (LOCK.stats.size && defined(window.$gameActors)) { - LOCK.stats.forEach(function (e) { - var a = $gameActors.actor(e.actorId); if (!a) return; - if (e.stat === 'hp' && a.hp !== e.value) a.setHp(Math.min(e.value, a.mhp)); - else if (e.stat === 'mp' && a.mp !== e.value) a.setMp(Math.min(e.value, a.mmp)); - else if (e.stat === 'tp' && a.tp !== e.value && a.setTp) a.setTp(e.value); - }); - } - if (LOCK.items.size && defined(window.$gameParty)) { - LOCK.items.forEach(function (e) { if (ops.inv.count(e.kind, e.id) !== e.value) { var d = ops.inv.data(e.kind, e.id); if (d) $gameParty.gainItem(d, e.value - ops.inv.count(e.kind, e.id), false); } }); - } - }, - summary: function () { - var out = []; - LOCK.vars.forEach(function (v, id) { out.push({ type: 'var', id: id, label: 'Var ' + id + ' · ' + ops.vars.name(id), value: v }); }); - LOCK.switches.forEach(function (v, id) { out.push({ type: 'switch', id: id, label: 'Switch ' + id + ' · ' + ops.switches.name(id), value: v ? 'ON' : 'OFF' }); }); - LOCK.items.forEach(function (e, key) { out.push({ type: 'item', key: key, label: e.kind + ' ' + e.id + ' · ' + (ops.inv.data(e.kind, e.id) ? ops.inv.data(e.kind, e.id).name : ''), value: e.value }); }); - LOCK.stats.forEach(function (e, key) { out.push({ type: 'stat', key: key, label: 'Actor ' + e.actorId + ' · ' + e.stat.toUpperCase(), value: e.value }); }); - if (LOCK.gold != null) out.push({ type: 'gold', label: 'Gold (frozen)', value: LOCK.gold }); - if (LOCK.noclip) out.push({ type: 'noclip', label: 'Noclip (active)', value: 'ON' }); - return out; - }, - clearAll: function () { LOCK.vars.clear(); LOCK.switches.clear(); LOCK.items.clear(); LOCK.stats.clear(); LOCK.gold = null; if (LOCK.noclip) ops.map.noclip(false); } - }; - - // =================================================================================== - // CHEATS — global toggles consumed by the lock overrides + battle actions. - // =================================================================================== - var CHEAT = { god: false, ohko: false, noEncounter: false, speed: 1, uiFocused: false }; - var cheats = { - state: CHEAT, - setGod: function (b) { CHEAT.god = !!b; }, - setOhko: function (b) { CHEAT.ohko = !!b; }, - setNoEncounter: function (b) { CHEAT.noEncounter = !!b; }, - setSpeed: function (n) { CHEAT.speed = Math.max(0.1, Math.min(Number(n) || 1, 16)); }, - toggleSpeed: function () { this.setSpeed(CHEAT.speed !== 1 ? 1 : (MTC._speedBoost || 2)); return CHEAT.speed; }, - instantWin: function () { ops.battle.instantWin(); }, - flee: function () { ops.battle.flee(); } - }; - - // expose the assembled API (UI is attached below if a real DOM is present) - var MTC = { env: { IS_MZ: IS_MZ }, ops: ops, locks: locks, cheats: cheats, LOCK: LOCK, CHEAT: CHEAT, PARAM_NAMES: PARAM_NAMES, _itemMaxOverride: 0, _hotkey: 'F10', _speedKey: 'Control', _speedBoost: 2 }; - if (root) { root.Forge = MTC; root.__FORGE_CORE__ = true; } - if (typeof module !== 'undefined' && module.exports) module.exports = MTC; - - // ---- engine boot hooks (guarded; only when classes exist) ---- - if (typeof Scene_Base !== 'undefined') { - var _su = Scene_Base.prototype.update; - Scene_Base.prototype.update = function () { _su.call(this); try { locks.tick(); } catch (e) {} }; - } - // install lock overrides as soon as the game classes are available - try { locks.install(); } catch (e) {} - - // ---- UI: attach only when a real browser DOM is available (skipped in Node tests) ---- - if (typeof document !== 'undefined' && document.body && typeof document.body.attachShadow === 'function' && typeof window !== 'undefined') { - try { MTC.ui = buildUI(MTC); } catch (e) { try { console.error('[Forge] UI init failed', e); } catch (_) {} } - } - - // =================================================================================== - // UI — Shadow-DOM overlay. Inlined so the single ship file works with zero deps. - // =================================================================================== - function buildUI(API) { - var LS = 'forge:'; - function store(k, v) { try { localStorage.setItem(LS + k, JSON.stringify(v)); } catch (e) {} } - function load(k, d) { try { var s = localStorage.getItem(LS + k); return s == null ? d : JSON.parse(s); } catch (e) { return d; } } - // persisted speed settings (UI-controlled; override core/param defaults if the user changed them) - API._speedKey = load('speedKey', API._speedKey || 'Control'); - API._speedUseKey = load('speedUseKey', true); - API._speedBoost = load('speedBoost', API._speedBoost || 2); - if (!API._speedUseKey) API.cheats.setSpeed(API._speedBoost); // "always on" mode applies immediately - - function el(tag, props, kids) { - var n = document.createElement(tag); - if (props) for (var k in props) { - if (k === 'class') n.className = props[k]; - else if (k === 'text') n.textContent = props[k]; - else if (k === 'html') n.innerHTML = props[k]; - else if (k === 'style') n.setAttribute('style', props[k]); - else if (k.slice(0, 2) === 'on' && typeof props[k] === 'function') n.addEventListener(k.slice(2).toLowerCase(), props[k]); - else if (props[k] != null) n.setAttribute(k, props[k]); - } - if (kids) (Array.isArray(kids) ? kids : [kids]).forEach(function (c) { if (c != null) n.appendChild(typeof c === 'string' ? document.createTextNode(c) : c); }); - return n; - } - - // Inline SVG icons (no font/emoji dependency -> render identically on Windows/macOS/Linux). - function svg(inner) { return '' + inner + ''; } - var ICONS = { - vars: svg(''), - switches: svg(''), - inv: svg(''), - actors: svg(''), - party: svg(''), - map: svg(''), - commonev: svg(''), - locks: svg(''), - battle: svg(''), - tool: svg(''), - refresh: svg(''), - theme: svg(''), - close: svg(''), - lock: svg(''), - unlock: svg('') - }; - - var CSS = "\ -:host{position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important;contain:none}\ -*{box-sizing:border-box;font-family:var(--font-ui);-webkit-user-select:none;user-select:none}\ -#forge-root{--font-ui:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--font-mono:ui-monospace,'Cascadia Code',Consolas,monospace;\ ---fg-bg:#15171c;--fg-bg-elev:#1c1f27;--fg-bg-input:#21242d;--fg-bg-row-alt:#181b22;--fg-border:#2b2f3a;--fg-border-strong:#3a3f4d;\ ---fg-text:#e6e9ef;--fg-text-dim:#9aa1b1;--fg-text-faint:#646b7d;--fg-accent:#5b8cff;--fg-accent-weak:#2a3a63;--fg-success:#3ecf8e;--fg-warn:#f0b132;--fg-danger:#f0556a;--fg-frozen:#8b5cf6;\ ---sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--rad-sm:4px;--rad-md:7px;--rad-lg:11px;--rad-pill:999px;\ ---sh-panel:0 18px 50px rgba(0,0,0,.5),0 0 0 1px var(--fg-border);--row-h:30px;--rail-w:64px;--ease:cubic-bezier(.2,.7,.3,1);--dur:120ms;\ ---fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;color:var(--fg-text);font-size:var(--fs-md)}\ -#forge-root[data-theme=light]{--fg-bg:#f6f7f9;--fg-bg-elev:#fff;--fg-bg-input:#eef0f4;--fg-bg-row-alt:#f0f2f5;--fg-border:#dde0e7;--fg-border-strong:#c7ccd8;--fg-text:#1a1d24;--fg-text-dim:#5a6172;--fg-text-faint:#9097a6;--fg-accent-weak:#dce6ff}\ -.fg-panel{position:fixed;display:flex;flex-direction:column;background:var(--fg-bg);border-radius:var(--rad-lg);box-shadow:var(--sh-panel);overflow:hidden;z-index:2147483000;min-width:480px;min-height:360px;pointer-events:auto}\ -.fg-titlebar{display:flex;align-items:center;gap:6px;height:33px;padding:0 6px 0 10px;background:var(--fg-bg-elev);border-bottom:1px solid var(--fg-border);cursor:move;flex:0 0 auto}\ -.fg-brand{font-weight:700;font-size:var(--fs-md);letter-spacing:.3px;color:var(--fg-text);margin-right:8px;white-space:nowrap}\ -.fg-brand b{color:var(--fg-accent)}\ -.fg-search{flex:1;height:23px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:var(--rad-md);color:var(--fg-text);padding:0 9px;font-size:var(--fs-sm);outline:none;min-width:80px}\ -.fg-search:focus{border-color:var(--fg-accent)}\ -.fg-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:var(--rad-md);background:transparent;color:var(--fg-text-dim);border:0;cursor:pointer;font-size:13px;transition:background var(--dur)}\ -.fg-iconbtn:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-body{flex:1;display:flex;min-height:0}\ -.fg-rail{flex:0 0 var(--rail-w);display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-1);background:var(--fg-bg-elev);border-right:1px solid var(--fg-border);overflow-y:auto}\ -.fg-rail__item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) 0;border-radius:var(--rad-md);cursor:pointer;color:var(--fg-text-dim);font-size:10px;transition:all var(--dur);border:0;background:transparent}\ -.fg-rail__item .ic{display:flex;align-items:center;justify-content:center}\n.fg-rail__item .ic svg{width:19px;height:19px}\n.fg-iconbtn svg{width:15px;height:15px}\n.fg-lock svg{width:15px;height:15px}\n.fg-launcher svg{width:21px;height:21px}\ -.fg-rail__item:hover{background:var(--fg-bg-input);color:var(--fg-text)}\ -.fg-rail__item.is-active{background:var(--fg-accent-weak);color:var(--fg-accent)}\ -.fg-content{flex:1;display:flex;flex-direction:column;min-width:0}\ -.fg-section-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4) var(--sp-2);flex:0 0 auto}\ -.fg-section-head h2{margin:0;font-size:var(--fs-lg);font-weight:600}\ -.fg-count{font-size:var(--fs-xs);color:var(--fg-text-faint);background:var(--fg-bg-input);padding:2px 7px;border-radius:var(--rad-pill)}\ -.fg-spacer{flex:1}\ -.fg-subtoolbar{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-2);flex-wrap:wrap}\ -.fg-segmented{display:inline-flex;background:var(--fg-bg-input);border-radius:var(--rad-md);padding:2px}\ -.fg-segmented button{border:0;background:transparent;color:var(--fg-text-dim);padding:3px 12px;border-radius:5px;cursor:pointer;font-size:var(--fs-sm)}\ -.fg-segmented button.is-active{background:var(--fg-accent);color:#fff}\ -.fg-btn{border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text);padding:4px 11px;border-radius:var(--rad-md);cursor:pointer;font-size:var(--fs-sm);transition:all var(--dur)}\ -.fg-btn:hover{border-color:var(--fg-accent);color:var(--fg-accent)}\ -.fg-btn--ghost{background:transparent;border-color:transparent;color:var(--fg-text-dim)}\ -.fg-btn--danger:hover{border-color:var(--fg-danger);color:var(--fg-danger)}\ -.fg-list{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;border-top:1px solid var(--fg-border)}\ -.fg-list__sizer{position:relative;width:100%}\ -.fg-list__window{position:absolute;top:0;left:0;right:0}\ -.fg-row{display:flex;align-items:center;gap:var(--sp-2);height:var(--row-h);padding:0 var(--sp-4);border-bottom:1px solid var(--fg-border);font-size:var(--fs-sm)}\ -.fg-row:nth-child(even){background:var(--fg-bg-row-alt)}\ -.fg-row.is-frozen{box-shadow:inset 3px 0 0 var(--fg-frozen)}\ -.fg-row.is-selected{background:var(--fg-accent-weak)!important;box-shadow:inset 2px 0 0 var(--fg-accent)}\ -.fg-cell--id{flex:0 0 52px;color:var(--fg-text-faint);font-family:var(--font-mono);font-size:var(--fs-xs)}\ -.fg-cell--name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\ -.fg-cell--name .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--fg-accent);margin-right:6px;vertical-align:middle}\ -.fg-cell--val{flex:0 0 auto;display:flex;align-items:center;gap:4px}\ -.fg-stepper{display:inline-flex;align-items:center;gap:3px}\ -.fg-step{min-width:30px;width:auto;padding:0 5px;height:22px;white-space:nowrap;border:1px solid var(--fg-border-strong);background:var(--fg-bg-input);color:var(--fg-text-dim);border-radius:5px;cursor:pointer;font-size:var(--fs-xs);font-family:var(--font-mono)}\ -.fg-step:hover{color:var(--fg-accent);border-color:var(--fg-accent)}\ -.fg-num{width:68px;height:22px;background:var(--fg-bg-input);border:1px solid var(--fg-border);border-radius:5px;color:var(--fg-text);text-align:right;padding:0 6px;font-family:var(--font-mono);font-size:var(--fs-sm);outline:none}\ -.fg-num:focus{border-color:var(--fg-accent)}\ -.fg-toggle{width:38px;height:21px;border-radius:var(--rad-pill);background:var(--fg-border-strong);position:relative;cursor:pointer;transition:background var(--dur);border:0;flex:0 0 auto}\ -.fg-toggle::after{content:'';position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform var(--dur)}\ -.fg-toggle.is-on{background:var(--fg-success)}\ -.fg-toggle.is-on::after{transform:translateX(17px)}\ -.fg-lock{width:24px;height:24px;border:0;background:transparent;color:var(--fg-text-faint);cursor:pointer;border-radius:5px;font-size:13px;flex:0 0 auto}\ -.fg-lock:hover{color:var(--fg-frozen);background:var(--fg-bg-input)}\ -.fg-lock.is-frozen{color:var(--fg-frozen)}\ -.fg-statusbar{display:flex;align-items:center;gap:var(--sp-2);height:24px;padding:0 var(--sp-3);background:var(--fg-bg-elev);border-top:1px solid var(--fg-border);font-size:var(--fs-xs);color:var(--fg-text-faint);flex:0 0 auto}\ -.fg-detail{padding:var(--sp-3) var(--sp-4);overflow-y:auto;flex:1}\ -.fg-field{display:flex;align-items:center;gap:var(--sp-2);padding:5px 0;border-bottom:1px solid var(--fg-border);min-width:0}\n.fg-field .fg-stepper{margin-left:auto;flex:0 0 auto}\ -.fg-field label{flex:0 0 96px;color:var(--fg-text-dim);font-size:var(--fs-sm)}\ -.fg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:var(--sp-2) var(--sp-4)}\ -.fg-toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;z-index:2147483100;pointer-events:none}\ -.fg-toast{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-left:3px solid var(--fg-accent);color:var(--fg-text);padding:8px 14px;border-radius:var(--rad-md);font-size:var(--fs-sm);box-shadow:var(--sh-panel);animation:fgin var(--dur) var(--ease)}\ -.fg-toast.warn{border-left-color:var(--fg-warn)}.fg-toast.danger{border-left-color:var(--fg-danger)}.fg-toast.ok{border-left-color:var(--fg-success)}\ -@keyframes fgin{from{opacity:0;transform:translateY(6px)}to{opacity:1}}\ -.fg-launcher{position:fixed;pointer-events:auto;width:42px;height:42px;border-radius:50%;background:var(--fg-accent);color:#fff;border:0;cursor:pointer;font-size:18px;z-index:2147482999;box-shadow:var(--sh-panel);display:flex;align-items:center;justify-content:center}\ -.fg-launcher:hover{filter:brightness(1.1)}\ -.fg-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize}\ -.fg-resize::after{content:'';position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-right:2px solid var(--fg-text-faint);border-bottom:2px solid var(--fg-text-faint)}\ -.fg-empty{padding:var(--sp-5);text-align:center;color:var(--fg-text-faint);font-size:var(--fs-sm)}\ -.fg-confirm{position:fixed;pointer-events:auto;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);z-index:2147483200}\ -.fg-confirm__box{background:var(--fg-bg-elev);border:1px solid var(--fg-border);border-radius:var(--rad-lg);padding:var(--sp-4);max-width:340px;box-shadow:var(--sh-panel)}\ -.fg-confirm__box p{margin:0 0 var(--sp-4)}.fg-confirm__row{display:flex;justify-content:flex-end;gap:var(--sp-2)}\ -input::placeholder{color:var(--fg-text-faint)}\ -::-webkit-scrollbar{width:9px;height:9px}\ -::-webkit-scrollbar-track{background:transparent}\ -::-webkit-scrollbar-thumb{background:var(--fg-border-strong);border-radius:5px}\ -::-webkit-scrollbar-thumb:hover{background:var(--fg-text-faint)}"; - - // ---------- shadow host ---------- - var host = el('div', { id: 'forge-host' }); - host.style.cssText = 'position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important'; - document.body.appendChild(host); - var shadow = host.attachShadow({ mode: 'open' }); - var rootEl = el('div', { id: 'forge-root' }); - rootEl.setAttribute('data-theme', load('theme', 'dark')); - shadow.appendChild(el('style', { text: CSS })); - shadow.appendChild(rootEl); - - // Swallow events so panel interaction never leaks to the game. BUBBLE phase: the panel's own - // inputs receive the event first (target phase), then we stop it before it reaches document - // (where RPG Maker's Input/TouchInput listen). Capture phase would block the inputs themselves. - ['keydown', 'keyup', 'keypress', 'wheel', 'mousedown', 'mouseup', 'mousemove', 'click', 'dblclick', - 'pointerdown', 'pointerup', 'pointermove', 'pointercancel', 'touchstart', 'touchend', 'touchmove', 'touchcancel', 'contextmenu'].forEach(function (t) { - rootEl.addEventListener(t, function (e) { e.stopPropagation(); }, false); - }); - function isEditable(el) { return el && (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA'); } - rootEl.addEventListener('focusin', function (e) { if (isEditable(e.target)) API.CHEAT.uiFocused = true; }, true); - rootEl.addEventListener('focusout', function () { setTimeout(function () { API.CHEAT.uiFocused = !!(shadow.activeElement && isEditable(shadow.activeElement)); }, 0); }, true); - window.addEventListener('blur', function () { API.CHEAT.uiFocused = false; }); // never latch the game-input gate - // Backup engine-level gate: while a panel input is focused, drop the game's keyboard handler. - if (typeof Input !== 'undefined' && Input._onKeyDown) { var _okd = Input._onKeyDown; Input._onKeyDown = function (e) { if (API.CHEAT.uiFocused) return; _okd.call(this, e); }; } - if (typeof Input !== 'undefined' && Input._onKeyUp) { var _oku = Input._onKeyUp; Input._onKeyUp = function (e) { if (API.CHEAT.uiFocused) return; _oku.call(this, e); }; } - - // ---------- toasts ---------- - var toasts = el('div', { class: 'fg-toasts' }); rootEl.appendChild(toasts); - function toast(msg, kind) { var t = el('div', { class: 'fg-toast ' + (kind || ''), text: msg }); toasts.appendChild(t); setTimeout(function () { t.remove(); }, 2200); } - function confirmBox(msg, onYes) { - var box = el('div', { class: 'fg-confirm' }, el('div', { class: 'fg-confirm__box' }, [ - el('p', { text: msg }), - el('div', { class: 'fg-confirm__row' }, [ - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Cancel', onclick: function () { box.remove(); } }), - el('button', { class: 'fg-btn fg-btn--danger', text: 'Confirm', onclick: function () { box.remove(); onYes(); } }) - ]) - ])); - rootEl.appendChild(box); - } - - // ---------- panel skeleton ---------- - var vw = window.innerWidth || 816, vh = window.innerHeight || 624; - // Default size fits the window (many MV games are ~816x624); leave a margin. - var st = load('panel', { x: 16, y: 16, w: Math.min(880, vw - 32), h: Math.min(560, vh - 32) }); - st.w = Math.max(420, Math.min(st.w, vw - 8)); st.h = Math.max(320, Math.min(st.h, vh - 8)); - st.x = Math.max(0, Math.min(st.x, vw - st.w)); st.y = Math.max(0, Math.min(st.y, vh - st.h)); // keep fully on-screen - var panel = el('div', { class: 'fg-panel' }); - panel.style.left = st.x + 'px'; panel.style.top = st.y + 'px'; panel.style.width = st.w + 'px'; panel.style.height = st.h + 'px'; - var search = el('input', { class: 'fg-search', type: 'text', placeholder: 'Search… (Ctrl+K)' }); - var titlebar = el('div', { class: 'fg-titlebar' }, [ - el('span', { class: 'fg-brand', html: 'Forge' }), - search, - el('button', { class: 'fg-iconbtn', title: 'Rescan', html: ICONS.refresh, onclick: function () { render(); toast('Rescanned'); } }), - el('button', { class: 'fg-iconbtn', title: 'Theme', html: ICONS.theme, onclick: function () { var t = rootEl.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; rootEl.setAttribute('data-theme', t); store('theme', t); } }), - el('button', { class: 'fg-iconbtn', title: 'Close (F10)', html: ICONS.close, onclick: function () { hide(); } }) - ]); - var rail = el('div', { class: 'fg-rail' }); - var content = el('div', { class: 'fg-content' }); - var statusbar = el('div', { class: 'fg-statusbar' }); - panel.appendChild(titlebar); - panel.appendChild(el('div', { class: 'fg-body' }, [rail, content])); - panel.appendChild(statusbar); - var resize = el('div', { class: 'fg-resize' }); panel.appendChild(resize); - rootEl.appendChild(panel); - - // ---------- launcher (docks to bottom-right corner by default; 'launcherPos' is a fresh key so - // any stale mid-screen position from older builds is ignored) ---------- - var lp = load('launcherPos', { x: vw - 56, y: vh - 56 }); - lp.x = Math.max(4, Math.min(lp.x, vw - 46)); lp.y = Math.max(4, Math.min(lp.y, vh - 46)); - var launcher = el('button', { class: 'fg-launcher', html: ICONS.tool, title: 'Forge (F10)' }); - launcher.style.left = lp.x + 'px'; launcher.style.top = lp.y + 'px'; - launcher.addEventListener('click', function (e) { if (!launcher._dragged) toggle(); }); - rootEl.appendChild(launcher); - makeDraggable(launcher, launcher, function (x, y) { store('launcherPos', { x: x, y: y }); }, true); - - // ---------- drag / resize ---------- - function makeDraggable(handle, target, onEnd, isLauncher) { - handle.addEventListener('mousedown', function (e) { - if (e.target.closest && e.target.closest('input,button.fg-iconbtn')) return; - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ox = parseInt(target.style.left) || 0, oy = parseInt(target.style.top) || 0, moved = false; - if (isLauncher) target._dragged = false; - function mv(ev) { ev.stopPropagation(); var dx = ev.clientX - sx, dy = ev.clientY - sy; if (Math.abs(dx) + Math.abs(dy) > 3) moved = true; var nx = Math.max(0, Math.min(window.innerWidth - target.offsetWidth, ox + dx)), ny = Math.max(0, Math.min(window.innerHeight - 30, oy + dy)); target.style.left = nx + 'px'; target.style.top = ny + 'px'; if (isLauncher) target._dragged = moved; } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); if (onEnd) onEnd(parseInt(target.style.left), parseInt(target.style.top)); setTimeout(function () { if (isLauncher) target._dragged = false; }, 0); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - } - makeDraggable(titlebar, panel, function (x, y) { st.x = x; st.y = y; store('panel', st); }); - resize.addEventListener('mousedown', function (e) { - e.preventDefault(); e.stopPropagation(); var sx = e.clientX, sy = e.clientY, ow = panel.offsetWidth, oh = panel.offsetHeight; - function mv(ev) { ev.stopPropagation(); var w = Math.max(480, ow + ev.clientX - sx), h = Math.max(360, oh + ev.clientY - sy); panel.style.width = w + 'px'; panel.style.height = h + 'px'; if (activeRenderer && activeRenderer.onResize) activeRenderer.onResize(); } - function up(ev) { if (ev) { ev.stopPropagation(); ev.preventDefault(); } document.removeEventListener('mousemove', mv, true); document.removeEventListener('mouseup', up, true); st.w = panel.offsetWidth; st.h = panel.offsetHeight; store('panel', st); } - document.addEventListener('mousemove', mv, true); document.addEventListener('mouseup', up, true); - }); - - // ---------- reusable virtualized list ---------- - function VirtualList(opts) { - // opts: rowH, getModel()->[], renderRow(rowEl, item), matches(item, query) - var listEl = el('div', { class: 'fg-list' }); - var sizer = el('div', { class: 'fg-list__sizer' }); - var win = el('div', { class: 'fg-list__window' }); - sizer.appendChild(win); listEl.appendChild(sizer); - var rowH = opts.rowH || 30, pool = [], model = [], view = [], query = ''; - // ONE delegated row click (recycled rows must not accumulate per-draw listeners). - if (opts.onRowClick) listEl.addEventListener('click', function (e) { var r = e.target && e.target.closest ? e.target.closest('.fg-row') : null; if (r && r._item) opts.onRowClick(r._item); }); - function rebuild() { model = opts.getModel() || []; applyFilter(); } - function applyFilter() { - view = query ? model.filter(function (it) { return opts.matches(it, query); }) : model; - sizer.style.height = (view.length * rowH) + 'px'; - var em = listEl.querySelector('.fg-empty'); - if (!view.length) { pool.forEach(function (r) { r.style.display = 'none'; }); if (!em) listEl.appendChild(el('div', { class: 'fg-empty', text: 'Nothing here' })); } - else if (em) em.remove(); - lastFirst = -1; draw(true); // content changed -> force re-render - } - var lastFirst = -1; - function draw(force) { - var scroll = listEl.scrollTop, h = listEl.clientHeight || 400; - var first = Math.max(0, Math.floor(scroll / rowH) - 4); - if (!force && first === lastFirst) return; // window unchanged during scroll -> skip re-render - lastFirst = first; - var count = Math.ceil(h / rowH) + 8; - var last = Math.min(view.length, first + count); - win.style.transform = 'translateY(' + (first * rowH) + 'px)'; - var need = last - first; - while (pool.length < need) { var r = el('div', { class: 'fg-row' }); win.appendChild(r); pool.push(r); } - for (var i = 0; i < pool.length; i++) { - var r = pool[i]; - if (i < need) { r.style.display = 'flex'; r._item = view[first + i]; opts.renderRow(r, view[first + i]); } else { r.style.display = 'none'; r._item = null; } - } - } - var raf = null; - listEl.addEventListener('scroll', function () { if (raf) return; raf = requestAnimationFrame(function () { raf = null; draw(false); }); }); - return { el: listEl, rebuild: rebuild, applyFilter: applyFilter, draw: function () { draw(true); }, setQuery: function (q) { query = q; applyFilter(); }, onResize: function () { draw(true); }, - refresh: function () { draw(true); } }; - } - - // numeric stepper control - function stepper(getVal, setVal, opts) { - opts = opts || {}; - var wrap = el('div', { class: 'fg-stepper' }); - var input = el('input', { class: 'fg-num', type: 'text' }); - function sync() { input.value = getVal(); } - function commit(v) { setVal(v); sync(); if (opts.after) opts.after(); } - [['−100', -100], ['−1', -1]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - wrap.appendChild(input); - [['+1', 1], ['+100', 100]].forEach(function (s) { wrap.appendChild(el('button', { class: 'fg-step', text: s[0], onclick: function (e) { commit(getVal() + s[1] * (e.shiftKey ? 10 : 1)); } })); }); - input.addEventListener('keydown', function (e) { if (e.key === 'Enter') { commit(parse(input.value)); input.blur(); } else if (e.key === 'Escape') { sync(); input.blur(); } }); - input.addEventListener('blur', function () { commit(parse(input.value)); }); - function parse(s) { var n = Number(String(s).replace(/[^0-9.\-]/g, '')); return isNaN(n) ? getVal() : n; } - sync(); - return { el: wrap, sync: sync }; - } - - // ---------- sections ---------- - var activeRenderer = null, currentSection = null; - var SECTIONS = []; - function section(id, icon, title, builder) { SECTIONS.push({ id: id, icon: icon, title: title, builder: builder }); } - - function listSection(getModel, renderRow, matches, headExtra) { - return function (body, head) { - if (headExtra) headExtra(head); - var vl = VirtualList({ getModel: getModel, renderRow: renderRow, matches: matches || defaultMatch }); - body.appendChild(vl.el); - vl.rebuild(); - return { vl: vl, onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return (getModel() || []).length; } }; - }; - } - function defaultMatch(it, q) { q = q.toLowerCase(); return String(it.id) === q || (it.name && it.name.toLowerCase().indexOf(q) >= 0); } - - // Variables - section('vars', ICONS.vars, 'Variables', listSection( - function () { return API.ops.vars.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isVarFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.vars.get(it.id); }, function (v) { API.ops.vars.set(it.id, v); if (API.locks.isVarFrozen(it.id)) API.locks.freezeVar(it.id, true); }, {}); - val.appendChild(sp.el); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isVarFrozen(it.id), function (on) { API.locks.freezeVar(it.id, on); refreshActive(); })); - } - )); - - // Switches - section('switches', ICONS.switches, 'Switches', listSection( - function () { return API.ops.switches.list(); }, - function (row, it) { - row.className = 'fg-row' + (API.locks.isSwitchFrozen(it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var tg = el('button', { class: 'fg-toggle' + (API.ops.switches.get(it.id) ? ' is-on' : '') }); - tg.addEventListener('click', function () { API.ops.switches.set(it.id, !API.ops.switches.get(it.id)); if (API.locks.isSwitchFrozen(it.id)) API.locks.freezeSwitch(it.id, true); tg.classList.toggle('is-on', API.ops.switches.get(it.id)); }); - val.appendChild(tg); row.appendChild(val); - row.appendChild(lockBtn(API.locks.isSwitchFrozen(it.id), function (on) { API.locks.freezeSwitch(it.id, on); refreshActive(); })); - } - )); - - // Items / Weapons / Armors (segmented) - section('inv', ICONS.inv, 'Items', function (body, head) { - var kind = 'item'; - var seg = el('div', { class: 'fg-segmented' }); - ['item', 'weapon', 'armor'].forEach(function (k) { - var b = el('button', { class: k === kind ? 'is-active' : '', text: k.charAt(0).toUpperCase() + k.slice(1) + 's' }); - b.addEventListener('click', function () { kind = k; seg.querySelectorAll('button').forEach(function (x) { x.classList.remove('is-active'); }); b.classList.add('is-active'); vl.rebuild(); }); - seg.appendChild(b); - }); - head.appendChild(seg); - var vl = VirtualList({ - getModel: function () { return API.ops.inv.list(kind); }, - matches: defaultMatch, - renderRow: function (row, it) { - row.className = 'fg-row' + (API.locks.isItemFrozen(kind, it.id) ? ' is-frozen' : ''); - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.description || it.name })); - var val = el('span', { class: 'fg-cell--val' }); - var sp = stepper(function () { return API.ops.inv.count(kind, it.id); }, function (v) { API.ops.inv.setCount(kind, it.id, v); }, {}); - val.appendChild(sp.el); - val.appendChild(el('button', { class: 'fg-step', text: 'Max', style: 'width:auto;padding:0 6px', onclick: function () { API.ops.inv.max(kind, it.id); sp.sync(); } })); - row.appendChild(val); - row.appendChild(lockBtn(API.locks.isItemFrozen(kind, it.id), function (on) { API.locks.freezeItem(kind, it.id, on); refreshActive(); })); - } - }); - body.appendChild(vl.el); vl.rebuild(); - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.inv.list(kind).length; } }; - }); - - // Actors (master-detail) - section('actors', ICONS.actors, 'Actors', function (body) { - var detail = el('div', { class: 'fg-detail' }); - var selectedId = null; - var vl = VirtualList({ - rowH: 30, matches: defaultMatch, - getModel: function () { return API.ops.actors.list(); }, - onRowClick: function (it) { showActor(it.id); }, - renderRow: function (row, it) { - row.className = 'fg-row' + (it.id === selectedId ? ' is-selected' : ''); - row.style.cursor = 'pointer'; - row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', html: (it.inParty ? '' : '') + escapeHtml(it.name) })); - row.appendChild(el('span', { class: 'fg-cell--val', text: 'Lv ' + it.level })); - } - }); - var split = el('div', { style: 'flex:1;display:flex;min-height:0' }); - var left = el('div', { style: 'flex:0 0 240px;display:flex;flex-direction:column;border-right:1px solid var(--fg-border)' }); - left.appendChild(vl.el); - split.appendChild(left); split.appendChild(detail); - body.appendChild(split); vl.rebuild(); - var firstA = API.ops.actors.list()[0]; // auto-select first actor so detail isn't empty - if (firstA) showActor(firstA.id); - function showActor(id) { - selectedId = id; vl.draw(); // re-highlight the selected row in the (virtualized) list - var a = API.ops.actors.get(id); detail.innerHTML = ''; - if (!a) { detail.appendChild(el('div', { class: 'fg-empty', text: 'Actor not initialized (start a game first)' })); return; } - detail.appendChild(el('h2', { text: a.name + ' · Lv ' + a.level, style: 'margin:0 0 12px;font-size:15px' })); - var grid = el('div', { class: 'fg-grid' }); - grid.appendChild(numField('Level', function () { return API.ops.actors.get(id).level; }, function (v) { API.ops.actors.setLevel(id, v); showActor(id); })); - grid.appendChild(numField('EXP', function () { return API.ops.actors.get(id).exp; }, function (v) { API.ops.actors.setExp(id, v); showActor(id); })); - grid.appendChild(statField('HP', id, 'hp', function () { return API.ops.actors.get(id).hp; }, function () { return API.ops.actors.get(id).mhp; }, API.ops.actors.setHp)); - grid.appendChild(statField('MP', id, 'mp', function () { return API.ops.actors.get(id).mp; }, function () { return API.ops.actors.get(id).mmp; }, API.ops.actors.setMp)); - grid.appendChild(statField('TP', id, 'tp', function () { return API.ops.actors.get(id).tp; }, function () { return 100; }, API.ops.actors.setTp)); - a.params.forEach(function (p) { grid.appendChild(numField(p.name, function () { return API.ops.actors.get(id).params[p.id].value; }, function (v) { API.ops.actors.setParam(id, p.id, v); })); }); - detail.appendChild(grid); - var actbar = el('div', { style: 'display:flex;gap:8px;margin:14px 0' }, [ - el('button', { class: 'fg-btn', text: 'Recover All', onclick: function () { API.ops.actors.recover(id); showActor(id); } }), - el('button', { class: 'fg-btn', text: a.inParty ? 'Remove from Party' : 'Add to Party', onclick: function () { if (a.inParty) API.ops.actors.removeFromParty(id); else API.ops.actors.addToParty(id); vl.rebuild(); showActor(id); } }) - ]); - detail.appendChild(actbar); - // skills - detail.appendChild(el('h2', { text: 'Skills', style: 'font-size:13px;margin:10px 0 4px;color:var(--fg-text-dim)' })); - var skbox = el('div', { style: 'max-height:140px;overflow:auto;border:1px solid var(--fg-border);border-radius:7px' }); - a.skills.forEach(function (s) { - var r = el('div', { class: 'fg-field', style: 'padding:3px 10px' }, [ - el('span', { style: 'flex:1;font-size:12px', text: s.id + ': ' + s.name }), - el('button', { class: 'fg-btn fg-btn--ghost', text: s.learned ? 'Forget' : 'Learn', onclick: function () { if (s.learned) API.ops.actors.forget(id, s.id); else API.ops.actors.learn(id, s.id); showActor(id); } }) - ]); - skbox.appendChild(r); - }); - detail.appendChild(skbox); - } - function numField(label, get, set) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, set, {}).el); - f.appendChild(el('span', { style: 'flex:0 0 24px;width:24px' })); // empty lock slot -> steppers align with HP/MP/TP rows - return f; - } - function statField(label, id, stat, get, getMax, setFn) { - var f = el('div', { class: 'fg-field' }); f.appendChild(el('label', { text: label })); - f.appendChild(stepper(get, function (v) { setFn(id, v); if (API.locks.isStatFrozen(id, stat)) API.locks.freezeStat(id, stat, true); }, {}).el); - f.appendChild(lockBtn(API.locks.isStatFrozen(id, stat), function (on) { API.locks.freezeStat(id, stat, on); })); - return f; - } - return { onResize: vl.onResize, refresh: function () { vl.rebuild(); }, setQuery: vl.setQuery, count: function () { return API.ops.actors.list().length; } }; - }); - - // Party / Main - section('party', ICONS.party, 'Party', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - d.appendChild(el('div', { class: 'fg-field' }, [ - el('label', { text: 'Gold' }), - stepper(function () { return API.ops.gold.get(); }, function (v) { API.ops.gold.set(v); }, {}).el, - lockBtn(API.LOCK.gold != null, function (on) { API.locks.freezeGold(on); rebuild(); }) - ])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Steps' }), el('span', { text: API.ops.party.steps() })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Members' }), el('span', { text: API.ops.party.members().map(function (m) { return m.name; }).join(', ') || '(none)' })])); - d.appendChild(el('h2', { text: 'Quick actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Gold = Max', onclick: function () { API.ops.gold.set(API.ops.gold.max()); rebuild(); toast('Gold maxed', 'ok'); } }), - el('button', { class: 'fg-btn', text: 'Heal Party', onclick: function () { API.ops.party.members().forEach(function (m) { API.ops.actors.recover(m.id); }); toast('Party healed', 'ok'); } }) - ])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.party.members().length; } }; - }); - - // Map / Teleport - section('map', ICONS.map, 'Map', function (body) { - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var cur = API.ops.map.current(); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Current' }), el('span', { text: 'Map ' + cur.mapId + ' @ (' + cur.x + ',' + cur.y + ')' })])); - var sel = el('select', { class: 'fg-search', style: 'flex:1' }); - API.ops.map.list().forEach(function (m) { sel.appendChild(el('option', { value: m.id, text: m.id + ': ' + m.name })); }); - sel.value = cur.mapId; - var xIn = el('input', { class: 'fg-num', value: cur.x }), yIn = el('input', { class: 'fg-num', value: cur.y }); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Teleport to' }), sel])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'X / Y' }), xIn, yIn, - el('button', { class: 'fg-btn', text: 'Go', onclick: function () { API.ops.map.teleport(Number(sel.value), Number(xIn.value), Number(yIn.value), 0, 2); toast('Teleporting…', 'ok'); } })])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Noclip' }), - (function () { var t = el('button', { class: 'fg-toggle' + (API.ops.map.isNoclip() ? ' is-on' : '') }); t.addEventListener('click', function () { var on = !API.ops.map.isNoclip(); API.ops.map.noclip(on); t.classList.toggle('is-on', on); }); return t; })()])); - d.appendChild(el('div', { class: 'fg-field' }, [el('label', { text: 'Move speed' }), - stepper(function () { return (window.$gamePlayer && $gamePlayer._moveSpeed) || 4; }, function (v) { API.ops.map.speed(v); }, {}).el])); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.ops.map.list().length; } }; - }); - - // Common Events - section('commonev', ICONS.commonev, 'Common Ev.', listSection( - function () { return API.ops.commonev.list(); }, - function (row, it) { - row.className = 'fg-row'; row.innerHTML = ''; - row.appendChild(el('span', { class: 'fg-cell--id', text: it.id })); - row.appendChild(el('span', { class: 'fg-cell--name', text: it.name, title: it.name })); - row.appendChild(el('span', { class: 'fg-cell--val' }, el('button', { class: 'fg-btn', text: 'Run', onclick: function () { confirmBox('Run common event ' + it.id + ' (' + it.name + ')?', function () { API.ops.commonev.run(it.id); toast('Reserved CE ' + it.id, 'ok'); }); } }))); - } - )); - - // Data Lock (aggregated frozen targets) - section('locks', ICONS.locks, 'Data Lock', function (body, head) { - head.appendChild(el('button', { class: 'fg-btn fg-btn--danger', text: 'Unfreeze all', onclick: function () { API.locks.clearAll(); rebuild(); toast('All unfrozen'); } })); - var d = el('div', { class: 'fg-detail' }); - function rebuild() { - d.innerHTML = ''; - var s = API.locks.summary(); - if (!s.length) { d.appendChild(el('div', { class: 'fg-empty', text: 'No frozen values. Use the lock icon on any row to freeze it.' })); return; } - s.forEach(function (row) { - d.appendChild(el('div', { class: 'fg-field' }, [ - el('span', { style: 'flex:1;font-size:12px', text: row.label }), - el('span', { style: 'color:var(--fg-frozen);font-family:var(--font-mono);margin-right:8px', text: String(row.value) }), - el('button', { class: 'fg-btn fg-btn--ghost', text: 'Unfreeze', onclick: function () { unfreeze(row); rebuild(); } }) - ])); - }); - } - function unfreeze(row) { - if (row.type === 'var') API.locks.freezeVar(row.id, false); - else if (row.type === 'switch') API.locks.freezeSwitch(row.id, false); - else if (row.type === 'item') { var p = row.key.split(':'); API.LOCK.items.delete(row.key); } - else if (row.type === 'stat') { API.LOCK.stats.delete(row.key); } - else if (row.type === 'gold') API.locks.freezeGold(false); - else if (row.type === 'noclip') API.ops.map.noclip(false); - } - body.appendChild(d); rebuild(); - return { refresh: rebuild, count: function () { return API.locks.summary().length; } }; - }); - - // Battle cheats - section('battle', ICONS.battle, 'Cheats', function (body) { - var d = el('div', { class: 'fg-detail' }); - function tog(label, get, set) { - var t = el('button', { class: 'fg-toggle' + (get() ? ' is-on' : '') }); - t.addEventListener('click', function () { var v = !get(); set(v); t.classList.toggle('is-on', v); }); - return el('div', { class: 'fg-field' }, [el('label', { text: label }), t]); - } - d.appendChild(tog('God mode (blocks HP loss)', function () { return API.CHEAT.god; }, API.cheats.setGod)); - d.appendChild(tog('One-hit kill', function () { return API.CHEAT.ohko; }, API.cheats.setOhko)); - d.appendChild(tog('No random encounters', function () { return API.CHEAT.noEncounter; }, API.cheats.setNoEncounter)); - // ---- game speed (speedhack) ---- - d.appendChild(el('h2', { text: 'Game speed', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - var speedRow = el('div', { class: 'fg-field' }); - speedRow.appendChild(el('label', { text: 'Speed' })); - var seg = el('div', { class: 'fg-segmented', style: 'flex-wrap:wrap' }); - var presets = [['0.5×', 0.5], ['1×', 1], ['2×', 2], ['3×', 3], ['5×', 5], ['8×', 8]]; - function keyLabel(k) { return k === 'Control' ? 'Ctrl' : (k === ' ' ? 'Space' : k); } - // In KEY mode the highlight = the ARMED target (_speedBoost); in ALWAYS-ON mode = the live speed. - function targetSpeed() { return API._speedUseKey ? (API._speedBoost || 2) : (API.CHEAT.speed || 1); } - function syncSeg() { var t = targetSpeed(); Array.prototype.forEach.call(seg.children, function (b) { b.classList.toggle('is-active', Number(b.dataset.v) === t); }); if (typeof custom !== 'undefined' && custom) custom.value = t; } - // Picking a speed ARMS the target. It only changes the live game speed if key-mode is OFF, or if - // the speedhack is already active (then it live-updates). So buttons respect the key toggle. - function pick(v) { - API._speedBoost = v; store('speedBoost', v); - if (!API._speedUseKey || API.CHEAT.speed !== 1) { API.cheats.setSpeed(v); toast('Speed ' + v + '×', 'ok'); } - else { toast('Armed ' + v + '× — hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - syncSeg(); - } - presets.forEach(function (p) { - var b = el('button', { text: p[0] }); b.dataset.v = p[1]; - b.addEventListener('click', function () { pick(p[1]); }); - seg.appendChild(b); - }); - speedRow.appendChild(seg); - d.appendChild(speedRow); - var customRow = el('div', { class: 'fg-field' }); - customRow.appendChild(el('label', { text: 'Custom ×' })); - var custom = el('input', { class: 'fg-num', type: 'text', value: targetSpeed() }); - custom.addEventListener('keydown', function (e) { if (e.key === 'Enter') { pick(Number(custom.value) || 1); custom.blur(); } }); - custom.addEventListener('blur', function () { pick(Number(custom.value) || 1); }); - customRow.appendChild(custom); - d.appendChild(customRow); - - // ---- use-key toggle (off => speed is always on) ---- - var useKeyRow = el('div', { class: 'fg-field' }); - useKeyRow.appendChild(el('label', { text: 'Use hold key' })); - var ukTog = el('button', { class: 'fg-toggle' + (API._speedUseKey ? ' is-on' : '') }); - ukTog.addEventListener('click', function () { - speedHeld = false; // changing mode ends any active hold so a later key-release won't reset speed - var on = !API._speedUseKey; API._speedUseKey = on; store('speedUseKey', on); ukTog.classList.toggle('is-on', on); - keyRow.style.display = on ? '' : 'none'; - if (on) { API.cheats.setSpeed(1); toast('Speed: hold ' + keyLabel(API._speedKey) + ' to fast-forward', 'ok'); } - else { API.cheats.setSpeed(API._speedBoost || 2); toast('Speed: always on at ' + (API._speedBoost || 2) + '×', 'ok'); } - syncSeg(); - }); - useKeyRow.appendChild(ukTog); - d.appendChild(useKeyRow); - - // ---- rebindable key ---- - var keyRow = el('div', { class: 'fg-field' }); - keyRow.appendChild(el('label', { text: 'Hold key' })); - var keyBtn = el('button', { class: 'fg-btn', text: keyLabel(API._speedKey) }); - keyBtn.addEventListener('click', function () { - keyBtn.textContent = 'Press a key…'; API._capturingSpeedKey = true; - function cap(ev) { - ev.preventDefault(); ev.stopPropagation(); - window.removeEventListener('keydown', cap, true); API._capturingSpeedKey = false; - if (ev.key !== 'Escape') { API._speedKey = ev.key; store('speedKey', ev.key); } - keyBtn.textContent = keyLabel(API._speedKey); - } - window.addEventListener('keydown', cap, true); - }); - keyRow.appendChild(keyBtn); - keyRow.style.display = API._speedUseKey ? '' : 'none'; - d.appendChild(keyRow); - syncSeg(); - d.appendChild(el('h2', { text: 'In-battle actions', style: 'font-size:13px;margin:14px 0 6px;color:var(--fg-text-dim)' })); - d.appendChild(el('div', { style: 'display:flex;gap:8px;flex-wrap:wrap' }, [ - el('button', { class: 'fg-btn', text: 'Instant Win', onclick: function () { API.cheats.instantWin(); toast(API.ops.battle.inBattle() ? 'Enemies downed' : 'Not in battle', API.ops.battle.inBattle() ? 'ok' : 'warn'); } }), - el('button', { class: 'fg-btn', text: 'Flee / Abort', onclick: function () { API.cheats.flee(); } }) - ])); - body.appendChild(d); - return { refresh: function () {}, count: function () { return 0; } }; - }); - - // ---------- render / navigation ---------- - function escapeHtml(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } - function lockBtn(frozen, onToggle) { - var b = el('button', { class: 'fg-lock' + (frozen ? ' is-frozen' : ''), html: frozen ? ICONS.lock : ICONS.unlock, title: 'Freeze value' }); - b.addEventListener('click', function () { frozen = !frozen; b.className = 'fg-lock' + (frozen ? ' is-frozen' : ''); b.innerHTML = frozen ? ICONS.lock : ICONS.unlock; onToggle(frozen); }); - return b; - } - function refreshActive() { if (activeRenderer && activeRenderer.refresh) activeRenderer.refresh(); updateStatus(); } - - SECTIONS.forEach(function (s) { - var item = el('button', { class: 'fg-rail__item', title: s.title }, [el('span', { class: 'ic', html: s.icon }), el('span', { text: s.title.split(' ')[0] })]); - item.addEventListener('click', function () { selectSection(s.id); }); - s._rail = item; rail.appendChild(item); - }); - - function selectSection(id) { - currentSection = id; - SECTIONS.forEach(function (s) { s._rail.classList.toggle('is-active', s.id === id); }); - render(); - store('lastSection', id); - } - function render() { - var s = SECTIONS.filter(function (x) { return x.id === currentSection; })[0]; if (!s) return; - content.innerHTML = ''; - var head = el('div', { class: 'fg-subtoolbar' }); - var sectionHead = el('div', { class: 'fg-section-head' }, [el('h2', { text: s.title }), el('span', { class: 'fg-count', text: '' }), el('span', { class: 'fg-spacer' })]); - content.appendChild(sectionHead); - content.appendChild(head); - var body = el('div', { style: 'flex:1;display:flex;flex-direction:column;min-height:0' }); - content.appendChild(body); - activeRenderer = s.builder(body, head) || {}; - if (head.children.length === 0) head.remove(); - var cnt = activeRenderer.count ? activeRenderer.count() : 0; - sectionHead.querySelector('.fg-count').textContent = cnt + (cnt === 1 ? ' entry' : ' entries'); - // Search only applies to list sections (those expose setQuery); hide it on form sections. - var searchable = !!activeRenderer.setQuery; - // keep the search box's flex space (invisible, not removed) so the titlebar buttons stay anchored right - search.style.visibility = searchable ? 'visible' : 'hidden'; - if (searchable && search.value) activeRenderer.setQuery(search.value.trim()); - updateStatus(); - } - function updateStatus() { - var frozen = API.locks.summary().length; - statusbar.innerHTML = ''; - statusbar.appendChild(el('span', { text: API.env.IS_MZ ? 'RPG Maker MZ' : 'RPG Maker MV' })); - statusbar.appendChild(el('span', { class: 'fg-spacer', style: 'flex:1' })); - statusbar.appendChild(el('span', { text: (frozen ? frozen + ' frozen · ' : '') + 'F10 to toggle' })); - } - - search.addEventListener('input', debounce(function () { if (activeRenderer && activeRenderer.setQuery) activeRenderer.setQuery(search.value.trim()); }, 120)); - function debounce(fn, ms) { var t; return function () { clearTimeout(t); t = setTimeout(fn, ms); }; } - - // ---------- show / hide / hotkeys ---------- - var visible = false; - function show() { visible = true; try { document.body.appendChild(host); } catch (e) {} panel.style.display = 'flex'; launcher.style.display = 'none'; if (!currentSection) selectSection(load('lastSection', 'vars')); else render(); } - function hide() { visible = false; panel.style.display = 'none'; launcher.style.display = 'flex'; API.CHEAT.uiFocused = false; if (typeof Input !== 'undefined' && Input.clear) Input.clear(); } - function toggle() { if (visible) hide(); else show(); } - panel.style.display = 'none'; - - // Speed key = HOLD to fast-forward: while the key is held the game runs at the armed boost speed; - // on release it returns to 1x. Only active when the "use key" option is on. Gated to !uiFocused so - // holding a key while typing in the panel never fast-forwards. - var speedHeld = false; - function isSpeedKey(k) { var sk = API._speedKey || 'Control'; return k === sk || (sk === 'Control' && k === 'Ctrl'); } - function holdStart() { if (!speedHeld) { speedHeld = true; API.cheats.setSpeed(API._speedBoost || 2); toast('Fast-forward ' + API.CHEAT.speed + '×', 'ok'); } } - function holdEnd() { if (speedHeld) { speedHeld = false; API.cheats.setSpeed(1); } } - window.addEventListener('keydown', function (e) { - if (API._capturingSpeedKey) return; // a key-rebind is in progress - var key = e.key || ''; - if (key === (API._hotkey || 'F10')) { e.preventDefault(); toggle(); return; } - if (visible && (e.ctrlKey || e.metaKey) && key.toLowerCase() === 'k') { e.preventDefault(); search.focus(); search.select(); } - else if (visible && key === 'Escape') { if (shadow.activeElement && shadow.activeElement.tagName === 'INPUT') shadow.activeElement.blur(); else hide(); } - if (API._speedUseKey && isSpeedKey(key) && !API.CHEAT.uiFocused) holdStart(); // hold to fast-forward - }, true); - window.addEventListener('keyup', function (e) { - if (API._capturingSpeedKey) return; - if (isSpeedKey(e.key || '')) holdEnd(); - }, true); - window.addEventListener('blur', holdEnd); // alt-tab / focus loss -> stop fast-forward (no stuck key) - - // expose - return { - show: show, hide: hide, toggle: toggle, toast: toast, render: render, - isVisible: function () { return visible; }, root: rootEl, host: host, - select: selectSection, sections: SECTIONS.map(function (s) { return s.id; }) - }; - } - -})(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this)); - -/* ---- MZ scaffolding (registerCommand + start-open) ---- */ -(function () { - var P = (typeof PluginManager !== 'undefined' && PluginManager.parameters) ? PluginManager.parameters('Forge_MZ') : {}; - if (window.Forge) { - window.Forge._hotkey = (P.hotkey || 'F10').trim(); - window.Forge._itemMaxOverride = Number(P.itemMaxOverride) || 0; - try { if (!localStorage.getItem('forge:speedKey')) window.Forge._speedKey = (P.speedKey || 'Control').trim(); } catch (e) { window.Forge._speedKey = (P.speedKey || 'Control').trim(); } - } - if (typeof PluginManager !== 'undefined' && PluginManager.registerCommand) { - PluginManager.registerCommand('Forge_MZ', 'open', function () { if (window.Forge && window.Forge.ui) window.Forge.ui.toggle(); }); - } - if (String(P.startOpen) === 'true' && typeof Scene_Map !== 'undefined') { - var _s = Scene_Map.prototype.start; - Scene_Map.prototype.start = function () { _s.call(this); if (window.Forge && window.Forge.ui && !window.Forge.ui.isVisible()) window.Forge.ui.show(); }; - } -})(); - +(function(){var e=document.createElement(`style`);e.textContent=`@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:#ff6568;--color-orange-400:#ff8b1a;--color-yellow-300:#ffe02a;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-fuchsia-500:#e12afb;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c10;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}@supports (color:lab(0% 0 0)){:root,:host{--color-red-400:lab(63.7053% 60.745 31.3109);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-yellow-300:lab(89.7033% -.480294 84.4917);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-fuchsia-500:lab(56.4256% 83.132 -64.639);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425)}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-left:20px}:where(select:is([multiple],[size])) optgroup option{padding-left:20px}::-webkit-file-upload-button{margin-right:4px}::file-selector-button{margin-right:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{top:0;bottom:0;left:0;right:0}.top-0{top:0}.top-4{top:calc(var(--spacing) * 4)}.top-\\[-0\\.5px\\]{top:-.5px}.top-\\[4px\\]{top:4px}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.left-4{left:calc(var(--spacing) * 4)}.left-\\[4px\\]{left:4px}.left-\\[24px\\]{left:24px}.z-2147482999{z-index:2147482999}.z-2147483000{z-index:2147483000}.z-2147483647{z-index:2147483647}.m-0{margin:0}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-0{min-height:0}.w-1\\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(140px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(160px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(260px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(300px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{grid-gap:calc(var(--spacing) * 2);gap:calc(var(--spacing) * 2)}.gap-3{grid-gap:calc(var(--spacing) * 3);gap:calc(var(--spacing) * 3)}.gap-4{grid-gap:calc(var(--spacing) * 4);gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(var(--spacing) * var(--tw-space-y-reverse));margin-bottom:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(var(--spacing) * var(--tw-space-x-reverse));margin-right:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 1.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 3.5) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-left:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-right:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border\\/50>:not(:last-child)){border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\\[\\#2a2d3a\\]{border-color:#2a2d3a}.border-accent{border-color:var(--color-accent)}.border-accent\\/30{border-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/30{border-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.border-accent\\/50{border-color:rgba(99,102,241,.5)}@supports (color:color-mix(in lab, red, red)){.border-accent\\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\\/50{border-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.border-danger\\/30{border-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.border-danger\\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-fuchsia-500\\/30{border-color:rgba(225,42,251,.3)}@supports (color:color-mix(in lab, red, red)){.border-fuchsia-500\\/30{border-color:color-mix(in oklab, var(--color-fuchsia-500) 30%, transparent)}}.border-gray-500\\/30{border-color:rgba(106,114,130,.3)}@supports (color:color-mix(in lab, red, red)){.border-gray-500\\/30{border-color:color-mix(in oklab, var(--color-gray-500) 30%, transparent)}}.border-ok\\/30{border-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.border-ok\\/30{border-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.border-warn\\/30{border-color:rgba(251,146,60,.3)}@supports (color:color-mix(in lab, red, red)){.border-warn\\/30{border-color:color-mix(in oklab, var(--color-warn) 30%, transparent)}}.border-yellow-500\\/30{border-color:rgba(237,178,0,.3)}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-l-frozen{border-left-color:var(--color-frozen)}.bg-\\[\\#1a1d24\\]{background-color:#1a1d24}.bg-\\[\\#3a3f4d\\]{background-color:#3a3f4d}.bg-\\[\\#7ba4ff\\]\\/10{background-color:rgba(123,164,255,.1);background-color:lab(67.3388% 4.90472 -50.2993/.1)}.bg-\\[\\#13151a\\]{background-color:#13151a}.bg-accent{background-color:var(--color-accent)}.bg-accent-weak{background-color:var(--color-accent-weak)}.bg-accent\\/5{background-color:rgba(99,102,241,.05)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/5{background-color:color-mix(in oklab, var(--color-accent) 5%, transparent)}}.bg-accent\\/10{background-color:rgba(99,102,241,.1)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-accent\\/20{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/20{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.bg-bg{background-color:var(--color-bg)}.bg-bg2{background-color:var(--color-bg2)}.bg-border{background-color:var(--color-border)}.bg-border\\/50{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.bg-border\\/50{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\\/10{background-color:rgba(239,68,68,.1)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-danger\\/20{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/20{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.bg-frozen\\/20{background-color:rgba(139,92,246,.2)}@supports (color:color-mix(in lab, red, red)){.bg-frozen\\/20{background-color:color-mix(in oklab, var(--color-frozen) 20%, transparent)}}.bg-fuchsia-500\\/10{background-color:rgba(225,42,251,.1)}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-500\\/10{background-color:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.bg-gray-500\\/10{background-color:rgba(106,114,130,.1)}@supports (color:color-mix(in lab, red, red)){.bg-gray-500\\/10{background-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.bg-ok{background-color:var(--color-ok)}.bg-ok\\/10{background-color:rgba(16,185,129,.1)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/10{background-color:color-mix(in oklab, var(--color-ok) 10%, transparent)}}.bg-ok\\/20{background-color:rgba(16,185,129,.2)}@supports (color:color-mix(in lab, red, red)){.bg-ok\\/20{background-color:color-mix(in oklab, var(--color-ok) 20%, transparent)}}.bg-transparent{background-color:transparent}.bg-warn\\/10{background-color:rgba(251,146,60,.1)}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-yellow-500\\/10{background-color:rgba(237,178,0,.1)}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\\/10{background-color:color-mix(in oklab, var(--color-yellow-500) 10%, transparent)}}.fill-current{fill:currentColor}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-left:var(--spacing);padding-right:var(--spacing)}.px-1\\.5{padding-left:calc(var(--spacing) * 1.5);padding-right:calc(var(--spacing) * 1.5)}.px-2{padding-left:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 2)}.px-2\\.5{padding-left:calc(var(--spacing) * 2.5);padding-right:calc(var(--spacing) * 2.5)}.px-3{padding-left:calc(var(--spacing) * 3);padding-right:calc(var(--spacing) * 3)}.px-3\\.5{padding-left:calc(var(--spacing) * 3.5);padding-right:calc(var(--spacing) * 3.5)}.px-4{padding-left:calc(var(--spacing) * 4);padding-right:calc(var(--spacing) * 4)}.py-0\\.5{padding-top:calc(var(--spacing) * .5);padding-bottom:calc(var(--spacing) * .5)}.py-1{padding-top:var(--spacing);padding-bottom:var(--spacing)}.py-1\\.5{padding-top:calc(var(--spacing) * 1.5);padding-bottom:calc(var(--spacing) * 1.5)}.py-2{padding-top:calc(var(--spacing) * 2);padding-bottom:calc(var(--spacing) * 2)}.py-3{padding-top:calc(var(--spacing) * 3);padding-bottom:calc(var(--spacing) * 3)}.pt-1{padding-top:var(--spacing)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#7ba4ff\\]{color:#7ba4ff}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-frozen{color:var(--color-frozen)}.text-fuchsia-500{color:var(--color-fuchsia-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-ok{color:var(--color-ok)}.text-orange-400{color:var(--color-orange-400)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,rgba(0,0,0,.1)), 0 4px 6px -4px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)), 0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{user-select:none}.select-text{user-select:text}@media (hover:hover){.group-hover\\:text-accent:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.first-letter\\:text-\\[\\#7ba4ff\\]:first-letter{color:#7ba4ff}@media (hover:hover){.hover\\:bg-\\[\\#2a2d3a\\]:hover{background-color:#2a2d3a}.hover\\:bg-accent\\/20:hover{background-color:rgba(99,102,241,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/20:hover{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.hover\\:bg-accent\\/30:hover{background-color:rgba(99,102,241,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\\:bg-accent\\/80:hover{background-color:rgba(99,102,241,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/80:hover{background-color:color-mix(in oklab, var(--color-accent) 80%, transparent)}}.hover\\:bg-accent\\/85:hover{background-color:rgba(99,102,241,.85)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/85:hover{background-color:color-mix(in oklab, var(--color-accent) 85%, transparent)}}.hover\\:bg-border:hover{background-color:var(--color-border)}.hover\\:bg-border\\/30:hover{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/30:hover{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.hover\\:bg-border\\/50:hover{background-color:rgba(34,37,51,.5)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/50:hover{background-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.hover\\:bg-border\\/80:hover{background-color:rgba(34,37,51,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-border\\/80:hover{background-color:color-mix(in oklab, var(--color-border) 80%, transparent)}}.hover\\:bg-danger\\/20:hover{background-color:rgba(239,68,68,.2)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/20:hover{background-color:color-mix(in oklab, var(--color-danger) 20%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:rgba(239,68,68,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-danger\\/80:hover{background-color:rgba(239,68,68,.8)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/80:hover{background-color:color-mix(in oklab, var(--color-danger) 80%, transparent)}}.hover\\:bg-frozen\\/30:hover{background-color:rgba(139,92,246,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-frozen\\/30:hover{background-color:color-mix(in oklab, var(--color-frozen) 30%, transparent)}}.hover\\:bg-ok\\/30:hover{background-color:rgba(16,185,129,.3)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-ok\\/30:hover{background-color:color-mix(in oklab, var(--color-ok) 30%, transparent)}}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-gray-200:hover{color:var(--color-gray-200)}.hover\\:text-gray-300:hover{color:var(--color-gray-300)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-red-400:hover{color:var(--color-red-400)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-yellow-300:hover{color:var(--color-yellow-300)}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.focus\\:bg-border\\/30:focus{background-color:rgba(34,37,51,.3)}@supports (color:color-mix(in lab, red, red)){.focus\\:bg-border\\/30:focus{background-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\\:cursor-grabbing:active{cursor:grabbing}.disabled\\:opacity-50:disabled{opacity:.5}:host{--color-bg:#0b0c10;--color-bg-elev:#13151f;--color-bg-input:#1a1c29;--color-bg2:#13151f;--color-text:#f1f5f9;--color-text-dim:#9aa1b1;--color-text-faint:#646b7d;--color-accent:#6366f1;--color-accent-weak:#1e3a6e;--color-border:#222533;--color-danger:#ef4444;--color-ok:#10b981;--color-warn:#fb923c;--color-frozen:#8b5cf6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#222533;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#6366f1}body,:host{color:#f1f5f9;font-family:Outfit,system-ui,-apple-system,sans-serif}*,:after,:before{--tw-border-style:solid}.cursor-grab{cursor:-webkit-grab;cursor:grab}.active\\:cursor-grabbing:active{cursor:-webkit-grabbing;cursor:grabbing}.space-x-1>:not([hidden])~:not([hidden]){margin-left:4px}.space-x-1\\.5>:not([hidden])~:not([hidden]){margin-left:6px}.space-x-2>:not([hidden])~:not([hidden]){margin-left:8px}.space-x-2\\.5>:not([hidden])~:not([hidden]){margin-left:10px}.space-x-3>:not([hidden])~:not([hidden]){margin-left:12px}.space-x-4>:not([hidden])~:not([hidden]){margin-left:16px}.space-y-0\\.5>:not([hidden])~:not([hidden]){margin-top:2px}.space-y-1>:not([hidden])~:not([hidden]){margin-top:4px}.space-y-2>:not([hidden])~:not([hidden]){margin-top:8px}.space-y-2\\.5>:not([hidden])~:not([hidden]){margin-top:10px}.space-y-3>:not([hidden])~:not([hidden]){margin-top:12px}.space-y-4>:not([hidden])~:not([hidden]){margin-top:16px}.space-y-6>:not([hidden])~:not([hidden]){margin-top:24px}.divide-y>:not([hidden])~:not([hidden]){border-top-width:1px;border-color:var(--color-border)}input,textarea,[contenteditable=true]{user-select:text!important}button,button:focus{outline:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 transparent;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 transparent;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 transparent;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 transparent;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 transparent;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}} +/*$vite$:1*/`,document.head.appendChild(e);var t=!1,n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){return e()}function g(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function v(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}function y(e){"@babel/helpers - typeof";return y=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},y(e)}function b(e,t){if(y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function x(e){var t=b(e,`string`);return y(t)==`symbol`?t:t+``}function S(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee,C=1<<24,w=1024,te=2048,ne=4096,re=8192,ie=16384,ae=32768,oe=1<<25,se=65536,ce=1<<19,le=1<<20,ue=1<<25,de=65536,fe=1<<21,pe=1<<22,me=1<<23,he=Symbol(`$state`),ge=Symbol(`legacy props`),_e=Symbol(``),ve=Symbol(`proxy path`),ye=Symbol(`attributes`),be=Symbol(`class`),xe=Symbol(`style`),Se=Symbol(`text`),Ce=Symbol(`form reset`),we=Symbol(`hmr anchor`),Te=new class extends Error{constructor(...e){super(...e),S(this,`name`,`StaleReactionError`),S(this,`message`,"The reaction that called `getAbortSignal()` was re-run or destroyed")}},Ee=!!((ee=globalThis.document)!=null&&ee.contentType)&&globalThis.document.contentType.includes(`xml`);function De(e){if(t){let t=Error(`invariant_violation\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${e}"\nhttps://svelte.dev/e/invariant_violation`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/invariant_violation`)}function Oe(e){if(t){let t=Error(`lifecycle_outside_component\n\`${e}(...)\` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ke(){if(t){let e=Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ae(){if(t){let e=Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/bind_invalid_checkbox_value`)}function je(){if(t){let e=Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/derived_references_self`)}function Me(e,n,r){if(t){let t=Error(`each_key_duplicate\n${r?`Keyed each block has duplicate key \`${r}\` at indexes ${e} and ${n}`:`Keyed each block has duplicate key at indexes ${e} and ${n}`}\nhttps://svelte.dev/e/each_key_duplicate`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ne(e,n,r){if(t){let t=Error(`each_key_volatile\nKeyed each block has key that is not idempotent — the key for item at index ${e} was \`${n}\` but is now \`${r}\`. Keys must be the same each time for a given item\nhttps://svelte.dev/e/each_key_volatile`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/each_key_volatile`)}function Pe(e){if(t){let t=Error(`effect_in_teardown\n\`${e}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Fe(){if(t){let e=Error(`effect_in_unowned_derived +Effect cannot be created inside a \`$derived\` value that was not itself created inside an effect +https://svelte.dev/e/effect_in_unowned_derived`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ie(e){if(t){let t=Error(`effect_orphan\n\`${e}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/effect_orphan`)}function Le(){if(t){let e=Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Re(){if(t){let e=Error("invalid_snippet\nCould not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\nhttps://svelte.dev/e/invalid_snippet");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/invalid_snippet`)}function ze(e){if(t){let t=Error(`props_invalid_value\nCannot do \`bind:${e}={undefined}\` when \`${e}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_invalid_value`)}function Be(e){if(t){let t=Error(`props_rest_readonly\nRest element properties of \`$props()\` such as \`${e}\` are readonly\nhttps://svelte.dev/e/props_rest_readonly`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/props_rest_readonly`)}function Ve(e){if(t){let t=Error(`rune_outside_svelte\nThe \`${e}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);throw t.name=`Svelte error`,t}else throw Error(`https://svelte.dev/e/rune_outside_svelte`)}function He(){if(t){let e=Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ue(){if(t){let e=Error(`state_prototype_fixed +Cannot set prototype of \`$state\` object +https://svelte.dev/e/state_prototype_fixed`);throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function We(){if(t){let e=Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ge(){if(t){let e=Error("svelte_boundary_reset_onerror\nA `` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw e.name=`Svelte error`,e}else throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ke={},qe=Symbol(`uninitialized`),Je=Symbol(`filename`),Ye=`http://www.w3.org/1999/xhtml`,Xe=`http://www.w3.org/2000/svg`,Ze=`font-weight: bold`,Qe=`font-weight: normal`;function $e(e){t?console.warn(`%c[svelte] await_reactivity_loss\n%cDetected reactivity loss when reading \`${e}\`. This happens when state is read in an async function after an earlier \`await\`\nhttps://svelte.dev/e/await_reactivity_loss`,Ze,Qe):console.warn(`https://svelte.dev/e/await_reactivity_loss`)}function et(e,n){t?console.warn(`%c[svelte] await_waterfall\n%cAn async derived, \`${e}\` (${n}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\nhttps://svelte.dev/e/await_waterfall`,Ze,Qe):console.warn(`https://svelte.dev/e/await_waterfall`)}function tt(){t?console.warn(`%c[svelte] derived_inert +%cReading a derived belonging to a now-destroyed effect may result in stale values +https://svelte.dev/e/derived_inert`,Ze,Qe):console.warn(`https://svelte.dev/e/derived_inert`)}function nt(e,n,r){t?console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${e}\` attribute on \`${n}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_attribute_changed`)}function rt(e){t?console.warn(`%c[svelte] hydration_mismatch\n%c${e?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${e}`:`Hydration failed because the initial UI does not match what was rendered on the server`}\nhttps://svelte.dev/e/hydration_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/hydration_mismatch`)}function it(){t?console.warn("%c[svelte] select_multiple_invalid_value\n%cThe `value` property of a `` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value",Ze,Qe):console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function at(e){t?console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${e}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`,Ze,Qe):console.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`)}function ot(){t?console.warn("%c[svelte] svelte_boundary_reset_noop\n%cA `` `reset` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop",Ze,Qe):console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function st(e){T=e}var E;function ct(e){if(e===null)throw rt(),Ke;return E=e}function lt(){return ct(gi(E))}function D(e){if(T){if(gi(E)!==null)throw rt(),Ke;E=e}}function ut(e=1){if(T){for(var t=e,n=E;t--;)n=gi(n);E=n}}function dt(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=gi(n);e&&n.remove(),n=i}}function ft(e){if(!e||e.nodeType!==8)throw rt(),Ke;return e.data}function pt(e){return e===this.v}function mt(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ht(e){return!mt(e,this.v)}var gt=!1,_t=!1,vt=!1;function yt(){_t=!0}var bt=null;function xt(e,t){return e.label=t,St(e.v,t),e}function St(e,t){var n;return e==null||(n=e[ve])==null||n.call(e,t),e}function Ct(e){let t=Error(),n=wt();return n.length===0?null:(n.unshift(` +`),o(t,`stack`,{value:n.join(` +`)}),o(t,`name`,{value:e}),t)}function wt(){let e=Error.stackTraceLimit;Error.stackTraceLimit=1/0;let t=Error().stack;if(Error.stackTraceLimit=e,!t)return[];let n=t.split(` +`),r=[];for(let e=0;e{t===Lt&&Rt()})}Lt.push(e)}function Bt(){for(;Lt.length>0;)Rt()}var Vt=new WeakMap;function Ht(e){var n=V;if(n===null)return B.f|=me,e;if(t&&e instanceof Error&&!Vt.has(e)&&Vt.set(e,Wt(e,n)),!(n.f&32768)&&!(n.f&4))throw t&&!n.parent&&e instanceof Error&&Gt(e),e;Ut(e,n)}function Ut(e,n){if(!(n!==null&&n.f&16384)){for(;n!==null;){if(n.f&128){if(!(n.f&32768))throw e;try{n.b.error(e);return}catch(t){e=t}}n=n.parent}throw t&&e instanceof Error&&Gt(e),e}}function Wt(e,t){var n,r;let i=s(e,`message`);if(!(i&&!i.configurable)){for(var a=ui?` `:` `,o=`\n${a}in ${((n=t.fn)==null?void 0:n.name)||``}`,c=t.ctx;c!==null;){var l;o+=`\n${a}in ${(l=c.function)==null?void 0:l[Je].split(`/`).pop()}`,c=c.p}return{message:e.message+`\n${o}\n`,stack:(r=e.stack)==null?void 0:r.split(` +`).filter(e=>!e.includes(`svelte/src/internal`)).join(` +`)}}}function Gt(e){let t=Vt.get(e);t&&(o(e,`message`,{value:t.message}),o(e,`stack`,{value:t.stack}))}var Kt=~(te|ne|w);function qt(e,t){e.f=e.f&Kt|t}function Jt(e){e.f&512||e.deps===null?qt(e,w):qt(e,ne)}function Yt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=de,Yt(t.deps))}function Xt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Yt(e.deps),qt(e,w)}var Zt=!1,Qt=!1;function $t(e){var t=Qt;try{return Qt=!1,[e(),Qt]}finally{Qt=t}}function en(e){let n=0,r=Xr(0),i;return t&&xt(r,`createSubscriber version`),()=>{Ai()&&(H(r),Ri(()=>(n===0&&(i=Ea(()=>e(()=>ei(r)))),n+=1,()=>{zt(()=>{--n,n===0&&(i==null||i(),i=void 0,ei(r))})})))}}function tn(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function nn(e,t){tn(e,t),t.add(e)}function k(e,t,n){tn(e,t),t.set(e,n)}function A(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function j(e,t,n){return e.set(A(e,t),n),n}function M(e,t){return e.get(A(e,t))}var rn=se|ce;function an(e,t,n,r){new Cn(e,t,n,r)}var on=new WeakMap,sn=new WeakMap,cn=new WeakMap,ln=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,pn=new WeakMap,mn=new WeakMap,hn=new WeakMap,gn=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakMap,bn=new WeakMap,xn=new WeakMap,Sn=new WeakSet,Cn=class{constructor(e,n,r,i){var a,o;nn(this,Sn),S(this,`parent`,void 0),S(this,`is_pending`,!1),S(this,`transform_error`,void 0),k(this,on,void 0),k(this,sn,T?E:null),k(this,cn,void 0),k(this,ln,void 0),k(this,un,void 0),k(this,dn,null),k(this,fn,null),k(this,pn,null),k(this,mn,null),k(this,hn,0),k(this,gn,0),k(this,_n,!1),k(this,vn,new Set),k(this,yn,new Set),k(this,bn,null),k(this,xn,en(()=>(j(bn,this,Xr(M(hn,this))),t&&xt(M(bn,this),`$effect.pending()`),()=>{j(bn,this,null)}))),j(on,this,e),j(cn,this,n),j(ln,this,e=>{var t=V;t.b=this,t.f|=128,r(e)}),this.parent=V.b,this.transform_error=(a=i==null?(o=this.parent)==null?void 0:o.transform_error:i)==null?(e=>e):a,j(un,this,zi(()=>{if(T){let e=M(sn,this);lt();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));A(Sn,this,Tn).call(this,t)}else t?A(Sn,this,En).call(this):A(Sn,this,wn).call(this)}else A(Sn,this,Dn).call(this)},rn)),T&&j(on,this,E)}defer_effect(e){Xt(e,M(vn,this),M(yn,this))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!M(cn,this).pending}update_pending_count(e,t){A(Sn,this,An).call(this,e,t),j(hn,this,M(hn,this)+e),!(!M(bn,this)||M(_n,this))&&(j(_n,this,!0),zt(()=>{j(_n,this,!1),M(bn,this)&&Qr(M(bn,this),M(hn,this))}))}get_effect_pending(){return M(xn,this).call(this),H(M(bn,this))}error(e){if(!M(cn,this).onerror&&!M(cn,this).failed)throw e;N!=null&&N.is_fork?(M(dn,this)&&N.skip_effect(M(dn,this)),M(fn,this)&&N.skip_effect(M(fn,this)),M(pn,this)&&N.skip_effect(M(pn,this)),N.oncommit(()=>{A(Sn,this,jn).call(this,e)})):A(Sn,this,jn).call(this,e)}};function wn(){try{j(dn,this,Vi(()=>M(ln,this).call(this,M(on,this))))}catch(e){this.error(e)}}function Tn(e){let t=M(cn,this).failed;t&&j(pn,this,Vi(()=>{t(M(on,this),()=>e,()=>()=>{})}))}function En(){let e=M(cn,this).pending;e&&(this.is_pending=!0,j(fn,this,Vi(()=>e(M(on,this)))),zt(()=>{var e=j(mn,this,document.createDocumentFragment()),t=mi();e.append(t),j(dn,this,A(Sn,this,kn).call(this,()=>Vi(()=>M(ln,this).call(this,t)))),M(gn,this)===0&&(M(on,this).before(e),j(mn,this,null),Ji(M(fn,this),()=>{j(fn,this,null)}),A(Sn,this,On).call(this,N))}))}function Dn(){try{if(this.is_pending=this.has_pending_snippet(),j(gn,this,0),j(hn,this,0),j(dn,this,Vi(()=>{M(ln,this).call(this,M(on,this))})),M(gn,this)>0){var e=j(mn,this,document.createDocumentFragment());Qi(M(dn,this),e);let t=M(cn,this).pending;j(fn,this,Vi(()=>t(M(on,this))))}else A(Sn,this,On).call(this,N)}catch(e){this.error(e)}}function On(e){this.is_pending=!1,e.transfer_effects(M(vn,this),M(yn,this))}function kn(e){var t=V,n=B,r=O;aa(M(un,this)),ia(M(un,this)),Et(M(un,this).ctx);try{return Dr.ensure(),e()}catch(e){return Ht(e),null}finally{aa(t),ia(n),Et(r)}}function An(e,t){if(!this.has_pending_snippet()){if(this.parent){var n;A(Sn,n=this.parent,An).call(n,e,t)}return}j(gn,this,M(gn,this)+e),M(gn,this)===0&&(A(Sn,this,On).call(this,t),M(fn,this)&&Ji(M(fn,this),()=>{j(fn,this,null)}),M(mn,this)&&(M(on,this).before(M(mn,this)),j(mn,this,null)))}function jn(e){M(dn,this)&&(Gi(M(dn,this)),j(dn,this,null)),M(fn,this)&&(Gi(M(fn,this)),j(fn,this,null)),M(pn,this)&&(Gi(M(pn,this)),j(pn,this,null)),T&&(ct(M(sn,this)),ut(),ct(dt()));var t=M(cn,this).onerror;let n=M(cn,this).failed;var r=!1,i=!1;let a=()=>{if(r){ot();return}r=!0,i&&Ge(),M(pn,this)!==null&&Ji(M(pn,this),()=>{j(pn,this,null)}),A(Sn,this,kn).call(this,()=>{A(Sn,this,Dn).call(this)})},o=e=>{try{i=!0,t==null||t(e,a),i=!1}catch(e){Ut(e,M(un,this)&&M(un,this).parent)}n&&j(pn,this,A(Sn,this,kn).call(this,()=>{try{return Vi(()=>{var t=V;t.b=this,t.f|=128,n(M(on,this),()=>e,()=>a)})}catch(e){return Ut(e,M(un,this).parent),null}}))};zt(()=>{var t;try{t=this.transform_error(e)}catch(e){Ut(e,M(un,this)&&M(un,this).parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ut(e,M(un,this)&&M(un,this).parent)):o(t)})}function Mn(e,t){this.v=e,this.k=t}function Nn(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof Mn;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}Nn.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},Nn.prototype.next=function(e){return this._invoke(`next`,e)},Nn.prototype.throw=function(e){return this._invoke(`throw`,e)},Nn.prototype.return=function(e){return this._invoke(`return`,e)};function Pn(e,n,r,i){let a=Pt()?Vn:Gn;var o=e.filter(e=>!e.settled),s=n.map(a);if(t&&s.forEach((e,t)=>{e.label=n[t].toString().replace(`() => `,``).replaceAll(`$.eager(() => `,`$state.eager(`).replace(/\$\.get\((.+?)\)/g,(e,t)=>t)}),r.length===0&&o.length===0){i(s);return}var c=V,l=Fn(),u=o.length===1?o[0].promise:o.length>1?Promise.all(o.map(e=>e.promise)):null;function d(e){if(!(c.f&16384)){l();try{i([...s,...e])}catch(e){Ut(e,c)}In()}}var f=Ln();if(r.length===0){u.then(()=>d([])).finally(f);return}function p(){Promise.all(r.map(e=>Un(e))).then(d).catch(e=>Ut(e,c)).finally(f)}u?u.then(()=>{l(),p(),In()}):p()}function Fn(){var e=V,n=B,r=O,i=N;if(t)var a=Dt;return function(o=!0){aa(e),ia(n),Et(r),o&&!(e.f&16384)&&(i==null||i.activate(),i==null||i.apply()),t&&(zn(null),Ot(a))}}function In(e=!0){aa(null),ia(null),Et(null),e&&(N==null||N.deactivate()),t&&(zn(null),Ot(null))}function Ln(){var e=V,t=e.b,n=N,r=!!(t!=null&&t.is_rendered());return t==null||t.update_pending_count(1,n),n.increment(r,e),()=>{t==null||t.update_pending_count(-1,n),n.decrement(r,e)}}var Rn=null;function zn(e){Rn=e}var Bn=new Set;function Vn(e){var n=2|te;V!==null&&(V.f|=ce);let r={ctx:O,deps:null,effects:null,equals:pt,f:n,fn:e,reactions:null,rv:0,v:qe,wv:0,parent:V,ac:null};return t&&vt&&(r.created=Ct(`created at`)),r}var Hn=Symbol(`obsolete`);function Un(e,n,r){let i=V;i===null&&ke();var a=void 0,o=Xr(qe);t&&(o.label=n==null?e.toString():n);var s=!B,c=new Set;return Li(()=>{var n=V;t&&(Rn={effect:n,effect_deps:new Set,warned:!1});var l=_();a=l.promise;try{Promise.resolve(e()).then(l.resolve,e=>{e!==Te&&l.reject(e)}).finally(In)}catch(e){l.reject(e),In()}if(t){if(Rn){if(n.deps!==null)for(let e=0;e{t&&(Rn=null),f==null||f(),c.delete(l),i!==Hn&&(u.activate(),i?(o.f|=me,Qr(o,i)):(o.f&8388608&&(o.f^=me),t&&r!==void 0&&!o.equals(e)&&(Bn.add(o),setTimeout(()=>{Bn.has(o)&&!(n.f&16384)&&(et(o.label,r),Bn.delete(o))})),Qr(o,e)),u.deactivate())};l.promise.then(m,e=>m(null,e||`unknown`))}),ji(()=>{for(let e of c)e.reject(Hn)}),t&&(o.f|=pe),new Promise(e=>{function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}t(a)})}function Wn(e){let t=Vn(e);return gt||sa(t),t}function Gn(e){let t=Vn(e);return t.equals=ht,t}function Kn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;nthis.schedule(e)){var n=M(Cr,this).get(e);if(n){M(Cr,this).delete(e);for(var r of n.d)qt(r,te),t(r);for(r of n.m)qt(r,ne),t(r)}M(wr,this).add(e)}capture(e,t,n=!1){e.v!==qe&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),nr==null||nr.set(e,t)),this.is_fork||(e.v=t)}activate(){N=this}deactivate(){N=null,nr=null}flush(){try{t&&lr.clear(),ar=!0,N=this,A(Er,this,kr).call(this)}finally{if(cr=0,rr=null,or=null,sr=null,ar=!1,N=null,nr=null,Kr.clear(),t)for(let e of lr)e.updated=null}}discard(){var e;for(let e of M(hr,this))e(this);M(hr,this).clear();for(let e of this.async_deriveds.values())e.reject(Hn);A(Er,this,Fr).call(this),(e=M(vr,this))==null||e.resolve()}register_created_effect(e){M(br,this).push(e)}increment(e,t){if(j(gr,this,M(gr,this)+1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;M(_r,this).set(t,e+1)}}decrement(e,t){if(j(gr,this,M(gr,this)-1),e){var n;let e=(n=M(_r,this).get(t))==null?0:n;e===1?M(_r,this).delete(t):M(_r,this).set(t,e-1)}M(Tr,this)||(j(Tr,this,!0),zt(()=>{j(Tr,this,!1),this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)M(xr,this).add(t);for(let e of t)M(Sr,this).add(e);e.clear(),t.clear()}oncommit(e){M(mr,this).add(e)}ondiscard(e){M(hr,this).add(e)}settled(){var e;return((e=M(vr,this))==null?j(vr,this,_()):e).promise}static ensure(){if(N===null){let t=N=new e;!ar&&!ir&&zt(()=>{M(dr,t)||t.flush()})}return N}apply(){if(!gt||!this.is_fork&&M(fr,this)===null&&M(pr,this)===null){nr=null;return}nr=new Map;for(let[e,[t]]of this.current)nr.set(e,t);for(let t=$n;t!==null;t=M(pr,t))if(!(t===this||t.is_fork)){var e=!1;if(t.id1e3&&(A(Er,this,Fr).call(this),Lr()),t)for(let e of this.current.keys())lr.add(e);for(let e of M(xr,this))M(Sr,this).delete(e),qt(e,te),this.schedule(e);for(let e of M(Sr,this))qt(e,ne),this.schedule(e);let n=M(yr,this);j(yr,this,[]),this.apply();var r=or=[],i=[],a=sr=[];for(let e of n)try{A(Er,this,Ar).call(this,e,r,i)}catch(t){throw Wr(e),A(Er,this,Or).call(this)||this.discard(),t}if(N=null,a.length>0){var o=Qn.ensure();for(let e of a)o.schedule(e)}if(or=null,sr=null,A(Er,this,Or).call(this)){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r);for(let[e,t]of M(Cr,this))Ur(e,t);a.length>0&&A(Er,N,kr).call(N);return}let s=A(Er,this,jr).call(this);if(s){A(Er,this,Nr).call(this,i),A(Er,this,Nr).call(this,r),A(Er,s,Mr).call(s,this);return}M(xr,this).clear(),M(Sr,this).clear();for(let e of M(mr,this))e(this);M(mr,this).clear(),tr=this,zr(i),zr(r),tr=null,(e=M(vr,this))==null||e.resolve();var c=N;if(M(gr,this)===0&&(M(yr,this).length===0||c!==null)&&(A(Er,this,Fr).call(this),gt&&(A(Er,this,Pr).call(this),N=c)),M(yr,this).length>0)if(c!==null){let e=c;M(yr,e).push(...M(yr,this).filter(t=>!M(yr,e).includes(t)))}else c=this;c!==null&&A(Er,c,kr).call(c)}function Ar(e,t,n){e.f^=w;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||M(Cr,this).has(r))&&r.fn!==null){a?r.f^=w:i&4?t.push(r):gt&&i&16777224?n.push(r):_a(r)&&(i&16&&M(Sr,this).add(r),Sa(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}function jr(){for(var e=M(fr,this);e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=M(fr,e)}return null}function Mr(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(M(xr,e),M(Sr,e));let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(M(Sr,this).delete(i),qt(i,te),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),A(Er,e,Fr).call(e),N=this,A(Er,this,kr).call(this)}function Nr(e){for(var t=0;t!d.current.get(e)[1]);if(!(!M(dr,d)||i.length===0)){var a=i.filter(e=>!this.current.has(e));if(a.length===0)e&&d.discard();else if(n.length>0){if(t&&!M(Tr,d)&&Tt(M(yr,d).length===0,`Batch has scheduled roots`),e)for(let e of M(wr,this))d.unskip_effect(e,e=>{e.f&4194320?d.schedule(e):A(Er,d,Nr).call(d,[e])});d.activate();var o=new Set,s=new Map;for(var c of n)Br(c,a,o,s);s=new Map;var l=[...d.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(l.length>0)for(let e of M(br,this))!(e.f&155648)&&Vr(e,l,s)&&(e.f&4194320?(qt(e,te),d.schedule(e)):M(xr,d).add(e));if(M(yr,d).length>0&&!M(Tr,d)){d.apply();for(var u of M(yr,d))A(Er,d,Ar).call(d,u,[],[]);j(yr,d,[])}d.deactivate()}}}}function Fr(){if(this.linked){var e=M(fr,this),t=M(pr,this);e===null?$n=t:j(pr,e,t),t===null?er=e:j(fr,t,e),this.linked=!1}}function Ir(e){var t=ir;ir=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(Bt(),N===null)return n;N.flush()}}finally{ir=t}}function Lr(){if(t){var e=new Map;for(let t of N.current.keys()){var n;for(let[i,a]of(n=t.updated)==null?[]:n){var r=e.get(i);r||(r={error:a.error,count:0},e.set(i,r)),r.count+=a.count}}for(let t of e.values())t.error&&console.error(t.error)}try{Le()}catch(e){t&&o(e,`stack`,{value:``}),Ut(e,rr)}}var Rr=null;function zr(e){var t=e.length;if(t!==0){for(var n=0;n0)){Kr.clear();for(let e of Rr){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Rr.has(n)&&(Rr.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sa(n)}}Rr.clear()}}Rr=null}}function Br(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Br(i,t,n,r):e&4194320&&!(e&2048)&&Vr(i,t,r)&&(qt(i,te),Hr(i))}}function Vr(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(i.call(t,r))return!0;if(r.f&2&&Vr(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function Hr(e){N.schedule(e)}function Ur(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),qt(e,w);for(var n=e.first;n!==null;)Ur(n,t),n=n.next}}function Wr(e){qt(e,w);for(var t=e.first;t!==null;)Wr(t),t=t.next}var Gr=new Set,Kr=new Map;function qr(e){Gr=e}var Jr=!1;function Yr(){Jr=!0}function Xr(e,n){var r={f:0,v:e,reactions:null,equals:pt,rv:0,wv:0};return t&&vt&&(r.created=n==null?Ct(`created at`):n,r.updated=null,r.set_during_effect=!1,r.trace=null),r}function P(e,t){let n=Xr(e,t);return sa(n),n}function Zr(e,t=!1,n=!0){let r=Xr(e);if(t||(r.equals=ht),_t&&n&&O!==null&&O.l!==null){var i,a;((a=(i=O.l).s)==null?i.s=[]:a).push(r)}return r}function F(e,n,r=!1){B!==null&&(!ra||B.f&131072)&&Pt()&&B.f&4325394&&(oa===null||!oa.has(e))&&We();let i=r?I(n):n;return t&&St(i,e.label),Qr(e,i,sr)}function Qr(e,n,r=null){if(!e.equals(n)){Kr.set(e,ta?n:e.v);var i=Dr.ensure();if(i.capture(e,n),t){if(vt||V!==null){var a,o;e.updated!=null||(e.updated=new Map);let t=((a=(o=e.updated.get(``))==null?void 0:o.count)==null?0:a)+1;if(e.updated.set(``,{error:null,count:t}),vt||t>5){let t=Ct(`updated at`);if(t!==null){let n=e.updated.get(t.stack);n||(n={error:t,count:0},e.updated.set(t.stack,n)),n.count++}}}V!==null&&(e.set_during_effect=!0)}if(e.f&2){let t=e;e.f&2048&&Jn(t),nr===null&&Jt(t)}e.wv=ga(),ti(e,te,r),Pt()&&V!==null&&V.f&1024&&!(V.f&96)&&(ua===null?da([e]):ua.push(e)),!i.is_fork&&Gr.size>0&&!Jr&&$r()}return n}function $r(){Jr=!1;for(let e of Gr){e.f&1024&&qt(e,ne);let t;try{t=_a(e)}catch(e){t=!0}t&&Sa(e)}Gr.clear()}function ei(e){F(e,e.v+1)}function ti(e,t,n){var r=e.reactions;if(r!==null)for(var i=Pt(),a=r.length,o=0;o{if(ma===f)return e();var t=B,n=ma;ia(null),ha(f);var r=e();return ia(t),ha(n),r};a&&(i.set(`length`,P(e.length,c)),t&&(e=si(e)));var m=``;let h=!1;function g(e){if(!h){h=!0,m=e,xt(o,`${m} version`);for(let[e,t]of i)xt(t,ri(m,e));h=!1}}return new Proxy(e,{defineProperty(e,n,r){(!(`value`in r)||r.configurable===!1||r.enumerable===!1||r.writable===!1)&&He();var a=i.get(n);return a===void 0?p(()=>{var e=P(r.value,c);return i.set(n,e),t&&typeof n==`string`&&xt(e,ri(m,n)),e}):F(a,r.value,!0),!0},deleteProperty(e,n){var r=i.get(n);if(r===void 0){if(n in e){let e=p(()=>P(qe,c));i.set(n,e),ei(o),t&&xt(e,ri(m,n))}}else F(r,qe),ei(o);return!0},get(n,r,a){var o;if(r===he)return e;if(t&&r===ve)return g;var l=i.get(r),u=r in n;if(l===void 0&&(!u||(o=s(n,r))!=null&&o.writable)&&(l=p(()=>{var e=P(I(u?n[r]:qe),c);return t&&xt(e,ri(m,r)),e}),i.set(r,l)),l!==void 0){var d=H(l);return d===qe?void 0:d}return Reflect.get(n,r,a)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var r=i.get(t);r&&(n.value=H(r))}else if(n===void 0){var a=i.get(t),o=a==null?void 0:a.v;if(a!==void 0&&o!==qe)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,n){var r;if(n===he)return!0;var a=i.get(n),o=a!==void 0&&a.v!==qe||Reflect.has(e,n);return(a!==void 0||V!==null&&(!o||(r=s(e,n))!=null&&r.writable))&&(a===void 0&&(a=p(()=>{var r=P(o?I(e[n]):qe,c);return t&&xt(r,ri(m,n)),r}),i.set(n,a)),H(a)===qe)?!1:o},set(e,n,r,l){var u=i.get(n),d=n in e;if(a&&n===`length`)for(var f=r;fP(qe,c)),i.set(f+``,h),t&&xt(h,ri(m,f))):F(h,qe)}if(u===void 0){var g;(!d||(g=s(e,n))!=null&&g.writable)&&(u=p(()=>P(void 0,c)),t&&xt(u,ri(m,n)),F(u,I(r)),i.set(n,u))}else{d=u.v!==qe;var _=p(()=>I(r));F(u,_)}var v=Reflect.getOwnPropertyDescriptor(e,n);if(v!=null&&v.set&&v.set.call(l,r),!d){if(a&&typeof n==`string`){var y=i.get(`length`),b=Number(n);Number.isInteger(b)&&b>=y.v&&F(y,b+1)}ei(o)}return!0},ownKeys(e){H(o);var t=Reflect.ownKeys(e).filter(e=>{var t=i.get(e);return t===void 0||t.v!==qe});for(var[n,r]of i)r.v!==qe&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ue()}})}function ri(e,t){var n;return typeof t==`symbol`?`${e}[Symbol(${(n=t.description)==null?``:n})]`:ni.test(t)?`${e}.${t}`:/^\d+$/.test(t)?`${e}[${t}]`:`${e}['${t}']`}function ii(e){try{if(typeof e==`object`&&e&&he in e)return e[he]}catch(e){}return e}function ai(e,t){return Object.is(ii(e),ii(t))}var oi=new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);function si(e){return new Proxy(e,{get(e,t,n){var r=Reflect.get(e,t,n);return oi.has(t)?function(...e){Yr();var t=r.apply(this,e);return $r(),t}:r}})}function ci(){let e=Array.prototype,t=Array.__svelte_cleanup;t&&t();let{indexOf:n,lastIndexOf:r,includes:i}=e;e.indexOf=function(e,t){let r=n.call(this,e,t);if(r===-1){for(let n=t==null?0:t;n{e.indexOf=n,e.lastIndexOf=r,e.includes=i}}var li,ui,di,fi;function pi(){if(li===void 0){li=window,ui=/Firefox/.test(navigator.userAgent);var e=Element.prototype,n=Node.prototype,r=Text.prototype;di=s(n,`firstChild`).get,fi=s(n,`nextSibling`).get,f(e)&&(e[be]=void 0,e[ye]=null,e[xe]=void 0,e.__e=void 0),f(r)&&(r[Se]=void 0),t&&(e.__svelte_meta=null,ci())}}function mi(e=``){return document.createTextNode(e)}function hi(e){return di.call(e)}function gi(e){return fi.call(e)}function L(e,t){if(!T)return hi(e);var n=hi(E);if(n===null)n=E.appendChild(mi());else if(t&&n.nodeType!==3){var r=mi();return n==null||n.before(r),ct(r),r}return t&&xi(n),ct(n),n}function _i(e,t=!1){if(!T){var n=hi(e);return n instanceof Comment&&n.data===``?gi(n):n}if(t){if((E==null?void 0:E.nodeType)!==3){var r=mi();return E==null||E.before(r),ct(r),r}xi(E)}return E}function R(e,t=1,n=!1){let r=T?E:e;for(var i;t--;)i=r,r=gi(r);if(!T)return r;if(n){if((r==null?void 0:r.nodeType)!==3){var a=mi();return r===null?i==null||i.after(a):r.before(a),ct(a),a}xi(r)}return ct(r),r}function vi(e){e.textContent=``}function yi(){return!gt||Rr!==null?!1:(V.f&ae)!==0}function bi(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function xi(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Si(e,t){if(t){let t=document.body;e.autofocus=!0,zt(()=>{document.activeElement===t&&e.focus()})}}var Ci=!1;function wi(){Ci||(Ci=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let n of e.target.elements){var t;(t=n[Ce])==null||t.call(n)}})},{capture:!0}))}function Ti(e){var t=B,n=V;ia(null),aa(null);try{return e()}finally{ia(t),aa(n)}}function Ei(e,t,n,r=n){e.addEventListener(t,()=>Ti(n));let i=e[Ce];i?e[Ce]=()=>{i(),r(!0)}:e[Ce]=()=>r(!0),wi()}function Di(e){V===null&&(B===null&&Ie(e),Fe()),ta&&Pe(e)}function Oi(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function ki(e,n){var r=V;if(t)for(;r!==null&&r.f&131072;)r=r.parent;r!==null&&r.f&8192&&(e|=re);var i={ctx:O,deps:null,nodes:null,f:e|te|512,first:null,fn:n,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};t&&(i.component_function=kt),N==null||N.register_created_effect(i);var a=i;if(e&4)or===null?Dr.ensure().schedule(i):or.push(i);else if(n!==null){try{Sa(i)}catch(e){throw Gi(i),e}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&!(a.f&524288)&&(a=a.first,e&16&&e&65536&&a!==null&&(a.f|=se))}if(a!==null&&(a.parent=r,r!==null&&Oi(a,r),B!==null&&B.f&2&&!(e&64))){var o,s=B;((o=s.effects)==null?s.effects=[]:o).push(a)}return i}function Ai(){return B!==null&&!ra}function ji(e){let t=ki(8,null);return qt(t,w),t.teardown=e,t}function Mi(e){Di(`$effect`),t&&o(e,`name`,{value:`$effect`});var n=V.f;if(!B&&n&32&&O!==null&&!O.i){var r,i=O;((r=i.e)==null?i.e=[]:r).push(e)}else return Ni(e)}function Ni(e){return ki(4|le,e)}function Pi(e){return Di(`$effect.pre`),t&&o(e,`name`,{value:`$effect.pre`}),ki(8|le,e)}function Fi(e){Dr.ensure();let t=ki(64|ce,e);return(e={})=>new Promise(n=>{e.outro?Ji(t,()=>{Gi(t),n(void 0)}):(Gi(t),n(void 0))})}function Ii(e){return ki(4,e)}function Li(e){return ki(pe|ce,e)}function Ri(e,t=0){return ki(8|t,e)}function z(e,t=[],n=[],r=[]){Pn(r,t,n,t=>{ki(8,()=>{e(...t.map(H))})})}function zi(e,n=0){var r=ki(16|n,e);return t&&(r.dev_stack=Dt),r}function Bi(e,n=0){var r=ki(C|n,e);return t&&(r.dev_stack=Dt),r}function Vi(e){return ki(32|ce,e)}function Hi(e){var t=e.teardown;if(t!==null){let e=ta,n=B;na(!0),ia(null);try{t.call(null)}finally{na(e),ia(n)}}}function Ui(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&Ti(()=>{e.abort(Te)});var r=n.next;n.f&64?n.parent=null:Gi(n,t),n=r}}function Wi(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Gi(t),t=n}}function Gi(e,n=!0){var r=!1;(n||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Ki(e.nodes.start,e.nodes.end),r=!0),e.f|=oe,Ui(e,n&&!r),xa(e,0);var i=e.nodes&&e.nodes.t;if(i!==null)for(let e of i)e.stop();Hi(e),e.f^=oe,e.f|=ie;var a=e.parent;a!==null&&a.first!==null&&qi(e),t&&(e.component_function=null),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Ki(e,t){for(;e!==null;){var n=e===t?null:gi(e);e.remove(),e=n}}function qi(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Ji(e,t,n=!0){var r=[];Yi(e,r,!0);var i=()=>{n&&Gi(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Yi(e,t,n){if(!(e.f&8192)){e.f^=re;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Yi(i,t,o?n:!1)}i=a}}}function Xi(e){Zi(e,!0)}function Zi(e,t){if(e.f&8192){e.f^=re,e.f&1024||(qt(e,te),Dr.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Zi(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Qi(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:gi(n);t.append(n),n=i}}var $i=null,ea=!1,ta=!1;function na(e){ta=e}var B=null,ra=!1;function ia(e){B=e}var V=null;function aa(e){V=e}var oa=null;function sa(e){if(B!==null&&(!gt||B.f&2)){var t;((t=oa)==null?oa=new Set:t).add(e)}}var ca=null,la=0,ua=null;function da(e){ua=e}var fa=1,pa=0,ma=pa;function ha(e){ma=e}function ga(){return++fa}function _a(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~de),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&nr===null&&qt(e,w)}return!1}function va(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!gt&&oa!==null&&oa.has(e)))for(var i=0;i{e.ac.abort(Te)}),e.ac=null);try{e.f|=fe;var u=e.fn,d=u();e.f|=ae;var f=e.deps,p=N==null?void 0:N.is_fork;if(ca!==null){var m;if(p||xa(e,la),f!==null&&la>0)for(f.length=la+ca.length,m=0;m{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Ir()}function H(e){var n=(e.f&2)!=0;if($i==null||$i.add(e),B!==null&&!ra&&!(V!==null&&V.f&16384)&&(oa===null||!oa.has(e))){var r=B.deps;if(B.f&2097152)e.rvn==null?void 0:n.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?zt(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Ua(e,t,n,r,i){var a={capture:r,passive:i},o=Ha(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&ji(()=>{t.removeEventListener(e,o,a)})}function U(e,t,n){var r;((r=t[za])==null?t[za]={}:r)[e]=n}function Wa(e){for(var t=0;t{throw e});throw m}}finally{e[za]=n,delete e.currentTarget,ia(f),aa(p)}}}var qa,Ja=((qa=globalThis)==null||(qa=qa.window)==null?void 0:qa.trustedTypes)&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Ya(e){var t;return(t=Ja==null?void 0:Ja.createHTML(e))==null?e:t}function Xa(e){var t=bi(`template`);return t.innerHTML=Ya(e.replaceAll(``,``)),t.content}function Za(e,t){var n=V;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(T)return Za(E,null),E;i===void 0&&(i=Xa(a?e:``+e),n||(i=hi(i)));var t=r||ui?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=hi(t),s=t.lastChild;Za(o,s)}else Za(t,t);return t}}function Qa(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}${n}>`,o;return()=>{if(T)return Za(E,null),E;if(!o){var e=hi(Xa(a));if(i)for(o=document.createDocumentFragment();hi(e);)o.appendChild(hi(e));else o=hi(e)}var t=o.cloneNode(!0);if(i){var n=hi(t),r=t.lastChild;Za(n,r)}else Za(t,t);return t}}function $a(e,t){return Qa(e,t,`svg`)}function eo(){if(T)return Za(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=mi();return e.append(t,n),Za(t,n),e}function G(e,t){if(T){var n=V;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),lt();return}e!==null&&e.before(t)}function K(e,t){var n,r,i=t==null?``:typeof t==`object`?`${t}`:t;i!==((r=(n=e)[Se])==null?n[Se]=e.nodeValue:r)&&(e[Se]=i,e.nodeValue=`${i}`)}function to(e,t){return ro(e,t)}var no=new Map;function ro(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){pi();var l=void 0,u=Fi(()=>{var s=n==null?t.appendChild(mi()):n;an(s,{pending:()=>{}},t=>{Mt({});var n=O;if(o&&(n.c=o),i&&(r.$$events=i),T&&Za(t,null),l=e(t,r)||{},T&&(V.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw rt(),Ke;Nt()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=no.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ka),r.delete(e),r.size===0&&no.delete(n)):r.set(e,i)}if(Va.delete(d),s!==n){var a;(a=s.parentNode)==null||a.removeChild(s)}}});return io.set(l,u),l}var io=new WeakMap,ao=new WeakMap,oo=new WeakMap,so=new WeakMap,co=new WeakMap,lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,po=class{constructor(e,n=!0){S(this,`anchor`,void 0),k(this,ao,new Map),k(this,oo,new Map),k(this,so,new Map),k(this,co,new Set),k(this,lo,!0),k(this,uo,e=>{if(M(ao,this).has(e)){var n=M(ao,this).get(e),r=M(oo,this).get(n);if(r)Xi(r),M(co,this).delete(n);else{var i=M(so,this).get(n);i&&(Xi(i.effect),M(oo,this).set(n,i.effect),M(so,this).delete(n),t&&(i.fragment.lastChild[we]=this.anchor),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(let[t,n]of M(ao,this)){if(M(ao,this).delete(t),t===e)break;let r=M(so,this).get(n);r&&(Gi(r.effect),M(so,this).delete(n))}for(let[e,t]of M(oo,this)){if(e===n||M(co,this).has(e))continue;let i=()=>{if(Array.from(M(ao,this).values()).includes(e)){var n=document.createDocumentFragment();Qi(t,n),n.append(mi()),M(so,this).set(e,{effect:t,fragment:n})}else Gi(t);M(co,this).delete(e),M(oo,this).delete(e)};M(lo,this)||!r?(M(co,this).add(e),Ji(t,i,!1)):i()}}}),k(this,fo,e=>{M(ao,this).delete(e);let t=Array.from(M(ao,this).values());for(let[e,n]of M(so,this))t.includes(e)||(Gi(n.effect),M(so,this).delete(e))}),this.anchor=e,j(lo,this,n)}ensure(e,t){var n=N,r=yi();if(t&&!M(oo,this).has(e)&&!M(so,this).has(e))if(r){var i=document.createDocumentFragment(),a=mi();i.append(a),M(so,this).set(e,{effect:Vi(()=>t(a)),fragment:i})}else M(oo,this).set(e,Vi(()=>t(this.anchor)));if(M(ao,this).set(n,e),r){for(let[t,r]of M(oo,this))t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of M(so,this))t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(M(uo,this)),n.ondiscard(M(fo,this))}else T&&(this.anchor=E),M(uo,this).call(this,n)}};function mo(e,t,n=!1){var r;T&&(r=E,lt());var i=new po(e),a=n?se:0;function o(e,t){if(T){var n=ft(r);if(e!==parseInt(n.substring(1))){var a=dt();ct(a),i.anchor=a,st(!1),i.ensure(e,t),st(!0);return}}i.ensure(e,t)}zi(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function ho(e,t){return t}function go(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;_o(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;vi(d),d.append(u),e.items.clear()}_o(e,t,!l)}else{var f;o={pending:new Set(t),done:new Set},((f=e.outrogroups)==null?e.outrogroups=new Set:f).add(o)}}function _o(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=i();return n(e)?e:e==null?[]:a(e)});t&&xt(p,`{#each ...}`);var m,h=new Map,g=!0;function _(e){y.effect.f&16384||(y.pending.delete(e),y.fallback=f,xo(y,m,l,r,o),f!==null&&(m.length===0?f.f&33554432?(f.f^=ue,Co(f,null,l)):Xi(f):Ji(f,()=>{f=null})))}function v(e){y.pending.delete(e)}var y={effect:zi(()=>{m=H(p);var e=m.length;let n=!1;T&&ft(l)===`[!`!=(e===0)&&(l=dt(),ct(l),st(!1),n=!0);for(var a=new Set,d=N,y=yi(),b=0;bc(l)):(f=Vi(()=>{var e;return c((e=vo)==null?vo=mi():e)}),f.f|=ue)),e>a.size&&(t?To(m,o):Me(``,``,``)),T&&e>0&&ct(dt()),!g)if(h.set(d,a),y){for(let[e,t]of u)a.has(e)||d.skip_effect(t.e);d.oncommit(_),d.ondiscard(v)}else _(d);n&&st(!0),H(p)}),flags:r,items:u,pending:h,outrogroups:null,fallback:f};g=!1,T&&(l=E)}function bo(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function xo(e,t,n,r,i){var o=(r&8)!=0,s=t.length,c=e.items,l=bo(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o){for(v=0;v0){var se=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f){var e;(e=_.nodes)==null||(e=e.a)==null||e.apply()}})}function So(e,n,r,i,a,o,s,c){var l=s&1?s&16?Xr(r):Zr(r,!1,!1):null,u=s&2?Xr(a):null;return t&&l&&(l.trace=()=>{var e;c()[(e=u==null?void 0:u.v)==null?a:e]}),{v:l,i:u,e:Vi(()=>(o(n,l==null?r:l,u==null?a:u,c),()=>{e.delete(i)}))}}function Co(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=gi(r);if(a.before(r),r===i)return;r=o}}function wo(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function To(e,t){let n=new Map,r=e.length;for(let i=0;i{var e;let a=(e=n())==null?null:e;t&&a==null&&Re(),i.ensure(a,a&&(e=>a(e,...r)))},se)}var Do=()=>performance.now(),Oo={tick:e=>requestAnimationFrame(e),now:()=>Do(),tasks:new Set};function ko(){let e=Oo.now();Oo.tasks.forEach(t=>{t.c(e)||(Oo.tasks.delete(t),t.f())}),Oo.tasks.size!==0&&Oo.tick(ko)}function Ao(e){let t;return Oo.tasks.size===0&&Oo.tick(ko),{promise:new Promise(n=>{Oo.tasks.add(t={c:e,f:n})}),abort(){Oo.tasks.delete(t)}}}function jo(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Mo(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=jo(n.trim());t[i]=r.trim()}return t}var No=e=>e,Po=null;function Fo(e){Po=e}function Io(e,t,n){var r,i=((r=Po)==null?V:r).nodes,a,o,s,c=null;i.a!=null||(i.a={element:e,measure(){a=this.element.getBoundingClientRect()},apply(){if(s==null||s.abort(),o=this.element.getBoundingClientRect(),a.left!==o.left||a.right!==o.right||a.top!==o.top||a.bottom!==o.bottom){let e=t()(this.element,{from:a,to:o},n==null?void 0:n());s=Lo(this.element,e,void 0,1,()=>{},()=>{s==null||s.abort(),s=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var i=e.style;c={position:i.position,width:i.width,height:i.height,transform:i.transform},i.position=`absolute`,i.width=n,i.height=r;var o=e.getBoundingClientRect();if(a.left!==o.left||a.top!==o.top){var s=`translate(${a.left-o.left}px, ${a.top-o.top}px)`;i.transform=i.transform?`${i.transform} ${s}`:s}}}},unfix(){if(c){var t=e.style;t.position=c.position,t.width=c.width,t.height=c.height,t.transform=c.transform}}}),i.a.element=e}function Lo(e,t,n,r,i,a){var o=r===1;if(p(t)){var s,c=!1;return zt(()=>{c||(s=Lo(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n==null||n.deactivate(),!(t!=null&&t.duration)&&!(t!=null&&t.delay))return i(),a(),{abort:m,deactivate:m,reset:m,t:()=>r};let{delay:l=0,css:u,tick:d,easing:f=No}=t;var h=[];if(o&&n===void 0&&(d&&d(0,1),u)){var g=Mo(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{var o;v.cancel(),i();var s=(o=n==null?void 0:n.t())==null?1-r:o;n==null||n.abort();var c=r-s,l=t.duration*Math.abs(c),p=[];if(l>0){var m=!1;if(u)for(var h=Math.ceil(l/(1e3/60)),g=0;g<=h;g+=1){var y=s+c*f(g/h),b=Mo(u(y,1-y));p.push(b),m||(m=b.overflow===`hidden`)}m&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return s+c*f(e/l)},d&&Ao(()=>{if(v.playState!==`running`)return!1;var e=_();return d(e,1-e),!0})}v=e.animate(p,{duration:l,fill:`forwards`}),v.onfinish=()=>{_=()=>r,d==null||d(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=m)},deactivate:()=>{a=m},reset:()=>{r===0&&(d==null||d(1,0))},t:()=>_()}}function Ro(e,n,r,i,a,o){let s=T;T&<();var c=t&&o&&(O==null?void 0:O.function[Je]),l=null;T&&E.nodeType===1&&(l=E,lt());var u=T?E:e,d=V,f=new po(u,!1);zi(()=>{let e=n()||null;var s=a?a():r||e===`svg`?Xe:void 0;if(e===null){f.ensure(null,null);return}return f.ensure(e,n=>{if(e){if(l=T?l:bi(e,s),t&&o&&(l.__svelte_meta={parent:Dt,loc:{file:c,line:o[0],column:o[1]}}),Za(l,l),i){var r=null;T&&Ra(e)&&l.append(r=document.createComment(``));var a=T?hi(l):l.appendChild(mi());T&&(a===null?st(!1):ct(a)),Fo(d),i(l,a),r==null||r.remove(),Fo(null)}V.nodes.end=l,n.before(l)}T&&ct(n)}),()=>{}},se),ji(()=>{}),s&&(st(!0),ct(u))}function zo(e,t){var n=void 0,r;Bi(()=>{n!==(n=t())&&(r&&(Gi(r),r=null),n&&(r=Vi(()=>{Ii(()=>n(e))})))})}function Bo(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Uo.includes(r[o-1]))&&(s===r.length||Uo.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Go(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Ko(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function qo(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Ko)),i&&c.push(...Object.keys(i).map(Ko));var l=0,u=-1;let t=e.length;for(var d=0;d{Zo(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),ji(()=>{t.disconnect()})}function $o(e,t,n=t){var r=new WeakSet,i=!0;Ei(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),es);else{var o,s=(o=e.querySelector(i))==null?e.querySelector(`option:not([disabled])`):o;a=s&&es(s)}n(a),e.__value=a,N!==null&&r.add(N)}),Ii(()=>{var a=t();if(e===document.activeElement){var o=gt?tr:N;if(r.has(o))return}if(Zo(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=es(s),n(a))}e.__value=a,i=!1}),Qo(e)}function es(e){return`__value`in e?e.__value:e.value}var ts=Symbol(`class`),ns=Symbol(`style`),rs=Symbol(`is custom element`),is=Symbol(`is html`),as=Ee?`link`:`LINK`,os=Ee?`input`:`INPUT`,ss=Ee?`option`:`OPTION`,cs=Ee?`select`:`SELECT`,ls=Ee?`progress`:`PROGRESS`;function us(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ps(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ps(e,`checked`,null),e.checked=r}}};e[Ce]=n,zt(n),wi()}}function ds(e,t){var n=gs(e);n.value===(n.value=t==null?void 0:t)||e.value===t&&(t!==0||e.nodeName!==ls)||(e.value=t==null?``:t)}function fs(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ps(e,t,n,r){var i=gs(e);if(T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===as)){r||ys(e,t,n==null?``:n);return}i[t]!==(i[t]=n)&&(t===`loading`&&(e[_e]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&vs(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ms(e,t,n,r,i=!1,a=!1){if(T&&i&&e.nodeName===os){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||us(o)}var s=gs(e),c=s[rs],l=!s[is];let u=T&&c;u&&st(!1);var d=t||{},f=e.nodeName===ss;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ho(n.class):(r||n[ts])&&(n.class=null),n[ns]&&(n.style!=null||(n.style=null));var m=vs(e);if(e.nodeName===os&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,ps(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){Jo(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t==null?void 0:t[ts],n[ts]),d[i]=o,d[ts]=n[ts];continue}if(i===`style`){Xo(e,o,t==null?void 0:t[ns],n[ns]),d[i]=o,d[ns]=n[ns];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=ja(r);if(ka(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)U(r,e,o),Wa([r]);else if(o!=null){function y(e){d[i].call(this,e)}d[n]=Ha(r,e,y,t)}}else if(i===`style`)ps(e,i,o);else if(i===`autofocus`)Si(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)fs(e,o);else{var b=i;l||(b=Pa(b));var x=b===`defaultValue`||b===`defaultChecked`;if(o==null&&!c&&!x)if(s[i]=null,b===`value`||b===`checked`){let n=e,r=t===void 0;if(b===`value`){let e=n.defaultValue;n.removeAttribute(b),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(b),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else x||m.includes(b)&&(c||typeof o!=`string`)?(e[b]=o,b in s&&(s[b]=qe)):typeof o!=`function`&&ps(e,b,o,a)}}}return u&&st(!0),d}function hs(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Pn(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===cs,l=!1;if(Bi(()=>{var u=t(...n.map(H)),d=ms(e,r,u,a,o,s);l&&c&&`value`in u&&Zo(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Gi(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Gi(i[t]),i[t]=Vi(()=>zo(e,()=>f))),d[t]=f}r=d}),c){var u=e;Ii(()=>{Zo(u,r.value,!0),Qo(u)})}l=!0})}function gs(e){var t,n;return(n=(t=e)[ye])==null?t[ye]={[rs]:e.nodeName.includes(`-`),[is]:e.namespaceURI===Ye}:n}var _s=new Map;function vs(e){var t=e.getAttribute(`is`)||e.nodeName,n=_s.get(t);if(n)return n;_s.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=d(i)}return n}function ys(e,n,r){var i;t&&(n===`srcset`&&Ss(e,r)||bs((i=e.getAttribute(n))==null?``:i,r)||nt(n,e.outerHTML.replace(e.innerHTML,e.innerHTML&&`...`),String(r)))}function bs(e,t){return e===t?!0:new URL(e,document.baseURI).href===new URL(t,document.baseURI).href}function xs(e){return e.split(`,`).map(e=>e.trim().split(` `).filter(Boolean))}function Ss(e,t){var n=xs(e.srcset),r=xs(t);return r.length===n.length&&r.every(([e,t],r)=>t===n[r][1]&&(bs(n[r][0],e)||bs(e,n[r][0])))}function Cs(e,n,r=n){var i=new WeakSet;Ei(e,`input`,async a=>{t&&e.type===`checkbox`&&Ae();var o=a?e.defaultValue:e.value;if(o=ws(e)?Ts(o):o,r(o),N!==null&&i.add(N),await Ca(),o!==(o=n())){var s,c=e.selectionStart,l=e.selectionEnd,u=e.value.length;if(e.value=(s=o)==null?``:s,l!==null){var d=e.value.length;c===l&&l===u&&d>u?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=c,e.selectionEnd=Math.min(l,d))}}}),(T&&e.defaultValue!==e.value||Ea(n)==null&&e.value)&&(r(ws(e)?Ts(e.value):e.value),N!==null&&i.add(N)),Ri(()=>{t&&e.type===`checkbox`&&Ae();var r=n();if(e===document.activeElement){var a=gt?tr:N;if(i.has(a))return}ws(e)&&r===Ts(e.value)||e.type===`date`&&!r&&!e.value||r!==e.value&&(e.value=r==null?``:r)})}function ws(e){var t=e.type;return t===`number`||t===`range`}function Ts(e){return e===``?null:+e}var Es,Ds=new WeakMap,Os=new WeakMap,ks=new WeakMap,As=new WeakSet,js=class{constructor(e){nn(this,As),k(this,Ds,new WeakMap),k(this,Os,void 0),k(this,ks,void 0),j(ks,this,e)}observe(e,t){var n=M(Ds,this).get(e)||new Set;return n.add(t),M(Ds,this).set(e,n),A(As,this,Ms).call(this).observe(e,M(ks,this)),()=>{var n=M(Ds,this).get(e);n.delete(t),n.size===0&&(M(Ds,this).delete(e),M(Os,this).unobserve(e))}}};Es=js;function Ms(){var e;return(e=M(Os,this))==null?j(Os,this,new ResizeObserver(e=>{for(var t of e){Es.entries.set(t.target,t);for(var n of M(Ds,this).get(t.target)||[])n(t)}})):e}S(js,`entries`,new WeakMap);function Ns(e,t){return e===t||(e==null?void 0:e[he])===t}function Ps(e={},t,n,r){var i=O.r,a=V;return Ii(()=>{var o,s;return Ri(()=>{o=s,s=(r==null?void 0:r())||[],Ea(()=>{Ns(n(...s),e)||(t(e,...s),o&&Ns(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ns(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c==null||c()}}}),e}function Fs(e=!1){let t=O,n=t.l.u;if(!n)return;let r=()=>Da(t.s);if(e){let e=0,n={},i=Vn(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&Pi(()=>{Is(t,r),g(n.b)}),Mi(()=>{let e=Ea(()=>n.m.map(h));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Mi(()=>{Is(t,r),g(n.a)})}function Is(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function Ls(e){var t=Xr(0);return function(){return arguments.length===1?(F(t,H(t)+1),arguments[0]):(H(t),e())}}var Rs={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,n){return t&&Be(`${e.name}.${String(n)}`),!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.has(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function zs(e,n,r){return new Proxy(t?{props:e,exclude:n,name:r,other:{},to_proxy:[]}:{props:e,exclude:n},Rs)}var Bs={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===he||t===ge)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Vs(...e){return new Proxy({props:e},Bs)}function Hs(e,n,r,i){var a=!_t||(r&2)!=0,o=(r&8)!=0,c=(r&16)!=0,l=i,u=!0,d=void 0,f=()=>c&&a?(d!=null||(d=Vn(i)),H(d)):(u&&(u=!1,l=c?Ea(i):i),l);let p;if(o){var m,h,g=he in e||ge in e;p=(m=(h=s(e,n))==null?void 0:h.set)==null?g&&n in e?t=>e[n]=t:void 0:m}var _,v=!1;o?[_,v]=$t(()=>e[n]):_=e[n],_===void 0&&i!==void 0&&(_=f(),p&&(a&&ze(n),p(_)));var y=a?()=>{var t=e[n];return t===void 0?f():(u=!0,t)}:()=>{var t=e[n];return t!==void 0&&(l=void 0),t===void 0?l:t};if(a&&!(r&4))return y;if(p){var b=e.$$legacy;return(function(e,t){return arguments.length>0?((!a||!t||b||v)&&p(t?y():e),e):y()})}var x=!1,S=(r&1?Vn:Gn)(()=>(x=!1,y()));t&&(S.label=n),o&&H(S);var ee=V;return(function(e,t){if(arguments.length>0){let n=t?H(S):a&&o?I(e):e;return F(S,n),x=!0,l!==void 0&&(l=n),e}return ta&&x||ee.f&16384?S.v:H(S)})}if(t){function Us(e){if(!(e in globalThis)){let t;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(t!==void 0)return t;Ve(e)},set:e=>{t=e}})}}Us(`$state`),Us(`$effect`),Us(`$derived`),Us(`$inspect`),Us(`$props`),Us(`$bindable`)}function Ws(e){O===null&&Oe(`onMount`),_t&&O.l!==null?Gs(O).m.push(e):Mi(()=>{let t=Ea(e);if(typeof t==`function`)return t})}function Gs(e){var t,n=e.l;return(t=n.u)==null?n.u={a:[],b:[],m:[]}:t}if(typeof window<`u`){var Ks,qs,Js,Ys;((qs=(Ks=(Ys=(Js=window).__svelte)==null?Js.__svelte={}:Ys).v)==null?Ks.v=new Set:qs).add(`5`)}var Xs={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},Zs=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Qs=Symbol(`lucide-context`),$s=()=>jt(Qs),ec=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),tc=$a(``);function nc(e,t){var n;Mt(t,!0);let r=(n=$s())==null?{}:n,i=Hs(t,`color`,19,()=>{var e;return(e=r.color)==null?`currentColor`:e}),a=Hs(t,`size`,19,()=>{var e;return(e=r.size)==null?24:e}),o=Hs(t,`strokeWidth`,19,()=>{var e;return(e=r.strokeWidth)==null?2:e}),s=Hs(t,`absoluteStrokeWidth`,19,()=>{var e;return(e=r.absoluteStrokeWidth)==null?!1:e}),c=Hs(t,`iconNode`,19,()=>[]),l=zs(t,ec),u=Wn(()=>s()?Number(o())*24/Number(a()):o());var d=tc();hs(d,e=>({...Xs,...e,...l,width:a(),height:a(),stroke:i(),"stroke-width":H(u),class:[`lucide-icon lucide`,r.class,t.name&&`lucide-${t.name}`,t.class]}),[()=>!t.children&&!Zs(l)&&{"aria-hidden":`true`}]);var f=L(d);yo(f,17,c,ho,(e,t)=>{var n=Wn(()=>v(H(t),2));let r=()=>H(n)[0],i=()=>H(n)[1];var a=eo();Ro(_i(a),r,!0,(e,t)=>{hs(e,()=>({...i()}))}),G(e,a)}),Eo(R(f),()=>{var e;return(e=t.children)==null?m:e}),D(d),G(e,d),Nt()}var rc=new Set([`$$slots`,`$$events`,`$$legacy`]);function ic(e,t){let n=zs(t,rc),r=[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`}]];nc(e,Vs({name:`hash`},()=>n,{get iconNode(){return r}}))}var ac=new Set([`$$slots`,`$$events`,`$$legacy`]);function oc(e,t){let n=zs(t,ac),r=[[`path`,{d:`M10 8h.01`}],[`path`,{d:`M12 12h.01`}],[`path`,{d:`M14 8h.01`}],[`path`,{d:`M16 12h.01`}],[`path`,{d:`M18 8h.01`}],[`path`,{d:`M6 8h.01`}],[`path`,{d:`M7 16h10`}],[`path`,{d:`M8 12h.01`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`}]];nc(e,Vs({name:`keyboard`},()=>n,{get iconNode(){return r}}))}var sc=new Set([`$$slots`,`$$events`,`$$legacy`]);function cc(e,t){let n=zs(t,sc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`}]];nc(e,Vs({name:`lock-open`},()=>n,{get iconNode(){return r}}))}var lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function uc(e,t){let n=zs(t,lc),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];nc(e,Vs({name:`lock`},()=>n,{get iconNode(){return r}}))}var dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function fc(e,t){let n=zs(t,dc),r=[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`}],[`circle`,{cx:`12`,cy:`10`,r:`3`}]];nc(e,Vs({name:`map-pin`},()=>n,{get iconNode(){return r}}))}var pc=new Set([`$$slots`,`$$events`,`$$legacy`]);function mc(e,t){let n=zs(t,pc),r=[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`}]];nc(e,Vs({name:`message-square`},()=>n,{get iconNode(){return r}}))}var hc=new Set([`$$slots`,`$$events`,`$$legacy`]);function gc(e,t){let n=zs(t,hc),r=[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`}],[`path`,{d:`M12 22V12`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`}],[`path`,{d:`m7.5 4.27 9 5.15`}]];nc(e,Vs({name:`package`},()=>n,{get iconNode(){return r}}))}var _c=new Set([`$$slots`,`$$events`,`$$legacy`]);function vc(e,t){let n=zs(t,_c),r=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];nc(e,Vs({name:`settings`},()=>n,{get iconNode(){return r}}))}var yc=new Set([`$$slots`,`$$events`,`$$legacy`]);function bc(e,t){let n=zs(t,yc),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];nc(e,Vs({name:`star`},()=>n,{get iconNode(){return r}}))}var xc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sc(e,t){let n=zs(t,xc),r=[[`circle`,{cx:`9`,cy:`12`,r:`3`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`}]];nc(e,Vs({name:`toggle-left`},()=>n,{get iconNode(){return r}}))}var Cc=new Set([`$$slots`,`$$events`,`$$legacy`]);function wc(e,t){let n=zs(t,Cc),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Tc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ec(e,t){let n=zs(t,Tc),r=[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];nc(e,Vs({name:`trash`},()=>n,{get iconNode(){return r}}))}var Dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oc(e,t){let n=zs(t,Dc),r=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]];nc(e,Vs({name:`user`},()=>n,{get iconNode(){return r}}))}var kc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ac(e,t){let n=zs(t,kc),r=[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`}]];nc(e,Vs({name:`wrench`},()=>n,{get iconNode(){return r}}))}var jc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mc(e,t){let n=zs(t,jc),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];nc(e,Vs({name:`x`},()=>n,{get iconNode(){return r}}))}var Nc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pc(e,t){let n=zs(t,Nc),r=[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`}]];nc(e,Vs({name:`zap`},()=>n,{get iconNode(){return r}}))}var Fc=function(e){return e.Item=`item`,e.Weapon=`weapon`,e.Armor=`armor`,e}({}),Ic=function(e){return e.General=`general`,e.Vars=`vars`,e.Switches=`switches`,e.Inv=`inv`,e.Actors=`actors`,e.Map=`map`,e.CommonEv=`commonev`,e.Locks=`locks`,e.Logs=`logs`,e.Shortcuts=`shortcuts`,e.Settings=`settings`,e}({}),Lc=function(e){return e[e.MHP=0]=`MHP`,e[e.MMP=1]=`MMP`,e[e.ATK=2]=`ATK`,e[e.DEF=3]=`DEF`,e[e.MAT=4]=`MAT`,e[e.MDF=5]=`MDF`,e[e.AGI=6]=`AGI`,e[e.LUK=7]=`LUK`,e}({}),Rc=new WeakMap,zc=new class{constructor(){k(this,Rc,P(I([])))}get toasts(){return H(M(Rc,this))}set toasts(e){F(M(Rc,this),e,!0)}show(e,t=`info`,n=1500){let r=Math.random().toString(),i={id:r,type:t,message:e,duration:n};this.toasts=[...this.toasts,i],setTimeout(()=>{this.dismiss(r)},n)}dismiss(e){this.toasts=this.toasts.filter(t=>t.id!==e)}},Bc=e=>!!e&&typeof e.then==`function`,q={vars:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.variables)==null)&&e.length?window.$dataSystem.variables.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.variables)==null?void 0:t[e];return n?String(n):`Variable ${e}`},get:e=>{var t;return(t=window.$gameVariables)==null?void 0:t.value(e)},set:(e,t)=>{if(!window.$gameVariables)return;let n=q.vars.get(e),r=t;if(typeof n==`number`&&typeof t==`string`){let e=Number(t);!isNaN(e)&&t.trim()!==``&&(r=e)}else typeof n==`boolean`&&typeof t==`string`&&(r=t.toLowerCase()===`true`||t===`1`);window.$gameVariables.setValue(e,r)},list:()=>{let e=q.vars.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.vars.name(n),value:q.vars.get(n)});return t}},switches:{count:()=>{var e;return!((e=window.$dataSystem)==null||(e=e.switches)==null)&&e.length?window.$dataSystem.switches.length-1:0},name:e=>{var t;let n=(t=window.$dataSystem)==null||(t=t.switches)==null?void 0:t[e];return n?String(n):`Switch ${e}`},get:e=>{var t;return!!((t=window.$gameSwitches)!=null&&t.value(e))},set:(e,t)=>{window.$gameSwitches&&window.$gameSwitches.setValue(e,!!t)},toggle:e=>{q.switches.set(e,!q.switches.get(e))},list:()=>{let e=q.switches.count(),t=[];for(let n=1;n<=e;n++)t.push({id:n,name:q.switches.name(n),value:q.switches.get(n)});return t}},inv:{table:e=>e===Fc.Item?window.$dataItems||[]:e===Fc.Weapon?window.$dataWeapons||[]:e===Fc.Armor&&window.$dataArmors||[],data:(e,t)=>q.inv.table(e)[t],count:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.numItems(n):0},maxStack:(e,t)=>{let n=q.inv.data(e,t);return n&&window.$gameParty?window.$gameParty.maxItems(n):99},grant:(e,t,n)=>{let r=q.inv.data(e,t);r&&window.$gameParty&&window.$gameParty.gainItem(r,n,!1)},setCount:(e,t,n)=>{let r=q.inv.count(e,t),i=q.inv.maxStack(e,t);n=Math.max(0,Math.min(i,n)),n!==r&&q.inv.grant(e,t,n-r)},list:e=>{let t=q.inv.table(e),n=[];for(let r=1;rwindow.$gameParty?window.$gameParty.gold():0,max:()=>window.$gameParty&&window.$gameParty.maxGold?window.$gameParty.maxGold():99999999,add:e=>{window.$gameParty&&(e>0?window.$gameParty.gainGold(e):e<0&&window.$gameParty.loseGold(-e))},set:e=>{let t=q.gold.max();e=Math.max(0,Math.min(t,e)),q.gold.add(e-q.gold.get())}},party:{members:()=>window.$gameParty?window.$gameParty.members().map(e=>({id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1})):[],steps:()=>window.$gameParty?window.$gameParty.steps():0,playtime:()=>window.Graphics?Math.floor(window.Graphics.frameCount/60):0,recoverAll:()=>{window.$gameParty&&window.$gameParty.members().forEach(e=>{var t;(t=e.recoverAll)==null||t.call(e)})}},map:{list:()=>window.$dataMapInfos?window.$dataMapInfos.filter(e=>!!e).map(e=>({id:e.id,name:e.name,parentId:e.parentId})):[],current:()=>!window.$gameMap||!window.$gamePlayer?null:{mapId:window.$gameMap.mapId(),x:window.$gamePlayer.x,y:window.$gamePlayer.y,dir:window.$gamePlayer.direction()},teleport:(e,t,n,r=0,i=0)=>{window.$gamePlayer&&window.$gamePlayer.reserveTransfer(e,t,n,r,i)},speed:e=>{window.$gamePlayer&&(e=Math.max(1,Math.min(8,e)),window.$gamePlayer.setMoveSpeed(e))},events:()=>!window.$gameMap||typeof window.$gameMap.events!=`function`?[]:(window.$gameMap.events()||[]).map(e=>{let t=typeof e.event==`function`?e.event():null,n=t&&t.name?t.name:`Event ${e._eventId||0}`,r=typeof e.x==`number`?e.x:e._x||0,i=typeof e.y==`number`?e.y:e._y||0;return{id:typeof e.eventId==`function`?e.eventId():e._eventId||0,name:n,x:r,y:i}}),loadMapEvents:async e=>{if(e<=0)return[];try{let t=`data/Map${e.toString().padStart(3,`0`)}.json`,n=await(await fetch(t)).json();return!n||!n.events?[]:n.events.filter(e=>e).map(e=>{let t=e.name||`Event ${e.id}`;if(t.match(/^EV\d+$/i)){if(e.note)t=`${t} (${e.note.split(` +`)[0].trim()})`;else if(e.pages&&e.pages.length>0){let n=e.pages[0].list;if(n&&n.length>0){let e=n.find(e=>e.code===108||e.code===401);if(e&&e.parameters&&e.parameters[0]){let n=String(e.parameters[0]).substring(0,20).trim();n&&(t=`${t} [${n}]`)}}}}return{id:e.id,name:t,x:e.x,y:e.y}})}catch(t){return console.warn(`Failed to load events for map`,e,t),[]}}},commonev:{list:()=>window.$dataCommonEvents?window.$dataCommonEvents.filter(e=>e&&e.name).map(e=>({id:e.id,name:e.name})):[],run:e=>{window.$gameTemp&&window.$gameTemp.reserveCommonEvent(e)}},battle:{inBattle:()=>!window.SceneManager||!window.SceneManager._scene?!1:window.SceneManager._scene.constructor.name===`Scene_Battle`,canExecuteBattleEnd:()=>q.battle.inBattle()&&window.BattleManager&&window.BattleManager._phase!==`battleEnd`,instantWin:()=>{!q.battle.inBattle()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.isDead()||(e.setHp(0),e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId()),e.performCollapse&&e.performCollapse(),e.refresh&&e.refresh())}),window.BattleManager.checkBattleEnd())},flee:()=>{!q.battle.inBattle()||!window.BattleManager||window.BattleManager.processAbort()},forceVictory:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameTroop||!window.BattleManager||(window.$gameTroop.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processVictory(),zc.show(`Forced victory from battle!`,`success`))},forceDefeat:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||(window.$gameParty.members().forEach(e=>{e.deathStateId&&e.addNewState&&e.addNewState(e.deathStateId())}),window.BattleManager.processDefeat(),zc.show(`Forced defeat from battle...`,`warn`))},forceEscape:()=>{!q.battle.canExecuteBattleEnd()||!window.$gameParty||!window.BattleManager||!window.SoundManager||(window.$gameParty.performEscape(),window.SoundManager.playEscape(),window.BattleManager._escaped=!0,window.BattleManager.processEscape(),zc.show(`Forced escape from battle`,`success`))},changeAllEnemyHealth:e=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all enemies`,`success`))},recoverAllEnemy:()=>{!q.battle.inBattle()||!window.$gameTroop||(window.$gameTroop.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all enemies`,`success`))},changeAllPartyHealth:e=>{window.$gameParty&&(window.$gameParty.members().forEach(t=>t.setHp(e)),zc.show(`HP to ${e} for all party members`,`success`))},recoverAllParty:()=>{window.$gameParty&&(window.$gameParty.members().forEach(e=>{e.setHp(e.mhp),e.setMp(e.mmp),e.maxTp&&e.setTp&&e.setTp(e.maxTp())}),zc.show(`Recovery all party members`,`success`))}},scene:{gotoTitle:()=>{window.SceneManager&&window.Scene_Title&&window.SceneManager.goto(window.Scene_Title)},toggleSaveScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Save?window.SceneManager.pop():t===window.Scene_Load?window.SceneManager.goto(window.Scene_Save):window.SceneManager.push(window.Scene_Save)},toggleLoadScene:()=>{var e;if(!window.SceneManager||!window.Scene_Save||!window.Scene_Load)return;let t=(e=window.SceneManager._scene)==null?void 0:e.constructor;t===window.Scene_Load?window.SceneManager.pop():t===window.Scene_Save?window.SceneManager.goto(window.Scene_Load):window.SceneManager.push(window.Scene_Load)},quickSave:(e=1)=>{window.$gameSystem&&window.DataManager?(window.$gameSystem.onBeforeSave(),window.DataManager.saveGame(e),zc.show(`Game Saved - Slot ${e}`,`success`)):zc.show(`Quick Save failed`,`error`)},quickLoad:async(e=1)=>{if(window.DataManager&&window.SceneManager&&window.Scene_Map)try{let t=window.DataManager.loadGame(e);Bc(t)?(await t,q.scene.completeQuickLoad(e)):t?q.scene.completeQuickLoad(e):zc.show(`Quick Load failed`,`error`)}catch(e){console.error(e),zc.show(`Quick Load failed`,`error`)}else zc.show(`Quick Load failed`,`error`)},completeQuickLoad:e=>{var t,n,r,i,a,o;if(!(!window.SceneManager||!window.Scene_Map)){if(window.$gameSystem&&window.$dataSystem&&typeof window.$gameSystem.versionId==`function`&&typeof window.$dataSystem.versionId==`number`&&window.$gameSystem.versionId()!==window.$dataSystem.versionId&&window.$gameMap&&window.$gamePlayer){var s,c;let e=window.$gameMap.mapId(),t=window.$gamePlayer.x,n=window.$gamePlayer.y,r=window.$gamePlayer.direction();window.$gamePlayer.reserveTransfer(e,t,n,r,0),(s=(c=window.$gamePlayer).requestMapReload)==null||s.call(c)}(t=window.SoundManager)==null||(n=t.playLoad)==null||n.call(t),(r=window.SceneManager._scene)==null||(i=r.fadeOutAll)==null||i.call(r),window.SceneManager.goto(window.Scene_Map),(a=window.$gameSystem)==null||(o=a.onAfterLoad)==null||o.call(a),zc.show(`Game Loaded - Slot ${e}`,`success`)}}},system:{openDevTool:()=>{if(typeof window<`u`&&window.require)try{let e=window.require(`nw.gui`);e&&e.Window&&e.Window.get&&e.Window.get().showDevTools()}catch(e){}}}},J={list:()=>window.$dataActors?window.$dataActors.filter(e=>!!e).map(e=>{let t=window.$gameActors?window.$gameActors.actor(e.id):null;return{id:e.id,name:t?t.name():e.name,level:t&&(typeof t.level==`function`?t.level():t._level)||1,inParty:t&&window.$gameParty?window.$gameParty.members().includes(t):!1}}):[],get:e=>{var t;if(!window.$gameActors)return null;let n=window.$gameActors.actor(e);if(!n)return null;let r=[];for(let e=0;e<8;e++)r.push({id:e,value:n.param?n.param(e):0});let i=window.$dataSkills?window.$dataSkills.filter(e=>!!e).map(e=>({id:e.id,name:e.name,learned:n.hasSkill?n.hasSkill(e.id):!1})):[],a=n.equips&&n.equips()?n.equips().map((e,t)=>({slotId:t,name:e?e.name:`Empty`,item:e})):[],o=n.states&&n.states()?n.states().map(e=>({id:e.id,name:e.name})):[];return{id:n.actorId(),name:n.name(),level:typeof n.level==`function`?n.level()||1:n._level||1,exp:n.currentExp?n.currentExp():0,nextExp:n.nextRequiredExp?n.nextRequiredExp():0,hp:n.hp,mp:n.mp,tp:n.tp,mhp:n.mhp,mmp:n.mmp,mtp:n.maxTp?n.maxTp():100,params:r,skills:i,states:o,equips:a,inParty:(t=window.$gameParty)==null?void 0:t.members().includes(n)}},setLevel:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeLevel&&r.changeLevel(Math.max(1,Math.min(r.maxLevel?r.maxLevel():99,t)),!1)},setExp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.changeExp&&r.changeExp(Math.max(0,t),!1)},setHp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setHp&&r.setHp(Math.max(0,Math.min(r.mhp,t)))},setMp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setMp&&r.setMp(Math.max(0,Math.min(r.mmp,t)))},setTp:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e),i=r&&r.maxTp?r.maxTp():100;r&&r.setTp&&r.setTp(Math.max(0,Math.min(i,t)))},addParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);i&&i.addParam&&i.addParam(t,n)},setParam:(e,t,n)=>{var r;let i=(r=window.$gameActors)==null?void 0:r.actor(e);if(!i||!i.param||!i.addParam)return;let a=1;i.paramRate&&(a*=i.paramRate(t)),i.paramBuffRate&&(a*=i.paramBuffRate(t)),a===0&&(a=1);let o=i.paramBase?i.paramBase(t):0,s=i.paramPlus?i.paramPlus(t):0,c=Math.round(n/a)-o-s;i.addParam(t,c)},learnSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.learnSkill&&r.learnSkill(t)},forgetSkill:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.forgetSkill&&r.forgetSkill(t)},recover:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.recoverAll&&n.recoverAll()},setName:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.setName&&r.setName(String(t))},addToParty:e=>{window.$gameParty&&window.$gameParty.addActor&&window.$gameParty.addActor(e)},removeFromParty:e=>{window.$gameParty&&window.$gameParty.removeActor&&window.$gameParty.removeActor(e)},listStates:()=>window.$dataStates?window.$dataStates.filter(e=>!!(e&&e.name)):[],addState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.addState&&r.addState(t)},removeState:(e,t)=>{var n;let r=(n=window.$gameActors)==null?void 0:n.actor(e);r&&r.removeState&&r.removeState(t)},clearStates:e=>{var t;let n=(t=window.$gameActors)==null?void 0:t.actor(e);n&&n.clearStates&&n.clearStates()}},Y=I({vars:new Map,switches:new Map,items:new Map,gold:null,stats:new Map,noclip:!1}),Vc=!1,Hc=null,X={install:()=>{if(!Vc&&!(typeof window>`u`)&&!window.__FORGE_LOCKS__){if(window.__FORGE_LOCKS__=!0,window.Game_Variables&&window.Game_Variables.prototype.setValue){let e=window.Game_Variables.prototype.setValue;window.Game_Variables.prototype.setValue=function(t,n){Y.vars.has(t)&&(n=Y.vars.get(t)),e.call(this,t,n)}}if(window.Game_Switches&&window.Game_Switches.prototype.setValue){let e=window.Game_Switches.prototype.setValue;window.Game_Switches.prototype.setValue=function(t,n){Y.switches.has(t)&&(n=Y.switches.get(t)),e.call(this,t,n)}}if(window.Game_Party&&window.Game_Party.prototype.gainGold&&(Hc=window.Game_Party.prototype.gainGold,window.Game_Party.prototype.gainGold=function(e){Y.gold===null&&Hc.call(this,e)}),window.Scene_Base&&window.Scene_Base.prototype.update){let e=window.Scene_Base.prototype.update;window.Scene_Base.prototype.update=function(){e.call(this),X.tick()}}if(window.DataManager){if(window.DataManager.setupNewGame){let e=window.DataManager.setupNewGame;window.DataManager.setupNewGame=function(...t){e.apply(this,t)}}if(window.DataManager.extractSaveContents){let e=window.DataManager.extractSaveContents;window.DataManager.extractSaveContents=function(...t){let n=e.apply(this,t);return X.applyValueLocks(),n}}}X.loadFromStorage(),Vc=!0}},saveToStorage:()=>{try{let e={vars:Array.from(Y.vars.entries()),switches:Array.from(Y.switches.entries()),items:Array.from(Y.items.entries()),gold:Y.gold,stats:Array.from(Y.stats.entries()),noclip:Y.noclip};localStorage.setItem(`forge:locks`,JSON.stringify(e))}catch(e){}},loadFromStorage:()=>{try{let e=localStorage.getItem(`forge:locks`);if(e){let t=JSON.parse(e);Y.vars=new Map(t.vars||[]),Y.switches=new Map(t.switches||[]),Y.items=new Map(t.items||[]),Y.gold=t.gold===void 0?null:t.gold,Y.stats=new Map(t.stats||[]),t.noclip&&X.setNoclip(!0,!0)}}catch(e){}},tick:()=>{if(X.applyValueLocks(),Y.noclip&&window.$gamePlayer&&!window.$gamePlayer.isThrough()&&window.$gamePlayer.setThrough(!0),Y.gold!==null&&window.$gameParty){let e=window.$gameParty.gold();e!==Y.gold&&Hc&&Hc.call(window.$gameParty,Y.gold-e)}if(Y.stats.size>0&&window.$gameActors)for(let[e,t]of Y.stats.entries()){let[n,r]=e.split(`:`),i=parseInt(n,10),a=window.$gameActors.actor(i);if(a){if(r===`hp`&&a.hp!==t)J.setHp(i,t);else if(r===`mp`&&a.mp!==t)J.setMp(i,t);else if(r===`tp`&&a.tp!==t)J.setTp(i,t);else if(r===`level`&&(typeof a.level==`function`?a.level():a._level)!==t)J.setLevel(i,t);else if(r===`exp`&&(a.currentExp?a.currentExp():0)!==t)J.setExp(i,t);else if(r.startsWith(`param_`)){let e=parseInt(r.split(`_`)[1],10);a.param&&a.param(e)!==t&&J.setParam(i,e,t)}}}if(Y.items.size>0&&window.$gameParty)for(let[e,t]of Y.items.entries()){let[n,r]=e.split(`:`),i=parseInt(r,10),a=n;q.inv.setCount(a,i,t)}},applyValueLocks:()=>{if(Y.vars.size>0&&window.$gameVariables)for(let[e,t]of Y.vars.entries())window.$gameVariables.value(e)!==t&&window.$gameVariables.setValue(e,t);if(Y.switches.size>0&&window.$gameSwitches)for(let[e,t]of Y.switches.entries())window.$gameSwitches.value(e)!==t&&window.$gameSwitches.setValue(e,t)},freezeVar:(e,t)=>{t?Y.vars.set(e,q.vars.get(e)):Y.vars.delete(e),Y.vars=new Map(Y.vars),X.saveToStorage()},freezeSwitch:(e,t)=>{t?Y.switches.set(e,q.switches.get(e)):Y.switches.delete(e),Y.switches=new Map(Y.switches),X.saveToStorage()},freezeItem:(e,t,n)=>{let r=`${e}:${t}`;n?Y.items.set(r,q.inv.count(e,t)):Y.items.delete(r),Y.items=new Map(Y.items),X.saveToStorage()},freezeGold:e=>{e?Y.gold=q.gold.get():Y.gold=null,X.saveToStorage()},freezeStat:(e,t,n)=>{let r=`${e}:${t}`;if(n){let n=J.get(e),i=0;if(n){if(t===`hp`||t===`mp`||t===`tp`||t===`level`||t===`exp`)i=n[t];else if(t.startsWith(`param_`)){let e=parseInt(t.split(`_`)[1],10),r=n.params.find(t=>t.id===e);r&&(i=r.value)}}Y.stats.set(r,i)}else Y.stats.delete(r);Y.stats=new Map(Y.stats),X.saveToStorage()},setNoclip:(e,t=!1)=>{Y.noclip=e,window.$gamePlayer&&window.$gamePlayer.setThrough(e),t||zc.show(`Noclip: ${e?`ON`:`OFF`}`,e?`success`:`info`)},clearAll:()=>{Y.vars.clear(),Y.vars=new Map,Y.switches.clear(),Y.switches=new Map,Y.items.clear(),Y.items=new Map,Y.stats.clear(),Y.stats=new Map,Y.gold=null,X.setNoclip(!1,!0),X.saveToStorage()},summary:()=>{let e=[];return Y.vars.forEach((t,n)=>e.push({type:`var`,id:n,label:q.vars.name(n),value:t})),Y.switches.forEach((t,n)=>e.push({type:`switch`,id:n,label:q.switches.name(n),value:t})),Y.items.forEach((t,n)=>{let[r,i]=n.split(`:`),a=parseInt(i,10),o=q.inv.data(r,a);e.push({type:`item`,key:n,label:o?o.name:n,value:t})}),Y.gold!==null&&e.push({type:`gold`,id:`gold`,label:`Gold`,value:Y.gold}),Y.stats.forEach((t,n)=>{var r;let[i,a]=n.split(`:`),o=parseInt(i,10),s=((r=J.get(o))==null?void 0:r.name)||`Actor ${o}`,c=`${s} ${a.toUpperCase()}`,l=`stat`;a.startsWith(`param_`)&&(l=`param`,c=`${s} ${[`Max HP`,`Max MP`,`Attack`,`Defense`,`M. Attack`,`M. Defense`,`Agility`,`Luck`][parseInt(a.split(`_`)[1],10)]||a}`),e.push({type:l,key:n,label:c,value:t})}),e}},Z=I({god:!1,ohko:!1,noEncounter:!1,speed:1,speedBoost:2,speedUseKey:!0,speedHeld:!1,messageSkip:!1}),Uc=!1,Wc={install:()=>{if(!Uc&&!(typeof window>`u`)&&!window.__FORGE_CHEATS__){if(window.__FORGE_CHEATS__=!0,window.Game_Action&&window.Game_Action.prototype.executeHpDamage){let e=window.Game_Action.prototype.executeHpDamage;window.Game_Action.prototype.executeHpDamage=function(t,n){Z.god&&t.isActor()&&n>0&&(n=0),Z.ohko&&this.subject().isActor()&&t.isEnemy()&&(n=t.hp),e.call(this,t,n)}}if(window.Game_Battler&&window.Game_Battler.prototype.gainHp){let e=window.Game_Battler.prototype.gainHp;window.Game_Battler.prototype.gainHp=function(t){Z.god&&this.isActor()&&t<0&&(t=0),e.call(this,t)}}if(window.Game_Actor&&window.Game_Actor.prototype.executeFloorDamage){let e=window.Game_Actor.prototype.executeFloorDamage;window.Game_Actor.prototype.executeFloorDamage=function(){Z.god||e.call(this)}}if(window.Game_Player&&window.Game_Player.prototype.encounterProgressValue){let e=window.Game_Player.prototype.encounterProgressValue;window.Game_Player.prototype.encounterProgressValue=function(){return Z.noEncounter?0:e.call(this)}}if(window.SceneManager&&window.SceneManager.updateScene){let e=window.SceneManager.updateScene,t=0,n=e=>{if(e.isCurrentSceneStarted){if(!e.isCurrentSceneStarted())return!1}else if(e._scene&&e._scene.isStarted&&!e._scene.isStarted())return!1;return!(e.isSceneChanging&&e.isSceneChanging()||window.$gamePlayer&&window.$gamePlayer.isTransferring&&window.$gamePlayer.isTransferring()||window.DataManager&&window.DataManager.isMapLoaded&&!window.DataManager.isMapLoaded())};window.SceneManager.updateScene=function(){let r=Z.speedHeld?Z.speedBoost:Z.speed;if(Z.speedUseKey&&!Z.speedHeld&&(r=1),r>=1)if(e.call(this),r>1&&this._scene&&typeof this._scene.update==`function`&&n(this)){t+=r-1;let e=0;for(;t>=1&&e++<64;){--t;try{this._scene.update()}catch(e){t=0;break}}}else t=0;else if(t+=r,t>=1)--t,e.call(this);else if(this._scene){let t=this._scene.update;this._scene.update=function(){};try{e.call(this)}finally{this._scene.update=t}}}}if(window.Window_Message&&window.Window_Message.prototype.updateShowFast){let e=window.Window_Message.prototype.updateShowFast;window.Window_Message.prototype.updateShowFast=function(){e.call(this),Z.messageSkip&&(this._showFast=!0,this._pauseSkip=!0)}}if(window.Window_Message&&window.Window_Message.prototype.updateInput){let e=window.Window_Message.prototype.updateInput;window.Window_Message.prototype.updateInput=function(){let t=e.call(this);return this.pause&&Z.messageSkip?(this.pause=!1,this._textState||this.terminateMessage(),!0):t}}if(window.Window_ScrollText&&window.Window_ScrollText.prototype.scrollSpeed){let e=window.Window_ScrollText.prototype.scrollSpeed;window.Window_ScrollText.prototype.scrollSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t*=100),t}}if(window.Window_BattleLog&&window.Window_BattleLog.prototype.messageSpeed){let e=window.Window_BattleLog.prototype.messageSpeed;window.Window_BattleLog.prototype.messageSpeed=function(){let t=e.call(this);return Z.messageSkip&&(t=1),t}}Uc=!0}},setGod:e=>{Z.god=e},setOhko:e=>{Z.ohko=e},setNoEncounter:e=>{Z.noEncounter=e},setSpeed:e=>{Z.speed=e},setSpeedBoost:e=>{Z.speedBoost=e},setSpeedUseKey:e=>{Z.speedUseKey=e},startSpeedHold:()=>{Z.speedHeld=!0},stopSpeedHold:()=>{Z.speedHeld=!1},setMessageSkip:e=>{Z.messageSkip=e}},Gc={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":19,capslock:20,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,meta:91,rightclick:93,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,"numpad*":106,"numpad+":107,"numpad-":109,"numpad.":110,"numpad/":111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,numlock:144,scrolllock:145,mycomputer:182,mycalculator:183,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},Kc={};for(let e of Object.keys(Gc))Kc[e.toLowerCase()]=Gc[e];var qc={};for(let e of Object.keys(Kc))qc[Kc[e]]=e;var Jc=new Set([17,18,16,91]),Yc=class e{constructor(e,t,n,r,i){S(this,`code`,void 0),S(this,`ctrl`,void 0),S(this,`alt`,void 0),S(this,`shift`,void 0),S(this,`meta`,void 0),this.code=e,this.ctrl=t,this.alt=n,this.shift=r,this.meta=i}static createEmpty(){return new e(256,!1,!1,!1,!1)}static fromKey(t){return new e(t.code,t.ctrl,t.alt,t.shift,t.meta)}static fromString(t){if(!t||t===``)return e.createEmpty();let n=t.toLowerCase().split(` `);if(n.length===0)throw Error(`No keymap found`);let r=null,i=!1,a=!1,o=!1,s=!1;for(let e of n)switch(e=e.trim(),e){case`ctrl`:case`control`:i=!0;break;case`alt`:a=!0;break;case`shift`:o=!0;break;case`meta`:s=!0;break;default:if(r!==null)throw Error(`Cannot combine multiple standard keys`);if(!Object.prototype.hasOwnProperty.call(Kc,e))throw Error(`Unknown key: ${e}`);r=Kc[e]}return r===null&&(r=256),new e(r,i,a,o,s)}static fromEvent(t){return Jc.has(t.keyCode)?e._fromCombiningAloneEvent(t):new e(t.keyCode,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey)}static _fromCombiningAloneEvent(t){return new e(256,t.keyCode===17||t.ctrlKey,t.keyCode===18||t.altKey,t.keyCode===16||t.shiftKey,t.keyCode===91||t.metaKey)}isEmpty(){return this.code===256&&!this.ctrl&&!this.alt&&!this.shift&&!this.meta}isCombiningKey(){return this.code===256&&!this.isEmpty()}equals(e){return this.code===e.code&&this.ctrl===e.ctrl&&this.alt===e.alt&&this.shift===e.shift&&this.meta===e.meta}contains(e){return(!e.ctrl||this.ctrl)&&(!e.alt||this.alt)&&(!e.shift||this.shift)&&(!e.meta||this.meta)&&(e.isCombiningKey()||e.code===this.code)}countPressingKeys(){let e=0;return this.code!==256&&(e+=1),this.ctrl&&(e+=1),this.alt&&(e+=1),this.shift&&(e+=1),this.meta&&(e+=1),e}asStringArray(){if(this.isEmpty())return[];let e=[];return this.ctrl&&e.push(`ctrl`),this.alt&&e.push(`alt`),this.shift&&e.push(`shift`),this.meta&&e.push(`meta`),this.code!==256&&e.push(qc[this.code]||`key_${this.code}`),e}adjustCombiningKey(e){this.ctrl=e.ctrlKey,this.alt=e.altKey,this.shift=e.shiftKey,this.meta=e.metaKey}add(e){if(Jc.has(e)){this._setCombiningKey(e,!0);return}this.code=e}remove(e){if(Jc.has(e)){this._setCombiningKey(e,!1);return}this.code===e&&(this.code=256)}_setCombiningKey(e,t){switch(e){case 17:this.ctrl=t;break;case 18:this.alt=t;break;case 16:this.shift=t;break;case 91:this.meta=t;break}}capitalize(e){return e.length===0?``:e.length===1?e.charAt(0).toUpperCase():e.charAt(0).toUpperCase()+e.slice(1)}asString(){return this.asStringArray().join(` `)}asDisplayString(){return this.asStringArray().map(e=>this.capitalize(e)).join(` + `)}},Q=I({visible:!1,activeTab:Ic.General,targetActorId:null,targetActorStat:null,targetVarId:null,targetSwitchId:null,targetItemKey:null}),$={currentKey:Yc.createEmpty(),shortcuts:[],activeShortcutIds:new Set,init:e=>{let t=localStorage.getItem(`forge:shortcuts`),n={};if(t)try{n=JSON.parse(t)}catch(e){}$.shortcuts=e.map(e=>{let t=n[e.id];return{...e,keyStr:(t==null?void 0:t.keyStr)===void 0?e.keyStr:t.keyStr,enabled:(t==null?void 0:t.enabled)===void 0?e.enabled:t.enabled,params:(t==null?void 0:t.params)||e.params}}),window.addEventListener(`keydown`,$.onKeyDown.bind($),{capture:!0}),window.addEventListener(`keyup`,$.onKeyUp.bind($),{capture:!0})},save:()=>{let e={};$.shortcuts.forEach(t=>{e[t.id]={keyStr:t.keyStr,enabled:t.enabled,params:t.params}}),localStorage.setItem(`forge:shortcuts`,JSON.stringify(e))},get:e=>$.shortcuts.find(t=>t.id===e),update:(e,t)=>{let n=$.get(e);n&&(Object.assign(n,t),$.save())},_isFocusedOnInput:()=>{let e=document.activeElement;for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable)},_hasSelection:()=>{var e;if(!Q.visible)return!1;let t=((e=window.getSelection())==null?void 0:e.toString())||``;if(!t){let e=document.getElementById(`forge-mvmz-host`);e&&e.shadowRoot&&e.shadowRoot.getSelection&&(t=e.shadowRoot.getSelection().toString()||``)}return t.trim().length>0},onKeyDown:e=>{if(!$._isFocusedOnInput()&&!$._hasSelection()){if(e.repeat){let t=!1;for(let e of $.activeShortcutIds){let n=$.get(e);n&&n.onRepeat&&(n.onRepeat(n.params),t=!0)}t&&(e.preventDefault(),e.stopPropagation());return}$.currentKey.add(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e)}},onKeyUp:e=>{$._isFocusedOnInput()||($.currentKey.remove(e.keyCode),$.currentKey.adjustCombiningKey(e),$.processTransitions(e))},processTransitions:e=>{let t=new Set;for(let e of $.shortcuts)if(!(!e.enabled||!e.keyStr))try{let n=Yc.fromString(e.keyStr),r=!1;r=e.combiningKeyAlone?$.currentKey.contains(n):n.equals($.currentKey),r&&t.add(e.id)}catch(t){console.error(`[FORGE] Error parsing keyStr for ${e.id}:`,t)}let n=Array.from($.activeShortcutIds);for(let e of n)if(!t.has(e)){let t=$.get(e);if(t){var r;(r=t.onLeave)==null||r.call(t,t.params)}$.activeShortcutIds.delete(e)}let i=!1;for(let e of t)if(!$.activeShortcutIds.has(e)){let t=$.get(e);if(t){var a;(a=t.onEnter)==null||a.call(t,t.params),$.activeShortcutIds.add(e),i=!0}}i&&e.type===`keydown`&&(e.preventDefault(),e.stopPropagation())}},Xc=I({inactiveOpacity:80,autoOpen:!1,rememberPosition:!0,favorites:{},showLauncher:!0,quickSaveSlot:1}),Zc={load:()=>{try{let e=localStorage.getItem(`forge:config`);if(e){let t=JSON.parse(e);typeof t.inactiveOpacity==`number`&&(Xc.inactiveOpacity=t.inactiveOpacity),typeof t.autoOpen==`boolean`&&(Xc.autoOpen=t.autoOpen),typeof t.rememberPosition==`boolean`&&(Xc.rememberPosition=t.rememberPosition),t.favorites&&typeof t.favorites==`object`&&(Xc.favorites=t.favorites),typeof t.showLauncher==`boolean`&&(Xc.showLauncher=t.showLauncher),typeof t.quickSaveSlot==`number`&&(Xc.quickSaveSlot=t.quickSaveSlot)}}catch(e){}},save:()=>{localStorage.setItem(`forge:config`,JSON.stringify({inactiveOpacity:Xc.inactiveOpacity,autoOpen:Xc.autoOpen,rememberPosition:Xc.rememberPosition,favorites:Xc.favorites,showLauncher:Xc.showLauncher,quickSaveSlot:Xc.quickSaveSlot}))},toggleFavorite:(e,t)=>{Xc.favorites[e]||(Xc.favorites[e]=[]);let n=Xc.favorites[e].indexOf(t);n===-1?Xc.favorites[e].push(t):Xc.favorites[e].splice(n,1),Zc.save()},isFavorite:(e,t)=>{var n;return((n=Xc.favorites[e])==null?void 0:n.includes(t))||!1},resetAll:()=>{confirm(`Are you sure you want to reset all Forge settings, locks, and saved data? This cannot be undone.`)&&(localStorage.clear(),window.location.reload())}},Qc=I({entries:[]}),$c=!1,el=1,tl={install:()=>{if(!$c&&!(typeof window>`u`)&&!window.__FORGE_LOGS__){if(window.__FORGE_LOGS__=!0,window.Game_Message&&window.Game_Message.prototype.add){let e=window.Game_Message.prototype.add;window.Game_Message.prototype.add=function(t){e.call(this,t);let n=``;typeof this.speakerName==`function`&&(n=this.speakerName()||``),tl.addEntry(n,t)}}$c=!0}},addEntry:(e,t)=>{let n=t;if(n=n.replace(/\\\\/g,`\x1B`),n=n.replace(/\\x1b/g,`\x1B`),n=n.replace(/\\V\[(\d+)\]/gi,(e,t)=>window.$gameVariables?String(window.$gameVariables.value(parseInt(t))):``),n=n.replace(/\\N\[(\d+)\]/gi,(e,t)=>{var n;return window.$gameActors&&((n=window.$gameActors.actor(parseInt(t)))==null?void 0:n.name())||``}),n=n.replace(/\\P\[(\d+)\]/gi,(e,t)=>{let n=(window.$gameParty?window.$gameParty.members():[])[parseInt(t)-1];return n?n.name():``}),n=n.replace(/\\G/gi,()=>window.TextManager?window.TextManager.currencyUnit:``),n=n.replace(/\x1bC\[\d+\]/gi,``),n=n.replace(/\x1bI\[\d+\]/gi,``),n=n.replace(/\x1b[\\{\\}\.\|!><\^]/g,``),n=n.replace(/\x1b[A-Z]\[.*?\]/gi,``),n=n.replace(/\x1b/g,``),!e){let t=n.match(/^\\n<([^>]+)>/i);t&&(e=t[1],n=n.replace(/^\\n<([^>]+)>/i,``))}if(n=n.replace(/\n/g,` `),n=n.replace(/\s+/g,` `),n=n.trim(),!n)return;let r=Date.now(),i=Qc.entries[Qc.entries.length-1];i&&i.speaker===e&&r-i.timestamp<100?(i.text+=` ${n}`,i.timestamp=r):Qc.entries.push({id:el++,speaker:e,text:n,timestamp:r})},clear:()=>{Qc.entries=[]}},nl=[{id:`toggle_ui`,name:`Toggle Cheat UI`,desc:`Show/Hide the cheat panel`,keyStr:`Ctrl C`,enabled:!0,required:!0,onEnter:()=>Q.visible=!Q.visible},{id:`toggle_save_recall`,name:`Toggle Save Locations Tab`,desc:`Open/close panel on Bookmarks`,keyStr:`Ctrl M`,enabled:!0,onEnter:()=>{Q.visible=!0,Q.activeTab=Ic.Map}},{id:`quick_save`,name:`Quick Save`,desc:`Quick save to configured slot`,keyStr:`Ctrl S`,enabled:!0,onEnter:()=>q.scene.quickSave(Xc.quickSaveSlot)},{id:`quick_load`,name:`Quick Load`,desc:`Quick load from configured slot`,keyStr:`Ctrl Q`,enabled:!0,onEnter:()=>q.scene.quickLoad(Xc.quickSaveSlot)},{id:`open_save_scene`,name:`Open Save Scene`,desc:`Push or pop Save scene`,keyStr:`Ctrl [`,enabled:!0,onEnter:()=>q.scene.toggleSaveScene()},{id:`open_load_scene`,name:`Open Load Scene`,desc:`Push or pop Load scene`,keyStr:`Ctrl ]`,enabled:!0,onEnter:()=>q.scene.toggleLoadScene()},{id:`goto_title`,name:`Go to Title`,desc:`Return to title screen`,keyStr:`Ctrl T`,enabled:!0,onEnter:()=>q.scene.gotoTitle()},{id:`force_victory`,name:`Force Victory`,desc:`Force battle victory`,keyStr:`Ctrl V`,enabled:!0,onEnter:()=>q.battle.forceVictory()},{id:`force_defeat`,name:`Force Defeat`,desc:`Force battle defeat`,keyStr:`Ctrl D`,enabled:!0,onEnter:()=>q.battle.forceDefeat()},{id:`force_escape`,name:`Force Escape`,desc:`Force battle escape`,keyStr:`Ctrl E`,enabled:!0,onEnter:()=>q.battle.forceEscape()},{id:`toggle_noclip`,name:`Toggle Noclip`,desc:`Walk through walls`,keyStr:`Alt W`,enabled:!0,onEnter:()=>X.setNoclip(!Y.noclip)},{id:`enemy_wound`,name:`Enemies HP to 1`,desc:`Wound all active enemies`,keyStr:`Alt 1`,enabled:!0,onEnter:()=>q.battle.changeAllEnemyHealth(1)},{id:`enemy_recovery`,name:`Recover Enemies`,desc:`Fully recover enemies`,keyStr:`Alt 0`,enabled:!0,onEnter:()=>q.battle.recoverAllEnemy()},{id:`party_wound`,name:`Party HP to 1`,desc:`Wound all party members`,keyStr:`Alt 2`,enabled:!0,onEnter:()=>q.battle.changeAllPartyHealth(1)},{id:`party_recovery`,name:`Recover Party`,desc:`Fully recover party members`,keyStr:`Alt 9`,enabled:!0,onEnter:()=>q.battle.recoverAllParty()},{id:`trigger_encounter`,name:`Trigger Encounter`,desc:`Next step triggers random battle`,keyStr:``,enabled:!0,onEnter:()=>{window.$gamePlayer&&(window.$gamePlayer._encounterCount=0)}},{id:`speed_hold`,name:`Speed Hold Key`,desc:`Hold to fast forward game`,keyStr:`Ctrl`,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.startSpeedHold(),onLeave:()=>Wc.stopSpeedHold()},{id:`skip_message`,name:`Skip Message Key`,desc:`Hold to skip dialogs`,keyStr:``,enabled:!0,combiningKeyAlone:!0,onEnter:()=>Wc.setMessageSkip(!0),onLeave:()=>Wc.setMessageSkip(!1)},{id:`open_dev_tool`,name:`Open Dev Tools`,desc:`Show Nw.js developer tools`,keyStr:`F12`,enabled:!0,onEnter:()=>q.system.openDevTool()}],rl=W(``);function il(e,t){var n=rl();U(`mousedown`,n,function(...e){var n;(n=t.onmousedown)==null||n.apply(this,e)}),G(e,n)}Wa([`mousedown`]);var al=W(``);function ol(e,t){Mt(t,!0);let n=P(0),r=P(0);Ws(()=>{try{let e=JSON.parse(localStorage.getItem(`forge:launcherPos`)||`null`);e?(F(n,e.x,!0),F(r,e.y,!0)):(F(n,(window.innerWidth||800)-56),F(r,(window.innerHeight||600)-56))}catch(e){F(n,100),F(r,100)}});let i=P(!1),a=P(0),o=P(0),s=P(0),c=P(0),l=P(!1),u=e=>{if(!H(i))return;e.stopPropagation(),e.preventDefault();let t=e.clientX-H(a),u=e.clientY-H(o);Math.abs(t)+Math.abs(u)>3&&F(l,!0),F(n,Math.max(4,Math.min(window.innerWidth-46,H(s)+t)),!0),F(r,Math.max(4,Math.min(window.innerHeight-46,H(c)+u)),!0)},d=e=>{H(i)&&(e.stopPropagation(),e.preventDefault()),F(i,!1),window.removeEventListener(`mousemove`,u,!0),window.removeEventListener(`mouseup`,d,!0);try{localStorage.setItem(`forge:launcherPos`,JSON.stringify({x:H(n),y:H(r)}))}catch(e){}setTimeout(()=>{F(l,!1)},0)},f=e=>{e.preventDefault(),F(i,!0),F(l,!1),F(a,e.clientX,!0),F(o,e.clientY,!0),F(s,H(n),!0),F(c,H(r),!0),window.addEventListener(`mousemove`,u,!0),window.addEventListener(`mouseup`,d,!0)},p=()=>{H(l)||(Q.visible=!Q.visible)};var m=eo(),h=_i(m),g=e=>{var t=al();Ac(L(t),{size:20}),D(t),z(()=>{var e,i;return Xo(t,`left: ${(e=H(n))==null?``:e}px; top: ${(i=H(r))==null?``:i}px;`)}),U(`mousedown`,t,e=>{e.stopPropagation(),f(e)}),U(`click`,t,e=>{e.stopPropagation(),p()}),G(e,t)};mo(h,e=>{Xc.showLauncher&&e(g)}),G(e,m),Nt()}Wa([`mousedown`,`click`]);var sl=W(``),cl=W(`Nothing here`),ll=W(` `);function ul(e,t){Mt(t,!0);let n=Hs(t,`items`,19,()=>[]),r=Hs(t,`itemHeight`,3,32),i=Hs(t,`containerHeight`,3,400),a=P(0),o=P(void 0),s=Wn(()=>n().length*r()),c=Wn(()=>Math.floor(H(a)/r())),l=Wn(()=>Math.min(n().length-1,H(c)+Math.ceil(i()/r())+2)),u=Wn(()=>n().slice(H(c),H(l)+1).map((e,t)=>({...e,_index:H(c)+t}))),d=e=>{F(a,e.target.scrollTop,!0)};var f={resetScroll:()=>{H(o)&&(H(o).scrollTop=0)},scrollToBottom:()=>{H(o)&&(H(o).scrollTop=H(o).scrollHeight)},scrollToIndex:e=>{setTimeout(()=>{H(o)&&(F(a,e*r()),H(o).scrollTop=e*r())},100)}},p=ll(),m=L(p),h=L(m);yo(h,21,()=>H(u),e=>e.id,(e,n)=>{var i=sl();Eo(L(i),()=>t.itemTemplate,()=>H(n),()=>H(n)._index),D(i),z(()=>{var e;return Xo(i,`height: ${(e=r())==null?``:e}px;`)}),G(e,i)}),D(h),D(m);var g=R(m,2),_=e=>{G(e,cl())};return mo(g,e=>{n().length===0&&e(_)}),D(p),Ps(p,e=>F(o,e),()=>H(o)),z(()=>{var e;Xo(m,`height: ${(e=H(s))==null?``:e}px;`),Xo(h,`transform: translateY(${H(c)*r()}px);`)}),Ua(`scroll`,p,d),G(e,p),Nt(f)}var dl=W(`- +`);function fl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,0),r=Hs(t,`min`,19,()=>-1/0),i=Hs(t,`max`,3,1/0),a=P(I(String(n())));Mi(()=>{F(a,String(n()),!0)});let o=()=>{var e;let o=parseFloat(H(a));isNaN(o)&&(o=n()),o=Math.max(r(),Math.min(i(),o)),n(o),F(a,String(o),!0),(e=t.onchange)==null||e.call(t,n())},s=(e,o)=>{var s;o.shiftKey&&(e*=10);let c=n()+e;c=Math.max(r(),Math.min(i(),c)),n(c),F(a,String(c),!0),(s=t.onchange)==null||s.call(t,n())},c=e=>{e.stopPropagation(),e.key===`Enter`?(o(),e.target.blur()):e.key===`Escape`&&(F(a,String(n()),!0),e.target.blur())};var l=dl(),u=L(l),d=R(u,2);us(d);var f=R(d,2);D(l),U(`click`,u,e=>s(-1,e)),Ua(`blur`,d,o),U(`keydown`,d,c),Cs(d,()=>H(a),e=>F(a,e)),U(`click`,f,e=>s(1,e)),G(e,l),Nt()}Wa([`click`,`keydown`]);var pl=W(``);function ml(e,t){Mt(t,!0);let n=Hs(t,`locked`,3,!1);var r=pl(),i=L(r),a=e=>{uc(e,{size:14})},o=e=>{cc(e,{size:14})};mo(i,e=>{n()?e(a):e(o,-1)}),D(r),z(()=>{Jo(r,1,`flex h-6 w-6 shrink-0 items-center justify-center rounded transition-colors focus:outline-none ${n()?`bg-frozen/20 text-frozen hover:bg-frozen/30`:`hover:bg-border text-gray-500 hover:text-gray-300`}`),ps(r,`title`,n()?`Unfreeze`:`Freeze`),ps(r,`aria-label`,n()?`Unfreeze state`:`Freeze state`)}),U(`click`,r,()=>{var e;return(e=t.ontoggle)==null?void 0:e.call(t,!n())}),G(e,r),Nt()}Wa([`click`]);var hl=W(`TrueFalse`),gl=W(``),_l=W(` `),vl=W(` `);function yl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetVarId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetVarId);e!==-1&&H(a).scrollToIndex(e),Q.targetVarId=null}});let o,s=P(!1),c=new Set,l=I({}),u=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||t.value!==void 0&&t.value!==null&&String(t.value).toLowerCase().includes(e));c=new Set(t.map(e=>e.id))}},d=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`variables`,e.id),r=Zc.isFavorite(`variables`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},f=()=>{F(n,q.vars.list(),!0),u(),d()},p=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(s)||(F(n,q.vars.list(),!0),d())},1e3);return()=>clearInterval(e)});let h=(e,t)=>{q.vars.set(e,t),Y.vars.has(e)&&X.freezeVar(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)};var g=vl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y);D(y),D(_);var x=R(_,2);Ps(ul(L(x),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{let r=Wn(()=>l[t().id]||typeof t().value);var i=_l(),a=L(i),o=L(a,!0);D(a);var c=R(a,2),u=L(c),f=L(u,!0);D(u),D(c);var p=R(c,2),g=L(p),_=L(g);{let e=Wn(()=>Zc.isFavorite(`variables`,t().id)?`fill-current`:``);bc(_,{size:16,get class(){return H(e)}})}D(g);var v=R(g,2),y=L(v,!0);D(v);var b=R(v,2),x=e=>{{let n=Wn(()=>Number(t().value)||0);fl(e,{get value(){return H(n)},onchange:e=>h(t().id,e)})}},S=e=>{var n=hl(),r=L(n);r.value=r.__value=`true`;var i=R(r);i.value=i.__value=`false`,D(n);var a;Qo(n),z(()=>{a!==(a=t().value?`true`:`false`)&&(n.value=n.__value=t().value?`true`:`false`,Zo(n,t().value?`true`:`false`))}),U(`change`,n,e=>h(t().id,e.currentTarget.value===`true`)),G(e,n)},ee=e=>{var n=gl();us(n),z(e=>ds(n,e),[()=>String(t().value===void 0||t().value===null?``:t().value)]),Ua(`blur`,n,e=>h(t().id,e.currentTarget.value)),U(`keydown`,n,e=>{e.stopPropagation(),e.key===`Enter`&&e.currentTarget.blur()}),G(e,n)};mo(b,e=>{H(r)===`number`?e(x):H(r)===`boolean`?e(S,1):e(ee,-1)});var C=R(b,2),w=L(C);{let e=Wn(()=>Y.vars.has(t().id));ml(w,{get locked(){return H(e)},ontoggle:e=>{X.freezeVar(t().id,e),F(n,[...H(n)],!0),d()}})}D(C),D(p),D(i),z((e,n,a)=>{Jo(i,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(o,n),ps(u,`title`,t().name),K(f,t().name),Jo(g,1,`mr-2 flex items-center justify-center transition-colors ${a==null?``:a}`),K(y,H(r)===`number`?`NUM`:H(r)===`string`?`STR`:`BOOL`)},[()=>Y.vars.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`variables`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,p,()=>F(s,!0)),U(`focusout`,p,()=>F(s,!1)),U(`click`,g,()=>{Zc.toggleFavorite(`variables`,t().id),d()}),U(`click`,v,()=>{(l[t().id]||typeof t().value)===`number`?l[t().id]=`string`:l[t().id]=`number`}),G(e,i)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(x),D(g),z(()=>{var e;ds(v,H(i)),K(b,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,p),G(e,g),Nt()}Wa([`input`,`focusin`,`focusout`,`click`,`change`,`keydown`]);var bl=W(``);function xl(e,t){Mt(t,!0);let n=Hs(t,`value`,15,!1),r=()=>{var e;n(!n()),(e=t.onchange)==null||e.call(t,n())};var i=bl(),a=L(i);D(i),z(()=>{Jo(i,1,`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors ${n()?`bg-ok`:`bg-[#3a3f4d]`}`),Jo(a,1,`absolute top-[4px] h-4 w-4 rounded-full bg-white shadow transition-all ${n()?`left-[24px]`:`left-[4px]`}`)}),U(`click`,i,r),G(e,i),Nt()}Wa([`click`]);var Sl=W(` `),Cl=W(` All ON All OFF `);function wl(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetSwitchId!==null&&H(a)&&H(r).length>0){let e=H(r).findIndex(e=>e.id===Q.targetSwitchId);e!==-1&&H(a).scrollToIndex(e),Q.targetSwitchId=null}});let o,s=P(!1),c=new Set,l=()=>{if(!H(i).trim())c=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||(t.value?`true`:`false`).includes(e));c=new Set(t.map(e=>e.id))}},u=()=>{F(r,H(n).filter(e=>c.has(e.id)).sort((e,t)=>{let n=Zc.isFavorite(`switches`,e.id),r=Zc.isFavorite(`switches`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},d=()=>{F(n,q.switches.list(),!0),l(),u()},f=e=>{F(i,e.target.value,!0),clearTimeout(o),o=setTimeout(()=>{l(),u()},300)};Ws(()=>{d();let e=setInterval(()=>{H(s)||(F(n,q.switches.list(),!0),u())},1e3);return()=>clearInterval(e)});let p=(e,t)=>{q.switches.set(e,t),Y.switches.has(e)&&X.freezeSwitch(e,!0);let r=H(n).find(t=>t.id===e);r&&(r.value=t)},h=e=>{H(r).forEach(t=>p(t.id,e)),d(),zc.show(`All filtered switches turned ${e?`ON`:`OFF`}`,`success`)};var g=Cl(),_=L(g),v=L(_);us(v);var y=R(v,2),b=L(y),x=R(b,2),S=R(x,2),ee=L(S);D(S),D(y),D(_);var C=R(_,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:36,itemTemplate:(e,t=m)=>{var r=Sl(),i=L(r),a=L(i,!0);D(i);var o=R(i,2),c=L(o),l=L(c,!0);D(c),D(o);var d=R(o,2),f=L(d),h=L(f);{let e=Wn(()=>Zc.isFavorite(`switches`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(f);var g=R(f,2);xl(g,{get value(){return t().value},onchange:e=>p(t().id,e)});var _=R(g,2),v=L(_);{let e=Wn(()=>Y.switches.has(t().id));ml(v,{get locked(){return H(e)},ontoggle:e=>{X.freezeSwitch(t().id,e),F(n,[...H(n)],!0),u()}})}D(_),D(d),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),Jo(c,1,`truncate text-sm select-text cursor-text ${t().value?`text-white font-bold`:`text-gray-400`}`),K(l,t().name),Jo(f,1,`flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.switches.has(t().id)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`switches`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),Ua(`mouseenter`,d,()=>F(s,!0)),Ua(`mouseleave`,d,()=>F(s,!1)),U(`click`,f,()=>{Zc.toggleFavorite(`switches`,t().id),u()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(g),z(()=>{var e;ds(v,H(i)),K(ee,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,v,f),U(`click`,b,()=>h(!0)),U(`click`,x,()=>h(!1)),G(e,g),Nt()}Wa([`input`,`click`]);var Tl=W(` `),El=W(` `),Dl=W(`Items Weapons Armors `);function Ol(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(void 0);Mi(()=>{if(Q.targetItemKey!==null&&H(a)){let[e,t]=Q.targetItemKey.split(`:`);if(e===H(o)){if(H(r).length>0){let e=H(r).findIndex(e=>e.id===parseInt(t,10));e!==-1&&H(a).scrollToIndex(e),Q.targetItemKey=null}}else p(e)}});let o=P(I(Fc.Item)),s,c=P(!1),l=new Set,u=()=>{if(!H(i).trim())l=new Set(H(n).map(e=>e.id));else{let e=H(i).trim().toLowerCase(),t=H(n).filter(t=>String(t.id)===e||t.name.toLowerCase().includes(e)||String(t.count).includes(e)||t.description&&t.description.toLowerCase().includes(e));l=new Set(t.map(e=>e.id))}},d=()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;F(r,H(n).filter(e=>l.has(e.id)).sort((t,n)=>{let r=Zc.isFavorite(e,t.id),i=Zc.isFavorite(e,n.id);return r&&!i?-1:!r&&i?1:t.id-n.id}),!0)},f=()=>{F(n,q.inv.list(H(o)),!0),u(),d()},p=e=>{F(o,e,!0),f(),H(a)&&H(a).resetScroll()},h=e=>{F(i,e.target.value,!0),clearTimeout(s),s=setTimeout(()=>{u(),d()},300)};Ws(()=>{f();let e=setInterval(()=>{H(c)||(F(n,q.inv.list(H(o)),!0),d())},1e3);return()=>clearInterval(e)});let g=(e,t)=>{q.inv.setCount(H(o),e,t),Y.items.has(`${H(o)}:${e}`)&&X.freezeItem(H(o),e,!0)};var _=Dl(),v=L(_),y=L(v),b=L(y),x=R(b,2),S=R(x,2);D(y);var ee=R(y,2);us(ee),D(v);var C=R(v,2);Ps(ul(L(C),{get items(){return H(r)},itemHeight:48,itemTemplate:(e,t=m)=>{var r=El(),i=L(r),a=L(i,!0);D(i);var s=R(i,2),l=L(s),u=L(l,!0);D(l);var f=R(l,2),p=e=>{var n=Tl(),r=L(n,!0);D(n),z((e,t)=>{ps(n,`title`,e),K(r,t)},[()=>t().description.replace(/\n/g,` `),()=>t().description.replace(/\n/g,` `)]),G(e,n)};mo(f,e=>{t().description&&e(p)}),D(s);var h=R(s,2),_=L(h),v=L(_);{let e=Wn(()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`fill-current`:``);bc(v,{size:16,get class(){return H(e)}})}D(_);var y=R(_,2);{let e=Wn(()=>q.inv.maxStack(H(o),t().id));fl(y,{get value(){return t().count},min:0,get max(){return H(e)},onchange:e=>g(t().id,e)})}var b=R(y,2),x=L(b);{let e=Wn(()=>Y.items.has(`${H(o)}:${t().id}`));ml(x,{get locked(){return H(e)},ontoggle:e=>{X.freezeItem(H(o),t().id,e),F(n,[...H(n)],!0),d()}})}D(b),D(h),D(r),z((e,n,i)=>{Jo(r,1,`border-border/50 hover:bg-border/30 flex h-full items-center border-b px-4 transition-colors ${e==null?``:e}`),K(a,n),ps(l,`title`,t().name),K(u,t().name),Jo(_,1,`mr-1 flex items-center justify-center transition-colors ${i==null?``:i}`)},[()=>Y.items.has(`${H(o)}:${t().id}`)?`border-l-frozen border-l-4 pl-3`:``,()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`focusin`,h,()=>F(c,!0)),U(`focusout`,h,()=>F(c,!1)),U(`click`,_,()=>{let e=H(o)===Fc.Item?`items`:H(o)===Fc.Weapon?`weapons`:`armors`;Zc.toggleFavorite(e,t().id),d()}),G(e,r)},$$slots:{itemTemplate:!0}}),e=>F(a,e,!0),()=>H(a)),D(C),D(_),z(()=>{Jo(b,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Item?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(x,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Weapon?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),Jo(S,1,`rounded px-3 py-1.5 text-sm font-semibold transition-colors ${H(o)===Fc.Armor?`bg-accent text-white`:`bg-border hover:bg-border/80 text-gray-300`}`),ds(ee,H(i))}),U(`click`,b,()=>p(Fc.Item)),U(`click`,x,()=>p(Fc.Weapon)),U(`click`,S,()=>p(Fc.Armor)),U(`input`,ee,h),G(e,_),Nt()}Wa([`click`,`input`,`focusin`,`focusout`]);var kl=W(``),Al=W(` `),jl=W(` `),Ml=W(` `),Nl=W(`No skills in database.`),Pl=W(`Clear All States`),Fl=W(` ×`),Il=W(`No active states.`),Ll=W(` `),Rl=W(` Recover All Core Status Level EXP HP MP TP Parameters Skills States Select a state to apply... Add State`,1),zl=W(`Start a game or select an actor to edit stats.`),Bl=W(`Actors `);function Vl(e,t){Mt(t,!0);let n=P(I([])),r=P(null),i=P(null),a=P(null),o=P(``),s=P(``);Mi(()=>{Q.targetActorId!==null&&H(n).length>0&&(F(r,Q.targetActorId,!0),Q.targetActorId=null,Q.targetActorStat=null,c())});let c=()=>{F(n,J.list(),!0),H(r)===null&&H(n).length>0&&F(r,H(n)[0].id,!0),H(r)!==null&&F(i,J.get(H(r)),!0)};Ws(()=>{c();let e=setInterval(()=>{c()},1e3);return()=>clearInterval(e)});let l=e=>{F(r,e,!0),F(i,J.get(e),!0)},u=(e,t)=>{H(r)!==null&&(e===`hp`?J.setHp(H(r),t):e===`mp`?J.setMp(H(r),t):e===`tp`&&J.setTp(H(r),t),Y.stats.has(`${H(r)}:${e}`)&&X.freezeStat(H(r),e,!0),F(i,J.get(H(r)),!0))},d=(e,t)=>{H(r)!==null&&(J.setParam(H(r),e,t),F(i,J.get(H(r)),!0))},f=()=>{H(r)===null||!H(i)||(H(i).inParty?J.removeFromParty(H(r)):J.addToParty(H(r)),c())},p=(e,t)=>{H(r)!==null&&(t?J.forgetSkill(H(r),e):J.learnSkill(H(r),e),F(i,J.get(H(r)),!0))},m={[Lc.MHP]:`Max HP`,[Lc.MMP]:`Max MP`,[Lc.ATK]:`Attack`,[Lc.DEF]:`Defense`,[Lc.MAT]:`M. Attack`,[Lc.MDF]:`M. Defense`,[Lc.AGI]:`Agility`,[Lc.LUK]:`Luck`};var h=Bl(),g=L(h),_=R(L(g),2);yo(_,21,()=>H(n),ho,(e,t)=>{var n=Al(),i=L(n),a=L(i),o=e=>{G(e,kl())};mo(a,e=>{H(t).inParty&&e(o)});var s=R(a,2),c=L(s,!0);D(s),D(i);var u=R(i,2),d=L(u);D(u),D(n),z(()=>{var e;ps(n,`id`,`actor-btn-${H(t).id}`),Jo(n,1,`flex w-full items-center justify-between rounded px-2.5 py-2 text-left text-sm transition-colors ${H(r)===H(t).id?`bg-accent text-white font-semibold`:`hover:bg-border/50 text-gray-300`}`),K(c,H(t).name),K(d,`Lv.${(e=H(t).level)==null?``:e}`)}),U(`click`,n,()=>l(H(t).id)),G(e,n)}),D(_),D(g);var v=R(g,2),y=L(v),b=e=>{var t,n=Rl(),l=_i(n),h=L(l),g=L(h),_=L(g,!0);D(g);var v=R(g,2),y=L(v);D(v),D(h);var b=R(h,2),x=L(b),S=R(x,2),ee=L(S,!0);D(S),D(b),D(l);var C=R(l,2),w=L(C),te=R(L(w),2),ne=R(L(te),2),re=L(ne);fl(re,{get value(){return H(i).level},min:1,max:99,onchange:e=>{H(r)!==null&&(J.setLevel(H(r),e),Y.stats.has(`${H(r)}:level`)&&X.freezeStat(H(r),`level`,!0),F(i,J.get(H(r)),!0),c())}});var ie=R(re,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:level`));ml(ie,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`level`,e),F(i,J.get(H(r)),!0))}})}D(ne),D(te);var ae=R(te,2),oe=R(L(ae),2),se=L(oe);fl(se,{get value(){return H(i).exp},min:0,onchange:e=>{H(r)!==null&&(J.setExp(H(r),e),Y.stats.has(`${H(r)}:exp`)&&X.freezeStat(H(r),`exp`,!0),F(i,J.get(H(r)),!0),c())}});var ce=R(se,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:exp`));ml(ce,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`exp`,e),F(i,J.get(H(r)),!0))}})}D(oe),D(ae);var le=R(ae,2),ue=R(L(le),2),de=L(ue);fl(de,{get value(){return H(i).hp},min:0,get max(){return H(i).mhp},onchange:e=>u(`hp`,e)});var fe=R(de,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:hp`));ml(fe,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`hp`,e),F(i,J.get(H(r)),!0))}})}D(ue),D(le);var pe=R(le,2),me=R(L(pe),2),he=L(me);fl(he,{get value(){return H(i).mp},min:0,get max(){return H(i).mmp},onchange:e=>u(`mp`,e)});var ge=R(he,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:mp`));ml(ge,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`mp`,e),F(i,J.get(H(r)),!0))}})}D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve);fl(ye,{get value(){return H(i).tp},min:0,get max(){return H(i).mtp},onchange:e=>u(`tp`,e)});var be=R(ye,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:tp`));ml(be,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`tp`,e),F(i,J.get(H(r)),!0))}})}D(ve),D(_e),D(w);var xe=R(w,2);yo(R(L(xe),2),17,()=>H(i).params,e=>e.id,(e,t)=>{var n=jl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2),c=L(s);fl(c,{get value(){return H(t).value},min:1,onchange:e=>{d(H(t).id,e),Y.stats.has(`${H(r)}:param_${H(t).id}`)&&X.freezeStat(H(r),`param_${H(t).id}`,!0)}});var l=R(c,2);{let e=Wn(()=>Y.stats.has(`${H(r)}:param_${H(t).id}`));ml(l,{get locked(){return H(e)},ontoggle:e=>{H(r)!==null&&(X.freezeStat(H(r),`param_${H(t).id}`,e),F(i,J.get(H(r)),!0))}})}D(s),D(n),z(()=>{ps(n,`id`,`stat-param_${H(t).id}`),K(o,m[H(t).id]||`Stat`)}),G(e,n)}),D(xe),D(C);var Se=R(C,2),Ce=L(Se),we=R(L(Ce),2);us(we),D(Ce);var Te=R(Ce,2);yo(Te,21,()=>H(i).skills.filter(e=>!H(o).trim()||e.name.toLowerCase().includes(H(o).trim().toLowerCase())||e.id.toString().includes(H(o).trim())),e=>e.id,(e,t)=>{var n=Ml(),r=L(n),i=L(r);D(r);var a=R(r,2),o=L(a,!0);D(a),D(n),z(e=>{var n;K(i,`${e==null?``:e}: ${(n=H(t).name)==null?``:n}`),Jo(a,1,`rounded border px-3 py-1 text-xs font-semibold transition-colors ${H(t).learned?`border-danger/30 text-danger bg-danger/10 hover:bg-danger/20`:`border-accent/30 text-accent bg-accent/10 hover:bg-accent/20`}`),K(o,H(t).learned?`Forget`:`Learn`)},[()=>H(t).id.toString().padStart(3,`0`)]),U(`click`,a,()=>p(H(t).id,H(t).learned)),G(e,n)},e=>{G(e,Nl())}),D(Te),D(Se);var Ee=R(Se,2),De=L(Ee),Oe=R(L(De),2),ke=L(Oe);us(ke);var Ae=R(ke,2),je=e=>{var t=Pl();U(`click`,t,()=>{H(r)!==null&&(J.clearStates(H(r)),F(i,J.get(H(r)),!0))}),G(e,t)};mo(Ae,e=>{H(i).states.length>0&&e(je)}),D(Oe),D(De);var Me=R(De,2);yo(Me,21,()=>H(i).states,ho,(e,t)=>{var n=Fl(),a=L(n),o=L(a,!0);D(a);var s=R(a,2);D(n),z(()=>K(o,H(t).name)),U(`click`,s,()=>{H(r)!==null&&(J.removeState(H(r),H(t).id),F(i,J.get(H(r)),!0))}),G(e,n)},e=>{G(e,Il())}),D(Me);var Ne=R(Me,2),Pe=L(Ne),Fe=L(Pe);Fe.value=(t=Fe.__value=null)!=null&&t!==void 0?t:``,yo(R(Fe),17,()=>J.listStates().filter(e=>!H(s).trim()||e.name.toLowerCase().includes(H(s).trim().toLowerCase())||e.id.toString().includes(H(s).trim())),ho,(e,t)=>{var n=Ll(),r=L(n);D(n);var i={};z(e=>{var a;if(K(r,`${e==null?``:e}: ${(a=H(t).name)==null?``:a}`),i!==(i=H(t).id)){var o;n.value=(o=n.__value=H(t).id)==null?``:o}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,n)}),D(Pe);var Ie=R(Pe,2);D(Ne),D(Ee),z(()=>{var e;K(_,H(i).name),K(y,`Actor ID: ${(e=H(i).id)==null?``:e}`),Jo(S,1,`rounded border px-3 py-1.5 text-xs font-semibold transition-colors ${H(i).inParty?`border-danger/30 bg-danger/20 text-danger hover:bg-danger/30`:`border-ok/30 bg-ok/20 text-ok hover:bg-ok/30`}`),K(ee,H(i).inParty?`Remove Party`:`Add Party`),Ie.disabled=H(a)===null}),U(`click`,x,()=>{H(r)!==null&&(J.recover(H(r)),F(i,J.get(H(r)),!0))}),U(`click`,S,f),Cs(we,()=>H(o),e=>F(o,e)),Cs(ke,()=>H(s),e=>F(s,e)),$o(Pe,()=>H(a),e=>F(a,e)),U(`click`,Ie,()=>{H(r)!==null&&H(a)!==null&&(J.addState(H(r),H(a)),F(i,J.get(H(r)),!0),F(a,null))}),G(e,n)},x=e=>{G(e,zl())};mo(y,e=>{H(i)?e(b):e(x,-1)}),D(v),D(h),G(e,h),Nt()}Wa([`click`]);function Hl(e){let t=e-1;return t*t*t+1}function Ul(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Hl}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=Wl(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function Wl(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var Gl=W(` `),Kl=W(` `),ql=W(` `),Jl=W(`Configure the hold key in the Keys panel.`),Yl=W(`Warning: Game is permanently sped up. Turn this back on to require holding a key.`),Xl=W(` `),Zl=W(` `),Ql=W(`Active Enemies `),$l=W(`LEAD`),eu=W(`⋮⋮ `),tu=W(`No active party members found (start/load a game).`),nu=W(`Quick Actions Party Resources Gold Steps Playtime Battle Settings God Mode One-Hit Kill Disable Encounters Movement Noclip (Walk Through Walls) Move Speed Game Speed Hold Key to Fast Forward Speed Multiplier Party Members Status `);function ru(e,t){Mt(t,!0);let n=P(0),r=P(0),i=P(0),a=P(4),o=P(!1),s=P(I([])),c=P(I([])),l=[{title:`System & Menus`,actions:[`quick_save`,`quick_load`,`open_save_scene`,`open_load_scene`,`goto_title`]},{title:`Battle Actions`,actions:[`force_victory`,`force_defeat`,`force_escape`,`trigger_encounter`]},{title:`Health Controls`,actions:[`party_recovery`,`party_wound`,`enemy_recovery`,`enemy_wound`]}],u=()=>{F(n,q.gold.get(),!0),F(r,q.party.steps(),!0),F(i,q.party.playtime(),!0),window.$gamePlayer&&F(a,window.$gamePlayer._moveSpeed||4,!0),F(o,!!(window.SceneManager&&window.SceneManager._scene&&window.SceneManager._scene.constructor.name===`Scene_Battle`)),H(o)&&window.$gameTroop?F(s,window.$gameTroop.members().map(e=>({ref:e,name:e.name(),hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(s,[],!0),window.$gameParty?F(c,window.$gameParty.members().map(e=>({ref:e,id:e.actorId(),name:e.name(),level:typeof e.level==`function`?e.level():e._level||1,hp:e.hp,mhp:e.mhp,mp:e.mp,mmp:e.mmp,tp:e.tp,maxTp:e.maxTp()})),!0):F(c,[],!0)};Ws(()=>{u();let e=setInterval(u,1e3);return()=>clearInterval(e)});let d=e=>{q.gold.set(e),Y.gold!==null&&X.freezeGold(!0),F(n,q.gold.get(),!0)},f=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`},p=(e,t)=>{e.ref.setHp(t),u()},m=(e,t)=>{e.ref.setMp(t),u()},h=(e,t)=>{e.ref.setTp?e.ref.setTp(t):e.ref.tp=t,u()},g=P(null),_=(e,t)=>{e!==t&&window.$gameParty&&typeof window.$gameParty.swapOrder==`function`&&(window.$gameParty.swapOrder(e,t),u())};var v=nu(),y=L(v),b=R(L(y),2);yo(b,21,()=>l,ho,(e,t)=>{var n=ql(),r=L(n),i=L(r,!0);D(r);var a=R(r,2);yo(a,21,()=>H(t).actions,ho,(e,t)=>{let n=Wn(()=>nl.find(e=>e.id===H(t)));var r=eo(),i=_i(r),a=e=>{var t=Kl(),r=L(t),i=L(r,!0);D(r);var a=R(r,2),o=e=>{var t=Gl(),r=L(t,!0);D(t),z(e=>K(r,e),[()=>{var e;return Yc.fromString(((e=$.get(H(n).id))==null?void 0:e.keyStr)||``).asDisplayString()}]),G(e,t)},s=Wn(()=>{var e;return(e=$.get(H(n).id))==null?void 0:e.keyStr});mo(a,e=>{H(s)&&e(o)}),D(t),z(()=>K(i,H(n).name)),U(`click`,t,()=>{var e,t;(e=(t=H(n)).onEnter)==null||e.call(t),u()}),G(e,t)};mo(i,e=>{H(n)&&e(a)}),G(e,r)}),D(a),D(n),z(()=>K(i,H(t).title)),G(e,n)}),D(b),D(y);var x=R(y,2),S=L(x),ee=R(L(S),2),C=R(L(ee),2),w=L(C);fl(w,{get value(){return H(n)},min:0,max:99999999,onchange:d});var te=R(w,2);{let e=Wn(()=>Y.gold!==null);ml(te,{get locked(){return H(e)},ontoggle:e=>{X.freezeGold(e),u()}})}D(C),D(ee);var ne=R(ee,2),re=R(L(ne),2),ie=L(re,!0);D(re),D(ne);var ae=R(ne,2),oe=R(L(ae),2),se=L(oe,!0);D(oe),D(ae),D(S);var ce=R(S,2),le=R(L(ce),2),ue=L(le);xl(R(L(ue),2),{get value(){return Z.god},onchange:e=>Wc.setGod(e)}),D(ue);var de=R(ue,2);xl(R(L(de),2),{get value(){return Z.ohko},onchange:e=>Wc.setOhko(e)}),D(de);var fe=R(de,2);xl(R(L(fe),2),{get value(){return Z.noEncounter},onchange:e=>Wc.setNoEncounter(e)}),D(fe),D(le),D(ce),D(x);var pe=R(x,2),me=R(L(pe),2),he=L(me);xl(R(L(he),2),{get value(){return Y.noclip},onchange:e=>X.setNoclip(e)}),D(he);var ge=R(he,2);fl(R(L(ge),2),{get value(){return H(a)},min:1,max:8,onchange:e=>q.map.speed(e)}),D(ge),D(me),D(pe);var _e=R(pe,2),ve=R(L(_e),2),ye=L(ve),be=L(ye);xl(R(L(be),2),{get value(){return Z.speedUseKey},onchange:e=>{Wc.setSpeedUseKey(e),e?Wc.setSpeed(1):Wc.setSpeed(Z.speedBoost)}}),D(be);var xe=R(be,2),Se=e=>{G(e,Jl())},Ce=e=>{G(e,Yl())};mo(xe,e=>{Z.speedUseKey?e(Se):e(Ce,-1)}),D(ye);var we=R(ye,2),Te=R(L(we),2);yo(Te,20,()=>[.5,1,2,3,5,8],ho,(e,t)=>{var n=Xl(),r=L(n);D(n),z(()=>{Jo(n,1,`border-border h-7 w-9 rounded border text-xs transition-colors ${Z.speedBoost===t?`border-accent bg-accent text-white font-semibold`:`bg-bg hover:bg-border/50 text-gray-300`}`),K(r,`${t==null?``:t}x`)}),U(`click`,n,()=>{Wc.setSpeedBoost(t),Z.speedUseKey||Wc.setSpeed(t)}),G(e,n)}),D(Te),D(we),D(ve),D(_e);var Ee=R(_e,2),De=e=>{var t=Ql(),n=R(L(t),2);yo(n,21,()=>H(s),ho,(e,t)=>{var n=Zl(),r=L(n),i=L(r),a=L(i,!0);D(i),D(r);var o=R(r,2),s=L(o),c=L(s),l=L(c);D(c),fl(R(c,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(s);var u=R(s,2),d=L(u),f=L(d);D(d),fl(R(d,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(u);var g=R(u,2),_=L(g),v=L(_);D(_),fl(R(_,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(g),D(o),D(n),z(()=>{var e,n,r,i,o;K(a,H(t).name),K(l,`HP (${(e=H(t).hp)==null?``:e}/${(n=H(t).mhp)==null?``:n})`),K(f,`MP (${(r=H(t).mp)==null?``:r}/${(i=H(t).mmp)==null?``:i})`),K(v,`TP (${(o=H(t).tp)==null?``:o})`)}),G(e,n)}),D(n),D(t),G(e,t)};mo(Ee,e=>{H(o)&&H(s).length>0&&e(De)});var Oe=R(Ee,2),ke=R(L(Oe),2);yo(ke,31,()=>H(c),e=>e.id,(e,t,n)=>{var r=eu(),i=L(r),a=L(i),o=L(a),s=R(L(o),2),c=L(s),l=R(c),u=e=>{G(e,$l())};mo(l,e=>{H(n)===0&&e(u)}),D(s),D(o);var d=R(o,2),f=L(d);D(d),D(a);var v=R(a,2),y=L(v),b=L(y),x=L(b);D(b),fl(R(b,2),{get value(){return H(t).hp},min:0,get max(){return H(t).mhp},onchange:e=>p(H(t),e)}),D(y);var S=R(y,2),ee=L(S),C=L(ee);D(ee),fl(R(ee,2),{get value(){return H(t).mp},min:0,get max(){return H(t).mmp},onchange:e=>m(H(t),e)}),D(S);var w=R(S,2),te=L(w),ne=L(te);D(te),fl(R(te,2),{get value(){return H(t).tp},min:0,get max(){return H(t).maxTp},onchange:e=>h(H(t),e)}),D(w),D(v),D(i),D(r),z(()=>{var e,o,s,l,u,d,p;Jo(r,1,`rounded p-2.5 transition-all duration-200 ${H(g)===H(n)?`border border-dashed border-accent/50 bg-accent/5`:`border border-border bg-bg`}`),Jo(i,1,`space-y-2 ${H(g)===H(n)?`invisible`:``}`),Jo(a,1,`flex w-full items-center justify-between pb-2 text-xs font-bold text-white ${H(g)===null?`cursor-grab active:cursor-grabbing`:``}`),K(c,`${(e=H(t).name)==null?``:e} `),K(f,`Lv.${(o=H(t).level)==null?``:o}`),K(x,`HP (${(s=H(t).hp)==null?``:s}/${(l=H(t).mhp)==null?``:l})`),K(C,`MP (${(u=H(t).mp)==null?``:u}/${(d=H(t).mmp)==null?``:d})`),K(ne,`TP (${(p=H(t).tp)==null?``:p})`)}),Ua(`dragenter`,r,e=>e.preventDefault()),Ua(`dragover`,r,e=>{if(e.preventDefault(),H(g)!==null&&H(g)!==H(n)){let t=e.currentTarget.getBoundingClientRect(),r=t.top+t.height/2;if(H(g)H(n)&&e.clientY>r)return;_(H(g),H(n)),F(g,H(n),!0)}}),Ua(`dragstart`,a,e=>{if(e.dataTransfer){e.dataTransfer.effectAllowed=`move`;let t=e.currentTarget.closest(`[role="listitem"]`);t&&e.dataTransfer.setDragImage(t,20,20)}setTimeout(()=>{F(g,H(n),!0)},0)}),Ua(`dragend`,a,()=>{F(g,null)}),Io(r,()=>Ul,()=>({duration:250})),G(e,r)},e=>{G(e,tu())}),D(ke),D(Oe),D(v),z(e=>{K(ie,H(r)),K(se,e)},[()=>f(H(i))]),Ua(`dragenter`,Oe,e=>e.preventDefault()),Ua(`dragover`,Oe,e=>e.preventDefault()),Ua(`dragenter`,ke,e=>e.preventDefault()),Ua(`dragover`,ke,e=>e.preventDefault()),G(e,v),Nt()}Wa([`click`]);var iu=W(` `),au=W(`No saved locations yet.`),ou=W(` Teleport `),su=W(`Teleport Target Map Point of Interest (POI) -- Select a POI -- X Y Teleport Now Saved Locations Save Current `);function cu(e,t){Mt(t,!0);let n=P(I({mapId:0,x:0,y:0,dir:0})),r=P(I([])),i=P(0),a=P(0),o=P(0),s=P(I([])),c=P(``),l=P(``),u=P(``);Mi(()=>{H(o)>0&&q.map.loadMapEvents(H(o)).then(e=>{F(s,e,!0),e.find(e=>e.id.toString()===H(c))||F(c,``)})});let d=P(I([])),f=P(``),p=()=>{let e=q.map.current();e&&(F(n,e,!0),F(o,H(o)||e.mapId,!0),F(i,e.x,!0),F(a,e.y,!0)),F(r,q.map.list(),!0);try{let e=localStorage.getItem(`forge:locations`);e&&F(d,JSON.parse(e),!0)}catch(e){}};Ws(()=>{p();let e=setInterval(()=>{let e=q.map.current();e&&(e.mapId!==H(n).mapId||e.x!==H(n).x||e.y!==H(n).y)&&F(n,e,!0)},1e3);return()=>clearInterval(e)});let m=()=>{q.map.teleport(H(o),H(i),H(a),0,0)},h=()=>{let e=q.map.current();if(!e)return;let t=H(r).find(t=>t.id===e.mapId);F(d,[...H(d),{id:Date.now().toString(),name:H(f)||`Saved Location`,mapId:e.mapId,mapName:t?t.name:`Map ${e.mapId}`,x:e.x,y:e.y}],!0),F(f,``),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},g=e=>{F(d,H(d).filter(t=>t.id!==e),!0),localStorage.setItem(`forge:locations`,JSON.stringify(H(d)))},_=e=>{q.map.teleport(e.mapId,e.x,e.y,0,0)};var v=su(),y=L(v),b=R(L(y),2),x=L(b);D(b);var S=R(b,2),ee=L(S),C=L(ee),w=R(L(C),2);us(w),D(C);var te=R(C,2);yo(te,21,()=>H(r).filter(e=>!H(l).trim()||e.name.toLowerCase().includes(H(l).trim().toLowerCase())||e.id.toString().includes(H(l).trim())),ho,(e,t)=>{var r=iu(),i=L(r);D(r);var a={};z(e=>{var o;if(K(i,`${H(t).id===H(n).mapId?`[CURRENT] `:``}${e==null?``:e}: ${(o=H(t).name)==null?``:o}`),a!==(a=H(t).id)){var s;r.value=(s=r.__value=H(t).id)==null?``:s}},[()=>H(t).id.toString().padStart(3,`0`)]),G(e,r)}),D(te),D(ee);var ne=R(ee,2),re=L(ne),ie=R(L(re),2);us(ie),D(re);var ae=R(re,2),oe=L(ae);oe.value=oe.__value=``,yo(R(oe),17,()=>H(s).filter(e=>!H(u).trim()||e.name.toLowerCase().includes(H(u).trim().toLowerCase())||e.id.toString().includes(H(u).trim())),ho,(e,t)=>{var n=iu(),r=L(n);D(n);var i={};z(()=>{var e,a,o;if(K(r,`${(e=H(t).name)==null?``:e} (X:${(a=H(t).x)==null?``:a}, Y:${(o=H(t).y)==null?``:o})`),i!==(i=H(t).id)){var s;n.value=(s=n.__value=H(t).id)==null?``:s}}),G(e,n)}),D(ae),D(ne);var se=R(ne,2),ce=L(se),le=R(L(ce),2);us(le),D(ce);var ue=R(ce,2),de=R(L(ue),2);us(de),D(ue),D(se);var fe=R(se,2);D(S),D(y);var pe=R(y,2),me=R(L(pe),2),he=L(me);us(he);var ge=R(he,2);D(me);var _e=R(me,2),ve=L(_e),ye=e=>{G(e,au())},be=e=>{var t=eo();yo(_i(t),17,()=>H(d),e=>e.id,(e,t)=>{var n=ou(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o);D(o),D(r);var c=R(r,2),l=L(c),u=R(l,2);Ec(L(u),{size:14}),D(u),D(c),D(n),z(()=>{var e,n,r,i;K(a,H(t).name),K(s,`${(e=H(t).mapName)==null?``:e} (Map ${(n=H(t).mapId)==null?``:n}) • X:${(r=H(t).x)==null?``:r} Y:${(i=H(t).y)==null?``:i}`)}),U(`click`,l,()=>_(H(t))),U(`click`,u,()=>g(H(t).id)),G(e,n)}),G(e,t)};mo(ve,e=>{H(d).length===0?e(ye):e(be,-1)}),D(_e),D(pe),D(v),z(()=>{var e,t,r;return K(x,`Current: Map ${(e=H(n).mapId)==null?``:e} (${(t=H(n).x)==null?``:t}, ${(r=H(n).y)==null?``:r})`)}),Cs(w,()=>H(l),e=>F(l,e)),$o(te,()=>H(o),e=>F(o,e)),Cs(ie,()=>H(u),e=>F(u,e)),U(`change`,ae,e=>{let t=parseInt(e.target.value);if(isNaN(t))return;let n=H(s).find(e=>e.id===t);n&&(F(i,n.x,!0),F(a,n.y,!0))}),$o(ae,()=>H(c),e=>F(c,e)),Cs(le,()=>H(i),e=>F(i,e)),Cs(de,()=>H(a),e=>F(a,e)),U(`click`,fe,m),U(`keydown`,he,e=>{e.stopPropagation(),e.key===`Enter`&&h()}),Cs(he,()=>H(f),e=>F(f,e)),U(`click`,ge,h),G(e,v),Nt()}Wa([`change`,`click`,`keydown`]);var lu=W(`Confirm? Cancel`,1),uu=W(`Run`),du=W(` `),fu=W(` `);function pu(e,t){Mt(t,!0);let n=P(I([])),r=P(I([])),i=P(``),a=P(null),o,s=()=>{let e=H(n);if(H(i).trim()){let t=H(i).trim().toLowerCase();e=H(n).filter(e=>String(e.id)===t||e.name.toLowerCase().includes(t))}F(r,e.sort((e,t)=>{let n=Zc.isFavorite(`commonEvents`,e.id),r=Zc.isFavorite(`commonEvents`,t.id);return n&&!r?-1:!n&&r?1:e.id-t.id}),!0)},c=()=>{F(n,q.commonev.list(),!0),s()},l=e=>{F(i,e.target.value,!0),s()};Ws(()=>{c()});let u=e=>{H(a)===e?(q.commonev.run(e),F(a,null),clearTimeout(o)):(F(a,e,!0),clearTimeout(o),o=setTimeout(()=>{H(a)===e&&F(a,null)},3e3))},d=()=>{F(a,null),clearTimeout(o)};var f=fu(),p=L(f),h=L(p);us(h);var g=R(h,2),_=L(g);D(g),D(p);var v=R(p,2);ul(L(v),{get items(){return H(r)},itemHeight:38,itemTemplate:(e,t=m)=>{var n=du(),r=L(n),i=L(r),o=L(i,!0);D(i);var c=R(i,2),l=L(c,!0);D(c),D(r);var f=R(r,2),p=L(f),h=L(p);{let e=Wn(()=>Zc.isFavorite(`commonEvents`,t().id)?`fill-current`:``);bc(h,{size:16,get class(){return H(e)}})}D(p);var g=R(p,2),_=L(g),v=e=>{var n=lu(),r=_i(n),i=R(r,2);U(`click`,r,()=>u(t().id)),U(`click`,i,d),G(e,n)},y=e=>{var n=uu();U(`click`,n,()=>u(t().id)),G(e,n)};mo(_,e=>{H(a)===t().id?e(v):e(y,-1)}),D(g),D(f),D(n),z((e,n)=>{K(o,e),ps(c,`title`,t().name),K(l,t().name),Jo(p,1,`mr-2 flex items-center justify-center transition-colors ${n==null?``:n}`)},[()=>t().id.toString().padStart(4,`0`),()=>Zc.isFavorite(`commonEvents`,t().id)?`text-yellow-400 hover:text-yellow-300`:`text-gray-600 hover:text-gray-400`]),U(`click`,p,()=>{Zc.toggleFavorite(`commonEvents`,t().id),s()}),G(e,n)},$$slots:{itemTemplate:!0}}),D(v),D(f),z(()=>{var e;ds(h,H(i)),K(_,`${(e=H(r).length)==null?``:e} items`)}),U(`input`,h,l),G(e,f),Nt()}Wa([`input`,`click`]);var mu=W(`Unfreeze All`),hu=W(` Unfreeze`),gu=W(`No active data locks. Use the lock icon on variables, switches, items, or stats to freeze their value.`),_u=W(` `);function vu(e,t){Mt(t,!0);let n=P(I([])),r=()=>{F(n,X.summary(),!0)};Ws(()=>{r();let e=setInterval(r,1e3);return()=>clearInterval(e)});let i=e=>{if(e.type===`var`)X.freezeVar(e.id,!1);else if(e.type===`switch`)X.freezeSwitch(e.id,!1);else if(e.type===`item`){let[t,n]=e.key.split(`:`);X.freezeItem(t,parseInt(n,10),!1)}else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);X.freezeStat(parseInt(t,10),n,!1)}else e.type===`gold`&&X.freezeGold(!1);r()},a=e=>{if(e.type===`var`)Q.targetVarId=e.id,Q.activeTab=Ic.Vars;else if(e.type===`switch`)Q.targetSwitchId=e.id,Q.activeTab=Ic.Switches;else if(e.type===`item`)Q.targetItemKey=e.key,Q.activeTab=Ic.Inv;else if(e.type===`gold`)Q.activeTab=Ic.General;else if(e.type===`stat`||e.type===`param`){let[t,n]=e.key.split(`:`);Q.targetActorId=parseInt(t,10),Q.targetActorStat=n,Q.activeTab=Ic.Actors}},o=()=>{X.clearAll(),r()},s=e=>e===`var`?`VAR`:e===`switch`?`SW`:e===`item`?`ITEM`:e===`stat`?`STAT`:e===`param`?`PARAM`:e===`gold`?`GOLD`:`LOCK`,c=e=>e===`var`?`border-accent/30 bg-accent/10 text-accent`:e===`switch`?`border-ok/30 bg-ok/10 text-ok`:e===`item`?`border-warn/30 bg-warn/10 text-warn`:e===`stat`?`border-danger/30 bg-danger/10 text-danger`:e===`param`?`border-fuchsia-500/30 bg-fuchsia-500/10 text-fuchsia-500`:e===`gold`?`border-yellow-500/30 bg-yellow-500/10 text-yellow-500`:`border-gray-500/30 bg-gray-500/10 text-gray-400`;var l=_u(),u=L(l),d=L(u),f=L(d);D(d);var p=R(d,2),m=e=>{var t=mu();U(`click`,t,o),G(e,t)};mo(p,e=>{H(n).length>0&&e(m)}),D(u);var h=R(u,2);yo(h,21,()=>H(n),ho,(e,t)=>{var n=hu(),r=L(n),o=L(r),l=L(o,!0);D(o);var u=R(o,2),d=L(u,!0);D(u),D(r);var f=R(r,2),p=L(f),m=L(p,!0);D(p);var h=R(p,2);D(f),D(n),z((e,n)=>{Jo(o,1,`rounded border px-1.5 py-0.5 text-[10px] font-bold font-mono tracking-wide ${e==null?``:e}`),K(l,n),ps(u,`title`,H(t).label),K(d,H(t).label),K(m,typeof H(t).value==`boolean`?H(t).value?`ON`:`OFF`:H(t).value)},[()=>c(H(t).type),()=>s(H(t).type)]),U(`keydown`,n,e=>e.key===`Enter`&&a(H(t))),U(`click`,n,()=>a(H(t))),U(`click`,h,e=>{e.stopPropagation(),i(H(t))}),G(e,n)},e=>{G(e,gu())}),D(h),D(l),z(()=>{var e;return K(f,`${(e=H(n).length)==null?``:e} active locks`)}),G(e,l),Nt()}Wa([`click`,`keydown`]);var yu=W(`Press a key...`),bu=W(` `),xu=W(``),Su=W(` `);function Cu(e,t){Mt(t,!0);let n=Hs(t,`value`,15,``),r=Hs(t,`required`,3,!1),i=Hs(t,`combiningKeyAlone`,3,!1),a=P(!1),o=()=>{F(a,!0);let e=e=>{var a;e.preventDefault(),e.stopPropagation();let o=Yc.fromEvent(e);o.isCombiningKey()&&!i()||(n(o.asString()),(a=t.onchange)==null||a.call(t,n()),r())},r=()=>{F(a,!1),window.removeEventListener(`keydown`,e,{capture:!0})};window.addEventListener(`keydown`,e,{capture:!0}),setTimeout(()=>{window.addEventListener(`click`,r,{capture:!0,once:!0})},100)},s=e=>{if(!e)return`None`;try{return Yc.fromString(e).asDisplayString()}catch(t){return e}};var c=Su(),l=L(c),u=e=>{G(e,yu())},d=e=>{var t=bu(),r=L(t,!0);D(t),z(e=>{Jo(t,1,`border-border bg-bg2 hover:bg-border/50 flex h-8 flex-1 items-center rounded border px-3 text-sm font-medium transition-colors ${n()?`text-white`:`text-gray-500`}`),K(r,e)},[()=>s(n())]),U(`click`,t,o),G(e,t)};mo(l,e=>{H(a)?e(u):e(d,-1)});var f=R(l,2),p=e=>{var r=xu();Mc(L(r),{size:14}),D(r),U(`click`,r,()=>{var e;n(``),(e=t.onchange)==null||e.call(t,n())}),G(e,r)};mo(f,e=>{!r()&&n()&&!H(a)&&e(p)}),D(c),G(e,c),Nt()}Wa([`click`]);var wu=W(` `),Tu=W(` Restore Defaults `);function Eu(e,t){Mt(t,!0);let n=P(I([])),r=P(``),i=P(I([])),a=()=>{if(!H(r).trim())F(i,H(n),!0);else{let e=H(r).trim().toLowerCase();F(i,H(n).filter(t=>t.name.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)||t.keyStr.toLowerCase().includes(e)),!0)}},o=()=>{F(n,$.shortcuts.map(e=>({...e})),!0),a()};Ws(()=>{o()});let s=e=>{F(r,e.target.value,!0),a()},c=(e,t)=>{$.update(e,{keyStr:t}),o()},l=(e,t)=>{$.update(e,{enabled:t}),o()},u=()=>{localStorage.removeItem(`forge:shortcuts`),zc.show(`Defaults restored. Please reload the game.`,`success`)};var d=Tu(),f=L(d),p=L(f);us(p);var m=R(p,2);D(f);var h=R(f,2);yo(h,21,()=>H(i),e=>e.id,(e,t)=>{var n=wu(),r=L(n),i=L(r),a=L(i,!0);D(i);var o=R(i,2),s=L(o,!0);D(o),D(r);var u=R(r,2),d=L(u);{let e=Wn(()=>H(t).id===`speed_hold`||H(t).id===`skip_message`);Cu(d,{get value(){return H(t).keyStr},get required(){return H(t).required},get combiningKeyAlone(){return H(e)},onchange:e=>c(H(t).id,e)})}D(u);var f=R(u,2);xl(L(f),{get value(){return H(t).enabled},onchange:e=>l(H(t).id,e)}),D(f),D(n),z(()=>{Jo(i,1,`font-semibold text-sm ${H(t).enabled?`text-white`:`text-gray-500`}`),K(a,H(t).name),K(s,H(t).desc)}),G(e,n)}),D(h),D(d),z(()=>ds(p,H(r))),U(`input`,p,s),U(`click`,m,u),G(e,d),Nt()}Wa([`input`,`click`]),yt();var Du=Ls(()=>Xc),Ou=W(`UI Preferences Inactive Opacity Controls how transparent the panel becomes when the mouse leaves. Remember Window Position Save the exact window dimensions and position between game boots. Auto-Open on Boot Automatically display the Forge panel when the game finishes loading. Show Launcher Icon Display a draggable icon to open the panel without a shortcut. Gameplay Quick Save / Load Slot The save file slot used by the Quick Save and Quick Load shortcuts. Data Management Factory Reset Wipes all Forge settings, locks, and saved layout data. Reset Everything`);function ku(e,t){Mt(t,!1);let n=()=>Zc.save();Fs();var r=Ou(),i=L(r),a=R(L(i),2),o=R(L(a),2);fl(L(o),{get value(){return Du().inactiveOpacity},min:10,max:100,onchange:e=>{Du(Du().inactiveOpacity=e),n()}}),D(o),D(a);var s=R(a,2);xl(R(L(s),2),{onchange:()=>n(),get value(){return Du().rememberPosition},set value(e){Du(Du().rememberPosition=e)},$$legacy:!0}),D(s);var c=R(s,2);xl(R(L(c),2),{onchange:()=>n(),get value(){return Du().autoOpen},set value(e){Du(Du().autoOpen=e)},$$legacy:!0}),D(c);var l=R(c,2);xl(R(L(l),2),{onchange:()=>n(),get value(){return Du().showLauncher},set value(e){Du(Du().showLauncher=e)},$$legacy:!0}),D(l),D(i);var u=R(i,2),d=R(L(u),2),f=R(L(d),2);fl(L(f),{get value(){return Du().quickSaveSlot},min:1,max:20,onchange:e=>{Du(Du().quickSaveSlot=e),n()}}),D(f),D(d),D(u);var p=R(u,2),m=R(L(p),2),h=R(L(m),2);D(m),D(p),D(r),U(`click`,h,()=>Zc.resetAll()),G(e,r),Nt()}Wa([`click`]);var Au=W(` No logs recorded yet.`),ju=W(` `),Mu=W(`Narrator / Unknown`),Nu=W(` `),Pu=W(`Game Dialogue Logs CLEAR `);function Fu(e,t){Mt(t,!0);let n=P(void 0),r=e=>{let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`};Mi(()=>{Qc.entries.length&&setTimeout(()=>{var e,t;H(n)&&((e=(t=H(n)).scrollToBottom)==null||e.call(t))},10)});var i=Pu(),a=L(i),o=L(a),s=R(L(o),2);wc(L(s),{size:14}),ut(2),D(s),D(o);var c=R(o,2),l=L(c),u=e=>{var t=Au();mc(L(t),{size:32,class:`opacity-50`}),ut(2),D(t),G(e,t)},d=e=>{Ps(ul(e,{get items(){return Qc.entries},itemHeight:80,containerHeight:400,itemTemplate:(e,t=m)=>{var n=Nu(),i=L(n),a=L(i),o=e=>{var n=ju(),r=L(n,!0);D(n),z(()=>K(r,t().speaker)),G(e,n)},s=e=>{G(e,Mu())};mo(a,e=>{t().speaker?e(o):e(s,-1)});var c=R(a,2),l=L(c,!0);D(c),D(i);var u=R(i,2),d=L(u,!0);D(u),D(n),z(e=>{K(l,e),K(d,t().text)},[()=>r(t().timestamp)]),G(e,n)},$$slots:{itemTemplate:!0}}),e=>F(n,e,!0),()=>H(n))};mo(l,e=>{Qc.entries.length===0?e(u):e(d,-1)}),D(c),D(a),D(i),U(`click`,s,()=>tl.clear()),G(e,i),Nt()}Wa([`click`]);var Iu=W(` `),Lu=W(`Forge `),Ru=W(` `),zu=W(` `,1);function Bu(e,t){Mt(t,!0),Mi(()=>{let e=document.getElementById(`forge-mvmz-host`);if(!e)return;let t=!1,n=()=>{t=!1},r=[`mousedown`,`mousemove`,`mouseup`,`click`,`dblclick`,`pointerdown`,`pointermove`,`pointerup`,`contextmenu`,`wheel`,`touchstart`,`touchmove`,`touchend`,`keydown`,`keyup`],i=e=>{(e.type===`mousedown`||e.type===`pointerdown`||e.type===`touchstart`)&&(t=!0);let n=e.type===`mousemove`||e.type===`pointermove`||e.type===`touchmove`,r=e.type===`mouseup`||e.type===`pointerup`||e.type===`touchend`;if(n){let n=!1;if(`buttons`in e?n=e.buttons>0:`touches`in e&&(n=e.touches.length>0),n&&!t)return}r&&!t||e.stopPropagation()};if(window.addEventListener(`mouseup`,n,{capture:!0}),window.addEventListener(`pointerup`,n,{capture:!0}),window.addEventListener(`touchend`,n,{capture:!0}),Q.visible)for(let t of r)e.addEventListener(t,i,!1);else for(let t of r)e.removeEventListener(t,i,!1);return()=>{window.removeEventListener(`mouseup`,n,{capture:!0}),window.removeEventListener(`pointerup`,n,{capture:!0}),window.removeEventListener(`touchend`,n,{capture:!0});for(let t of r)e.removeEventListener(t,i,!1)}});let n=[{id:Ic.General,label:`General`},{id:Ic.Vars,label:`Variables`},{id:Ic.Switches,label:`Switches`},{id:Ic.Inv,label:`Inventory`},{id:Ic.Actors,label:`Actors`},{id:Ic.Map,label:`Map`},{id:Ic.CommonEv,label:`Events`},{id:Ic.Locks,label:`Locks`},{id:Ic.Logs,label:`Logs`},{id:Ic.Shortcuts,label:`Keys`},{id:Ic.Settings,label:`Settings`}],r=P(0),i=P(0),a=P(840),o=P(520),s=P(!1);Ws(()=>{Zc.load(),X.install(),Wc.install(),tl.install(),$.init(nl);try{let e=JSON.parse(localStorage.getItem(`forge:panel`)||`null`);e&&Xc.rememberPosition?(F(r,e.x,!0),F(i,e.y,!0),F(a,e.w,!0),F(o,e.h,!0)):typeof window<`u`&&(F(r,0),F(i,0),F(a,Math.min(840,window.innerWidth||840),!0),F(o,Math.min(520,window.innerHeight||520),!0));let t=localStorage.getItem(`forge:lastTab`);t&&Object.values(Ic).includes(t)&&(Q.activeTab=t)}catch(e){}Xc.autoOpen&&!Q.visible&&(Q.visible=!0)});let c=()=>{Xc.rememberPosition&&localStorage.setItem(`forge:panel`,JSON.stringify({x:H(r),y:H(i),w:H(a),h:H(o)})),localStorage.setItem(`forge:lastTab`,Q.activeTab)},l=P(!1),u=P(0),d=P(0),f=P(0),p=P(0),m=e=>{H(l)&&(F(r,Math.max(0,Math.min(window.innerWidth-H(a),H(f)+e.clientX-H(u))),!0),F(i,Math.max(0,Math.min(window.innerHeight-H(o),H(p)+e.clientY-H(d))),!0))},h=()=>{F(l,!1),window.removeEventListener(`mousemove`,m,!0),window.removeEventListener(`mouseup`,h,!0),c()},g=e=>{e.target.closest(`button, input, select`)||(F(l,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(f,H(r),!0),F(p,H(i),!0),window.addEventListener(`mousemove`,m,!0),window.addEventListener(`mouseup`,h,!0))},_=P(!1),v=P(0),y=P(0),b=e=>{H(_)&&(F(a,Math.max(560,Math.min(window.innerWidth-H(r),H(v)+e.clientX-H(u))),!0),F(o,Math.max(360,Math.min(window.innerHeight-H(i),H(y)+e.clientY-H(d))),!0))},x=()=>{F(_,!1),window.removeEventListener(`mousemove`,b,!0),window.removeEventListener(`mouseup`,x,!0),c()},S=e=>{F(_,!0),F(u,e.clientX,!0),F(d,e.clientY,!0),F(v,H(a),!0),F(y,H(o),!0),window.addEventListener(`mousemove`,b,!0),window.addEventListener(`mouseup`,x,!0),e.stopPropagation()};var ee=zu(),C=_i(ee),w=e=>{var t=Lu(),u=L(t),d=L(u),f=R(d,2);yo(f,21,()=>n,ho,(e,t)=>{var n=Iu(),r=L(n),i=e=>{Ac(e,{size:14})},a=e=>{ic(e,{size:14})},o=e=>{Sc(e,{size:14})},s=e=>{gc(e,{size:14})},l=e=>{Oc(e,{size:14})},u=e=>{fc(e,{size:14})},d=e=>{Pc(e,{size:14})},f=e=>{uc(e,{size:14})},p=e=>{mc(e,{size:14})},m=e=>{oc(e,{size:14})},h=e=>{vc(e,{size:14})};mo(r,e=>{H(t).id===`general`?e(i):H(t).id===`vars`?e(a,1):H(t).id===`switches`?e(o,2):H(t).id===`inv`?e(s,3):H(t).id===`actors`?e(l,4):H(t).id===`map`?e(u,5):H(t).id===`commonev`?e(d,6):H(t).id===`locks`?e(f,7):H(t).id===`logs`?e(p,8):H(t).id===`shortcuts`?e(m,9):H(t).id===`settings`&&e(h,10)});var g=R(r,2),_=L(g,!0);D(g),D(n),z(()=>{Jo(n,1,`w-full text-left rounded px-3 py-2 text-xs font-semibold transition-all flex items-center space-x-2.5 focus:outline-none ${Q.activeTab===H(t).id?`bg-[#7ba4ff]/10 text-[#7ba4ff] shadow-sm`:`text-gray-400 hover:bg-[#2a2d3a] hover:text-gray-200`}`),K(_,H(t).label)}),U(`click`,n,()=>{var e;Q.activeTab=H(t).id,(e=window.getSelection())==null||e.removeAllRanges(),c()}),G(e,n)}),D(f);var p=R(f,2),m=L(p);ps(m,`title`,`1.0.0`),m.textContent=`1.0.0`,D(p),D(u);var h=R(u,2),v=L(h),y=L(v),b=L(y,!0);D(y);var x=R(y,2);Mc(L(x),{size:14}),D(x),D(v);var ee=R(v,2),C=L(ee),w=e=>{yl(e,{})},te=e=>{wl(e,{})},ne=e=>{Ol(e,{})},re=e=>{Vl(e,{})},ie=e=>{ru(e,{})},ae=e=>{cu(e,{})},oe=e=>{pu(e,{})},se=e=>{vu(e,{})},ce=e=>{Fu(e,{})},le=e=>{Eu(e,{})},ue=e=>{ku(e,{})};mo(C,e=>{Q.activeTab===Ic.Vars?e(w):Q.activeTab===Ic.Switches?e(te,1):Q.activeTab===Ic.Inv?e(ne,2):Q.activeTab===Ic.Actors?e(re,3):Q.activeTab===Ic.General?e(ie,4):Q.activeTab===Ic.Map?e(ae,5):Q.activeTab===Ic.CommonEv?e(oe,6):Q.activeTab===Ic.Locks?e(se,7):Q.activeTab===Ic.Logs?e(ce,8):Q.activeTab===Ic.Shortcuts?e(le,9):Q.activeTab===Ic.Settings&&e(ue,10)}),D(ee),D(h),il(R(h,2),{onmousedown:S}),D(t),z(e=>{var n,c,u,d;Xo(t,`opacity: ${H(l)||H(_)||H(s)?1:Xc.inactiveOpacity/100}; left: ${(n=H(r))==null?``:n}px; top: ${(c=H(i))==null?``:c}px; width: ${(u=H(a))==null?``:u}px; height: ${(d=H(o))==null?``:d}px; background: #13151a; color: #d4d8e3;`),K(b,e)},[()=>{var e;return((e=n.find(e=>e.id===Q.activeTab))==null?void 0:e.label)||``}]),Ua(`mouseenter`,t,()=>F(s,!0)),Ua(`mouseleave`,t,()=>F(s,!1)),U(`mousedown`,d,g),U(`mousedown`,v,g),U(`click`,x,()=>Q.visible=!1),G(e,t)};mo(C,e=>{Q.visible&&e(w)});var te=R(C,2);yo(te,21,()=>zc.toasts,e=>e.id,(e,t)=>{var n=Ru(),r=L(n),i=R(r,2),a=L(i,!0);D(i),D(n),z(()=>{Xo(n,`background: #1a1d24; border-color: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`}; opacity: 0.95; min-width: 160px; max-width: 320px;`),Xo(r,`background: ${H(t).type===`success`?`#10b981`:H(t).type===`warn`?`#fb923c`:H(t).type===`error`?`#ef4444`:`#6366f1`};`),K(a,H(t).message)}),G(e,n)}),D(te),ol(R(te,2),{}),G(e,ee),Nt()}Wa([`mousedown`,`click`]);var Vu=`forge-mvmz-host`,Hu=document.getElementById(Vu);Hu||(Hu=document.createElement(`div`),Hu.id=Vu,Hu.style.position=`fixed`,Hu.style.top=`0`,Hu.style.left=`0`,Hu.style.width=`100vw`,Hu.style.height=`100vh`,Hu.style.pointerEvents=`none`,Hu.style.zIndex=`2147483647`,document.body.appendChild(Hu));var Uu=document.createElement(`style`);Uu.textContent=`#${Vu} { z-index: 2147483647 !important; }`,document.head.appendChild(Uu);var Wu=null,Gu;typeof Hu.attachShadow==`function`?(Wu=Hu.attachShadow({mode:`open`}),Gu=Wu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,Wu.appendChild(e)}}},0)):(Gu=Hu,setTimeout(()=>{for(let e of document.head.querySelectorAll(`style`)){let t=e.textContent||``;if(t.includes(`tailwind`)||t.includes(`--color-bg`)){let e=document.createElement(`style`);e.textContent=t,document.head.appendChild(e)}}},0));var Ku=document.createElement(`div`);Ku.style.pointerEvents=`none`,Ku.style.width=`100%`,Ku.style.height=`100%`,Gu.appendChild(Ku);try{to(Bu,{target:Ku})}catch(e){console.error(`[FORGE] Error mounting Svelte App:`,e)}if(window.Input!==void 0&&window.Input._onKeyDown){let e=window.Input._onKeyDown;window.Input._onKeyDown=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}if(window.Input!==void 0&&window.Input._onKeyUp){let e=window.Input._onKeyUp;window.Input._onKeyUp=function(t){let n=t.composedPath&&t.composedPath()[0]||t.target;Hu.contains(n)||e.call(this,t)}}})(); \ No newline at end of file