Greasy Fork 支持简体中文。

FarmRPG Helper

QOL and helper scripts for FarmRPG

// ==UserScript==
// @name         FarmRPG Helper
// @namespace    https://greasyfork.org/users/1114461
// @homepage     https://github.com/fewfre/farmrpg-helper
// @version      1.0.7
// @description  QOL and helper scripts for FarmRPG
// @author       Fewfre
// @license      GNU GPLv3
// @match        https://farmrpg.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=farmrpg.com
// @resource     scriptStyle https://raw.githubusercontent.com/fewfre/farmrpg-helper/main/greasyfork/index.css?v=1.0.6
// @grant        GM_getResourceText
// @grant        GM_addStyle
// @grant        unsafeWindow
// ==/UserScript==
localStorage.setItem('fewfh-enable-all', "1");
var at = Object.defineProperty; var ut = (n, e, t) => e in n ? at(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t; var F = (n, e, t) => (ut(n, typeof e != "symbol" ? e + "" : e, t), t); (function () { const e = document.createElement("link").relList; if (e && e.supports && e.supports("modulepreload")) return; for (const i of document.querySelectorAll('link[rel="modulepreload"]')) s(i); new MutationObserver(i => { for (const l of i) if (l.type === "childList") for (const r of l.addedNodes) r.tagName === "LINK" && r.rel === "modulepreload" && s(r) }).observe(document, { childList: !0, subtree: !0 }); function t(i) { const l = {}; return i.integrity && (l.integrity = i.integrity), i.referrerPolicy && (l.referrerPolicy = i.referrerPolicy), i.crossOrigin === "use-credentials" ? l.credentials = "include" : i.crossOrigin === "anonymous" ? l.credentials = "omit" : l.credentials = "same-origin", l } function s(i) { if (i.ep) return; i.ep = !0; const l = t(i); fetch(i.href, l) } })(); var Q; (n => { const e = (typeof unsafeWindow < "u" ? unsafeWindow : window).myApp; function t(r, o) { e.onPageInit(r, o) } n.onPageInit = t; function s(r, o) { e.onPageBeforeRemove(r, o) } n.onPageBeforeRemove = s; function i(r, o) { let a = null; n.onPageInit("*", c => { a === r && c.name !== r && o(c), a = c.name }) } n.onPageExit = i; function l() { e.mainView.router.refreshPage() } n.refreshPage = l })(Q || (Q = {})); var de; (n => { n.SOUND_FINISHED = new Audio("data:audio/mpeg;base64,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XQDigEAQOE61LX5iKKY6TEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/+OIZAAAAAGkAOAAAAAAA0gBwAAATEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"), n.IMAGE_CEVRON_RIGHT = "data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PScwIDAgNjAgMTIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J202MCA2MS41LTM4LjI1IDM4LjI1LTkuNzUtOS43NSAyOS4yNS0yOC41LTI5LjI1LTI4LjUgOS43NS05Ljc1eicgZmlsbD0nI2M3YzdjYycvPjwvc3ZnPg==" })(de || (de = {})); function _e(n, e) { return Math.random() * (e - n) + n } async function V(n, e) { return new Promise(t => { setTimeout(t, e ? _e(n * 1e3, e * 1e3) : n * 1e3) }) } function ft(n, e) { let t, s; return { promise: new Promise(l => { s = l, t = setTimeout(l, e ? _e(n * 1e3, e * 1e3) : n * 1e3) }), timeoutId: t, cancel() { clearTimeout(t), s() } } } function ve(n, e = {}) { return new Promise((t, s) => { const i = r => $(r).is(":visible") && parseInt($(r).css("opacity")) > .1; if ($(n).length && (!e.visible || i(n))) return t($(n + ":visible").first()[0]); const l = new MutationObserver(r => { $(n).length && (!e.visible || i(n)) && (t($(n + ":visible").first()[0]), l.disconnect()) }); e.timeout && V(e.timeout).then(() => { l.disconnect(), s(new Error("observer timed out")) }), l.observe(e.target || document.body, { attributes: !0, childList: !0, subtree: !0, ...e.config }) }) } async function we(n, e) { return fetch(`worker.php?go=buyitem&id=${n}&qty=${e}`, { method: "POST" }).then(t => t.text()).then(t => Number.isNaN(Number.parseInt(t)) ? t : we(n, t)) } const le = { farming: 0, fishing: 0, crafting: 0, exploring: 0, cooking: 0 }; function st() { return $('[href="progress.php?type=Farming"]').length && (le.farming = parseInt($('[href="progress.php?type=Farming"]').parent().text().replaceAll(/[^\d]/g, "") || "0"), le.fishing = parseInt($('[href="progress.php?type=Fishing"]').parent().text().replaceAll(/[^\d]/g, "") || "0"), le.crafting = parseInt($('[href="progress.php?type=Crafting"]').parent().text().replaceAll(/[^\d]/g, "") || "0"), le.exploring = parseInt($('[href="progress.php?type=Exploring"]').parent().text().replaceAll(/[^\d]/g, "") || "0"), le.cooking = parseInt($('[href="progress.php?type=Cooking"]').parent().text().replaceAll(/[^\d]/g, "") || "0")), le } const Me = class extends EventTarget { constructor() { super(); F(this, "active", !1); F(this, "stopRequested", !1); F(this, "waitForMoreStamina", !0); F(this, "listOfCancelFunctions", []) } get isActive() { return this.active } get isStopRequested() { return this.stopRequested } get isWaitForMoreStamina() { return this.waitForMoreStamina } set isWaitForMoreStamina(t) { this.waitForMoreStamina = t, t || this.fireAllCancelFunctions() } async start() { if (!this.active) { this.active = !0, this.listOfCancelFunctions = []; try { if (!$(".explorebtn").length) throw new Error("No exploration area detected"); for (; this.getStaminaCount() > 0 || this.waitForMoreStamina;) { if (this.getStaminaCount() <= 0 && this.waitForMoreStamina) { const { promise: t, cancel: s } = ft(570, 600); this.listOfCancelFunctions.push(s), await t } if (await this.exploreOne(), this.stopRequested) break; await V(.12, .28) } this.active = !1, this.stopRequested = !1, this.listOfCancelFunctions = [], this.dispatchEvent(new Event(Me.FINISHED)), de.SOUND_FINISHED.play() } catch (t) { alert(t.message) } } } stop() { this.stopRequested || !this.active || (this.stopRequested = !0, this.fireAllCancelFunctions()) } fireAllCancelFunctions() { this.listOfCancelFunctions.forEach(t => t()) } async exploreOne() { if (!$(".explorebtn").length) throw new Error("No exploration area detected"); $(".explorebtn").trigger("click") } getStaminaCount() { return parseInt($("#stamina").text() || "0") } }; let ue = Me; F(ue, "FINISHED", "FINISHED"); function T() { } function it(n) { return n() } function Re() { return Object.create(null) } function X(n) { n.forEach(it) } function lt(n) { return typeof n == "function" } function ee(n, e) { return n != n ? e == e : n !== e || n && typeof n == "object" || typeof n == "function" } let he; function H(n, e) { return he || (he = document.createElement("a")), he.href = e, n === he.href } function qt(n) { return Object.keys(n).length === 0 } function Le(n) { return n ?? "" } function m(n, e) { n.appendChild(e) } function v(n, e, t) { n.insertBefore(e, t || null) } function A(n) { n.parentNode && n.parentNode.removeChild(n) } function se(n, e) { for (let t = 0; t < n.length; t += 1)n[t] && n[t].d(e) } function _(n) { return document.createElement(n) } function B(n) { return document.createTextNode(n) } function L() { return B(" ") } function rt() { return B("") } function U(n, e, t, s) { return n.addEventListener(e, t, s), () => n.removeEventListener(e, t, s) } function p(n, e, t) { t == null ? n.removeAttribute(e) : n.getAttribute(e) !== t && n.setAttribute(e, t) } function dt(n) { return Array.from(n.childNodes) } function x(n, e) { e = "" + e, n.data !== e && (n.data = e) } function j(n, e, t, s) { t == null ? n.style.removeProperty(e) : n.style.setProperty(e, t, s ? "important" : "") } let Ie; function fe(n) { Ie = n } const oe = [], Ne = []; let ce = []; const Be = [], mt = Promise.resolve(); let ye = !1; function pt() { ye || (ye = !0, mt.then(ot)) } function Se(n) { ce.push(n) } const be = new Set; let re = 0; function ot() { if (re !== 0) return; const n = Ie; do { try { for (; re < oe.length;) { const e = oe[re]; re++, fe(e), ht(e.$$) } } catch (e) { throw oe.length = 0, re = 0, e } for (fe(null), oe.length = 0, re = 0; Ne.length;)Ne.pop()(); for (let e = 0; e < ce.length; e += 1) { const t = ce[e]; be.has(t) || (be.add(t), t()) } ce.length = 0 } while (oe.length); for (; Be.length;)Be.pop()(); ye = !1, be.clear(), fe(n) } function ht(n) { if (n.fragment !== null) { n.update(), X(n.before_update); const e = n.dirty; n.dirty = [-1], n.fragment && n.fragment.p(n.ctx, e), n.after_update.forEach(Se) } } function _t(n) { const e = [], t = []; ce.forEach(s => n.indexOf(s) === -1 ? e.push(s) : t.push(s)), t.forEach(s => s()), ce = e } const gt = new Set; function wt(n, e) { n && n.i && (gt.delete(n), n.i(e)) } function bt(n, e, t, s) { const { fragment: i, after_update: l } = n.$$; i && i.m(e, t), s || Se(() => { const r = n.$$.on_mount.map(it).filter(lt); n.$$.on_destroy ? n.$$.on_destroy.push(...r) : X(r), n.$$.on_mount = [] }), l.forEach(Se) } function kt(n, e) { const t = n.$$; t.fragment !== null && (_t(t.after_update), X(t.on_destroy), t.fragment && t.fragment.d(e), t.on_destroy = t.fragment = null, t.ctx = []) } function At(n, e) { n.$$.dirty[0] === -1 && (oe.push(n), pt(), n.$$.dirty.fill(0)), n.$$.dirty[e / 31 | 0] |= 1 << e % 31 } function te(n, e, t, s, i, l, r, o = [-1]) { const a = Ie; fe(n); const c = n.$$ = { fragment: null, ctx: [], props: l, update: T, not_equal: i, bound: Re(), on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(e.context || (a ? a.$$.context : [])), callbacks: Re(), dirty: o, skip_bound: !1, root: e.target || a.$$.root }; r && r(c.root); let d = !1; if (c.ctx = t ? t(n, e.props || {}, (u, b, ...g) => { const w = g.length ? g[0] : b; return c.ctx && i(c.ctx[u], c.ctx[u] = w) && (!c.skip_bound && c.bound[u] && c.bound[u](w), d && At(n, u)), b }) : [], c.update(), d = !0, X(c.before_update), c.fragment = s ? s(c.ctx) : !1, e.target) { if (e.hydrate) { const u = dt(e.target); c.fragment && c.fragment.l(u), u.forEach(A) } else c.fragment && c.fragment.c(); e.intro && wt(n.$$.fragment), bt(n, e.target, e.anchor, e.customElement), ot() } fe(a) } class ne { $destroy() { kt(this, 1), this.$destroy = T } $on(e, t) { if (!lt(t)) return T; const s = this.$$.callbacks[e] || (this.$$.callbacks[e] = []); return s.push(t), () => { const i = s.indexOf(t); i !== -1 && s.splice(i, 1) } } $set(e) { this.$$set && !qt(e) && (this.$$.skip_bound = !0, this.$$set(e), this.$$.skip_bound = !1) } } function vt(n) { let e; return { c() { e = B("AUTO EXPLORE") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function yt(n) { let e; return { c() { e = B("❌ STOP EXPLORING") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function St(n) { let e; return { c() { e = B("❌ STOPPING") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function Ct(n) {
	let e, t, s, i, l, r, o, a, c, d, u, b, g, w, R, N, S, I, D, y, f, q, h, k; function E(M, W) { return M[1] ? St : M[2] ? yt : vt } let C = E(n), P = C(n); return {
		c() {
			e = _("div"), t = _("div"), s = _("div"), i = _("ul"), l = _("li"), r = _("div"), o = _("div"), o.textContent = "🤖", a = L(), c = _("div"), P.c(), u = L(), b = _("li"), g = _("div"), w = _("div"), R = L(), N = _("div"), S = _("div"), I = _("input"), D = L(), y = _("abbr"), y.textContent = "Keep running", f = B(`\r
								-\r
								`), q = _("small"), q.textContent = `after stamina runs out, bot auto tries every 10 minutes until stopped or page\r
									changed. Note: increasing stamina manually during this (such as eating an apple)\r
									won't currently be detected - either toggle bot off/on or wait out the remaining\r
									minutes.`, p(o, "class", "item-media"), p(c, "class", "item-inner"), p(r, "class", d = "item-content " + (n[1] ? "disabled" : "") + " svelte-10db8mr"), p(w, "class", "item-media"), p(I, "type", "checkbox"), I.checked = n[0], p(y, "title", "A biiit on the cheat-y side; but you do have to remain on the page, so semi fair"), p(N, "class", "item-inner"), p(g, "class", "item-content svelte-10db8mr"), p(s, "class", "list-block disable-select"), p(t, "class", "card-content"), p(e, "class", "card bot-card svelte-10db8mr")
		}, m(M, W) { v(M, e, W), m(e, t), m(t, s), m(s, i), m(i, l), m(l, r), m(r, o), m(r, a), m(r, c), P.m(c, null), m(i, u), m(i, b), m(b, g), m(g, w), m(g, R), m(g, N), m(N, S), m(S, I), m(S, D), m(S, y), m(S, f), m(S, q), h || (k = [U(r, "click", n[3]), U(I, "change", n[4])], h = !0) }, p(M, [W]) { C !== (C = E(M)) && (P.d(1), P = C(M), P && (P.c(), P.m(c, null))), W & 2 && d !== (d = "item-content " + (M[1] ? "disabled" : "") + " svelte-10db8mr") && p(r, "class", d), W & 1 && (I.checked = M[0]) }, i: T, o: T, d(M) { M && A(e), P.d(), h = !1, X(k) }
	}
} function Et(n, e, t) { let s, i, l; const r = z.bot; function o() { r.isActive ? r.stop() : r.start(), t(2, s = r.isActive), t(1, i = r.isStopRequested) } r.addEventListener(ue.FINISHED, () => { t(2, s = r.isActive), t(1, i = r.isStopRequested) }); function a() { t(0, l = !l), t(5, z.bot.isWaitForMoreStamina = l, z), l ? localStorage.setItem(z.LSKEY_WAIT_FOR_STAMINA_REGEN, "true") : localStorage.removeItem(z.LSKEY_WAIT_FOR_STAMINA_REGEN) } return n.$$.update = () => { n.$$.dirty & 32 && t(0, l = z.bot.isWaitForMoreStamina) }, t(2, s = r.isActive), t(1, i = r.isStopRequested), [l, i, s, o, a, z] } class It extends ne { constructor(e) { super(), te(this, e, Et, Ct, ee, {}) } } var z; (n => { n.LSKEY_WAIT_FOR_STAMINA_REGEN = "fewfh-explore-wait-stam-regen", n.bot = new ue; function e({ container: s }) { const i = $("<div />").insertAfter($(s).find("#exploreconsole")); if (i.length) return new It({ target: i[0] }) } function t() { n.bot.isWaitForMoreStamina = localStorage.getItem(n.LSKEY_WAIT_FOR_STAMINA_REGEN) === "true", Q.onPageInit("area", e), Q.onPageExit("area", () => { n.bot.stop() }) } n.setup = t })(z || (z = {})); function De(n, e, t) { const s = n.slice(); return s[11] = e[t].id, s[12] = e[t].name, s[13] = e[t].level, s[14] = e[t].img, s } function Pe(n, e, t) { const s = n.slice(); return s[11] = e[t].id, s[12] = e[t].name, s[14] = e[t].img, s } function Ue(n) { let e, t, s, i, l, r = n[12] + "", o, a, c; function d() { return n[9](n[11]) } return { c() { e = B("- Last: "), t = _("button"), s = _("img"), o = B(r), H(s.src, i = n[14]) || p(s, "src", i), p(s, "alt", l = n[12]), p(s, "height", "16"), p(s, "class", "svelte-rr924h"), p(t, "class", "last-bought-button svelte-rr924h"), t.disabled = n[2] }, m(u, b) { v(u, e, b), v(u, t, b), m(t, s), m(t, o), a || (c = U(t, "click", d), a = !0) }, p(u, b) { n = u, b & 17 && !H(s.src, i = n[14]) && p(s, "src", i), b & 17 && l !== (l = n[12]) && p(s, "alt", l), b & 17 && r !== (r = n[12] + "") && x(o, r), b & 4 && (t.disabled = n[2]) }, d(u) { u && A(e), u && A(t), a = !1, c() } } } function Te(n) { let e, t, s; return { c() { e = _("br"), t = L(), s = _("span"), s.textContent = "also harvests all finished plots to make room", j(s, "font-size", "11px"), j(s, "margin-left", "16px") }, m(i, l) { v(i, e, l), v(i, t, l), v(i, s, l) }, d(i) { i && A(e), i && A(t), i && A(s) } } } function Ge(n) { let e, t; return { c() { e = _("div"), t = B(n[3]), j(e, "color", "red") }, m(s, i) { v(s, e, i), m(e, t) }, p(s, i) { i & 8 && x(t, s[3]) }, d(s) { s && A(e) } } } function Fe(n) { let e, t, s, i, l = n[0], r = []; for (let o = 0; o < l.length; o += 1)r[o] = We(De(n, l, o)); return { c() { e = _("ul"), t = _("li"), s = _("div"), i = _("div"); for (let o = 0; o < r.length; o += 1)r[o].c(); p(i, "class", "item-inner seed-list svelte-rr924h"), p(s, "class", "item-content svelte-rr924h") }, m(o, a) { v(o, e, a), m(e, t), m(t, s), m(s, i); for (let c = 0; c < r.length; c += 1)r[c] && r[c].m(i, null) }, p(o, a) { if (a & 101) { l = o[0]; let c; for (c = 0; c < l.length; c += 1) { const d = De(o, l, c); r[c] ? r[c].p(d, a) : (r[c] = We(d), r[c].c(), r[c].m(i, null)) } for (; c < r.length; c += 1)r[c].d(1); r.length = l.length } }, d(o) { o && A(e), se(r, o) } } } function Ye(n) { let e, t, s = n[13] + "", i; return { c() { e = _("div"), t = B("Lv "), i = B(s), p(e, "class", "seed-level svelte-rr924h") }, m(l, r) { v(l, e, r), m(e, t), m(e, i) }, p(l, r) { r & 1 && s !== (s = l[13] + "") && x(i, s) }, d(l) { l && A(e) } } } function We(n) { let e, t, s, i, l, r, o, a, c, d, u = n[5] !== 0 && n[5] < n[13] && Ye(n); function b() { return n[10](n[11]) } return { c() { e = _("button"), t = _("img"), l = L(), u && u.c(), r = L(), H(t.src, s = n[14]) || p(t, "src", s), p(t, "alt", i = n[12]), p(t, "height", "32"), p(t, "class", "svelte-rr924h"), e.disabled = o = n[2] || n[5] !== 0 && n[5] < n[13], p(e, "title", a = n[12]), p(e, "class", "svelte-rr924h") }, m(g, w) { v(g, e, w), m(e, t), m(e, l), u && u.m(e, null), m(e, r), c || (d = U(e, "click", b), c = !0) }, p(g, w) { n = g, w & 1 && !H(t.src, s = n[14]) && p(t, "src", s), w & 1 && i !== (i = n[12]) && p(t, "alt", i), n[5] !== 0 && n[5] < n[13] ? u ? u.p(n, w) : (u = Ye(n), u.c(), u.m(e, r)) : u && (u.d(1), u = null), w & 5 && o !== (o = n[2] || n[5] !== 0 && n[5] < n[13]) && (e.disabled = o), w & 1 && a !== (a = n[12]) && p(e, "title", a) }, d(g) { g && A(e), u && u.d(), c = !1, d() } } } function Mt(n) {
	let e, t, s, i, l, r, o, a, c, d, u, b, g, w, R, N, S = n[0].filter(n[8]), I = []; for (let q = 0; q < S.length; q += 1)I[q] = Ue(Pe(n, S, q)); let D = !n[1] && Te(), y = n[3] && Ge(n), f = !n[1] && Fe(n); return {
		c() {
			e = _("div"), t = _("div"), s = _("div"), i = _("div"), l = _("div"), r = _("span"), o = _("img"), d = B(`\r
						Quick buy and plant seeds`), u = L(); for (let q = 0; q < I.length; q += 1)I[q].c(); b = L(), D && D.c(), g = L(), y && y.c(), w = L(), f && f.c(), p(o, "class", a = Le(n[1] ? "collapsed" : void 0) + " svelte-rr924h"), H(o.src, c = de.IMAGE_CEVRON_RIGHT) || p(o, "src", c), p(o, "height", "20"), p(o, "alt", "collapse toggle"), p(r, "class", "collapse-toggle-row svelte-rr924h"), p(l, "class", "item-title"), p(i, "class", "item-content svelte-rr924h"), p(s, "class", "list-block"), p(t, "class", "card-content"), p(e, "class", "few-seedlist-container card svelte-rr924h")
		}, m(q, h) { v(q, e, h), m(e, t), m(t, s), m(s, i), m(i, l), m(l, r), m(r, o), m(r, d), m(l, u); for (let k = 0; k < I.length; k += 1)I[k] && I[k].m(l, null); m(l, b), D && D.m(l, null), m(i, g), y && y.m(i, null), m(s, w), f && f.m(s, null), R || (N = U(r, "click", n[7]), R = !0) }, p(q, [h]) { if (h & 2 && a !== (a = Le(q[1] ? "collapsed" : void 0) + " svelte-rr924h") && p(o, "class", a), h & 85) { S = q[0].filter(q[8]); let k; for (k = 0; k < S.length; k += 1) { const E = Pe(q, S, k); I[k] ? I[k].p(E, h) : (I[k] = Ue(E), I[k].c(), I[k].m(l, b)) } for (; k < I.length; k += 1)I[k].d(1); I.length = S.length } q[1] ? D && (D.d(1), D = null) : D || (D = Te(), D.c(), D.m(l, null)), q[3] ? y ? y.p(q, h) : (y = Ge(q), y.c(), y.m(i, null)) : y && (y.d(1), y = null), q[1] ? f && (f.d(1), f = null) : f ? f.p(q, h) : (f = Fe(q), f.c(), f.m(s, null)) }, i: T, o: T, d(q) { q && A(e), se(I, q), D && D.d(), y && y.d(), f && f.d(), R = !1, N() }
	}
} const ke = "few-farm-lastbought", Ae = "few-farm-seeds-collapsed"; function Ot(n, e, t) { let s, i, l, r; const o = st().farming; let { seeds: a } = e; async function c(w) { t(2, s = !0), t(3, i = null); const R = J.getNumberOfHarvestablePlots(), N = J.getNumberOfEmptyPlots(), S = R + N; if (S <= 0) { t(3, i = "ERROR: No empty plots found"), t(2, s = !1); return } const D = J.getOwnedSeedCountMap()[w] ?? 0, y = D > S ? 0 : S - D; if (R > 0) try { await fetch(`worker.php?go=harvestall&id=${J.getFarmID()}`, { method: "POST" }) } catch (f) { console.error(f), t(3, i = "ERROR"), t(2, s = !1); return } try { const f = await (y > 0 ? we(w, y) : J.setCurrentSeed(w).then(() => "success")); f === "success" ? (await fetch(`worker.php?go=plantall&id=${J.getFarmID()}`, { method: "POST" }), t(4, l = w), localStorage.setItem(ke, w.toString()), Q.refreshPage()) : t(3, i = `ERROR: ${f || "blank response; unknown error"}`) } catch (f) { console.error(f), t(3, i = "ERROR") } t(2, s = !1) } function d() { t(1, r = !r), r ? localStorage.setItem(Ae, "true") : localStorage.removeItem(Ae) } const u = w => w.id === l, b = w => c(w), g = w => c(w); return n.$$set = w => { "seeds" in w && t(0, a = w.seeds) }, t(2, s = !1), t(3, i = null), t(4, l = localStorage.getItem(ke) != null && parseInt(localStorage.getItem(ke))), t(1, r = localStorage.getItem(Ae) === "true"), [a, r, s, i, l, o, c, d, u, b, g] } class Rt extends ne { constructor(e) { super(), te(this, e, Ot, Mt, ee, { seeds: 0 }) } } var J; (n => { const e = [{ name: "Pepper", id: 12, level: 0, img: "/img/items/seeds_peppers.png" }, { name: "Carrot", id: 20, level: 2, img: "/img/items/seeds_carrots.png" }, { name: "Pea", id: 28, level: 4, img: "/img/items/seeds_peas.png" }, { name: "Cucumber", id: 30, level: 6, img: "/img/items/seeds_cucumber.png" }, { name: "Eggplant", id: 14, level: 8, img: "/img/items/seeds_eggplants.png" }, { name: "Radish", id: 32, level: 10, img: "/img/items/seeds_radish.png" }, { name: "Onion", id: 34, level: 12, img: "/img/items/seeds_onions.png" }, { name: "Hops", id: 47, level: 14, img: "/img/items/seeds_hops.png" }, { name: "Potato", id: 49, level: 16, img: "/img/items/seeds_potato.png" }, { name: "Tomato", id: 16, level: 18, img: "/img/items/seeds_tomato.png" }, { name: "Leek", id: 51, level: 20, img: "/img/items/seeds_leek.png" }, { name: "Watermelon", id: 60, level: 23, img: "/img/items/seeds_watermelon.png" }, { name: "Corn", id: 64, level: 26, img: "/img/items/seeds_corn.png" }, { name: "Cabbage", id: 66, level: 30, img: "/img/items/seeds_cabbage.png" }, { name: "Pine", id: 410, level: 40, img: "/img/items/seeds_pine.png" }, { name: "Pumpkin", id: 68, level: 40, img: "/img/items/seeds_pumpkin.png" }, { name: "Wheat", id: 70, level: 50, img: "/img/items/seeds_wheet.png" }, { name: "Mushroom", id: 395, level: 60, img: "/img/items/seeds_mushroom.png" }, { name: "Broccoli", id: 257, level: 60, img: "/img/items/seeds_broccoli.png" }, { name: "Cotton", id: 255, level: 70, img: "/img/items/seeds_cotton.png" }, { name: "Sunflower", id: 374, level: 80, img: "/img/items/seeds_sunflower.png" }, { name: "Beet", id: 449, level: 90, img: "/img/items/seeds_beet.png" }, { name: "Rice", id: 631, level: 91, img: "/img/items/seeds_rice.png" }]; function t() { return $("#croparea [data-farm]").data("farm") } n.getFarmID = t; function s() { return $("#crops").find(".cropitem,.plantseed").length } n.getNumberOfPlots = s; function i() { return $("#crops").find(".plantseed").length } n.getNumberOfEmptyPlots = i; function l() { return $("#crops").find(".harvest").length } n.getNumberOfHarvestablePlots = l; function r() { return Object.fromEntries($("select.seedid option").map(function () { return [[parseInt($(this).val().toString()), parseInt($(this).data("amt"))]] }).get().filter(([d]) => d !== 0 && d !== 238)) } n.getOwnedSeedCountMap = r; async function o(d) { return fetch(`worker.php?go=setfarmseedcounts&id=${d}&cachebuster=${Date.now()}`, { method: "GET" }).then(u => u.text()) } n.setCurrentSeed = o; function a({ container: d }) { const u = $("<div />").insertAfter($(d).find("#croparea")); if (u.length) return new Rt({ target: u[0], props: { seeds: e } }) } function c() { Q.onPageInit("xfarm", a) } n.setup = c })(J || (J = {})); const Oe = class extends EventTarget { constructor() { super(); F(this, "active", !1); F(this, "stopRequested", !1); F(this, "autoBuyWorms", !1) } get isActive() { return this.active } get isStopRequested() { return this.stopRequested } get isAutoBuyWorms() { return this.autoBuyWorms } async start() { if (!this.active) { this.active = !0; try { if (!$("#fishinwater").length) throw new Error("No fishing area detected"); for (; this.getBaitCount() > 0 && (await this.fishOne(), !this.stopRequested);)await V(.3, .4), this.autoBuyWorms && this.getBaitCount() < _e(50, 100) && we(18, _e(80, 100)); this.active = !1, this.stopRequested = !1, this.dispatchEvent(new Event(Oe.FINISHED)), de.SOUND_FINISHED.play() } catch (t) { alert(t.message) } } } stop() { this.stopRequested || !this.active || (this.stopRequested = !0) } async fishOne() { if (await this.clickFish() === "mealworm") return this.stopRequested ? void 0 : await V(.07, .185); try { await ve(".picker-catch.modal-in", { visible: !0, timeout: .1 }) } catch { return this.stopRequested ? void 0 : await this.fishOne() } if (await V(.33), this.stopRequested) { this.catchFish(); return } await V(.23, .888), await this.catchFish(), await V(.05, .115) } async clickFish() { if (!$("#fishinwater").length) throw new Error("No fishing area detected"); const t = await ve(".fish.catch, .fish.fishcaught:not([src*='/splash'])", { visible: !0 }); return t.click(), t.classList.contains("fishcaught") ? "mealworm" : !0 } async catchFish() { if (!$(".picker-catch .fishcaught").length) throw new Error("Cannot find fishing to catch"); $(".picker-catch .fishcaught").trigger("click") } getBaitCount() { return parseInt($("#baitarea strong").first().text() || "0") } toggleAutoBuyWorms(t) { this.autoBuyWorms = t ?? !this.autoBuyWorms } }; let qe = Oe; F(qe, "FINISHED", "FINISHED"); function Lt(n) { let e; return { c() { e = B("🤖 AUTO FISH") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function Nt(n) { let e; return { c() { e = B("🤖❌ STOP FISHING") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function Bt(n) { let e; return { c() { e = B("🤖❌ STOPPING") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function Dt(n) { let e, t, s; function i(o, a) { return o[0] ? Bt : o[1] ? Nt : Lt } let l = i(n), r = l(n); return { c() { e = _("button"), r.c(), e.disabled = n[0] }, m(o, a) { v(o, e, a), r.m(e, null), t || (s = U(e, "click", n[2]), t = !0) }, p(o, [a]) { l !== (l = i(o)) && (r.d(1), r = l(o), r && (r.c(), r.m(e, null))), a & 1 && (e.disabled = o[0]) }, i: T, o: T, d(o) { o && A(e), r.d(), t = !1, s() } } } function Pt(n, e, t) { let s, i; const l = Z.bot; function r() { l.isActive ? l.stop() : l.start(), t(1, s = l.isActive), t(0, i = l.isStopRequested) } return l.addEventListener(qe.FINISHED, () => { t(1, s = l.isActive), t(0, i = l.isStopRequested) }), t(1, s = l.isActive), t(0, i = l.isStopRequested), [i, s, r] } class Ut extends ne { constructor(e) { super(), te(this, e, Pt, Dt, ee, {}) } } function je(n, e, t) { const s = n.slice(); return s[11] = e[t].name, s[12] = e[t].num, s[13] = e[t].imgSrc, s } function Tt(n) { let e, t = n[0], s = []; for (let i = 0; i < t.length; i += 1)s[i] = Qe(je(n, t, i)); return { c() { for (let i = 0; i < s.length; i += 1)s[i].c(); e = rt() }, m(i, l) { for (let r = 0; r < s.length; r += 1)s[r] && s[r].m(i, l); v(i, e, l) }, p(i, l) { if (l & 513) { t = i[0]; let r; for (r = 0; r < t.length; r += 1) { const o = je(i, t, r); s[r] ? s[r].p(o, l) : (s[r] = Qe(o), s[r].c(), s[r].m(e.parentNode, e)) } for (; r < s.length; r += 1)s[r].d(1); s.length = t.length } }, d(i) { se(s, i), i && A(e) } } } function Gt(n) { let e; return { c() { e = B("No other baits available") }, m(t, s) { v(t, e, s) }, p: T, d(t) { t && A(e) } } } function Ft(n) { let e; return { c() { e = B(n[1]) }, m(t, s) { v(t, e, s) }, p(t, s) { s & 2 && x(e, t[1]) }, d(t) { t && A(e) } } } function Yt(n) { let e; return { c() { e = B("Loading...") }, m(t, s) { v(t, e, s) }, p: T, d(t) { t && A(e) } } } function Qe(n) { let e, t, s, i, l, r = n[12] + "", o, a, c, d, u; function b() { return n[10](n[11]) } return { c() { e = _("span"), t = _("img"), l = L(), o = B(r), a = L(), H(t.src, s = n[13]) || p(t, "src", s), p(t, "height", "14"), p(t, "alt", i = n[11]), p(e, "class", "quick-swap-bttn svelte-ziplh9"), p(e, "title", c = n[11]) }, m(g, w) { v(g, e, w), m(e, t), m(e, l), m(e, o), m(e, a), d || (u = U(e, "click", b), d = !0) }, p(g, w) { n = g, w & 1 && !H(t.src, s = n[13]) && p(t, "src", s), w & 1 && i !== (i = n[11]) && p(t, "alt", i), w & 1 && r !== (r = n[12] + "") && x(o, r), w & 1 && c !== (c = n[11]) && p(e, "title", c) }, d(g) { g && A(e), d = !1, u() } } } function Ke(n) { let e, t, s, i, l, r, o; function a(u, b) { return u[5] ? jt : Wt } let c = a(n), d = c(n); return { c() { e = _("button"), d.c(), t = L(), s = _("input"), i = L(), l = _("abbr"), l.textContent = "Auto buy worms", e.disabled = n[6], p(s, "type", "checkbox"), p(s, "id", "infiniteWorms"), s.checked = n[4], p(l, "title", "Kinda EXTRA cheat-y; up to you. Will randomly buy somewhere between 50-100 left.") }, m(u, b) { v(u, e, b), d.m(e, null), v(u, t, b), v(u, s, b), v(u, i, b), v(u, l, b), r || (o = [U(e, "click", n[7]), U(s, "change", n[8])], r = !0) }, p(u, b) { c === (c = a(u)) && d ? d.p(u, b) : (d.d(1), d = c(u), d && (d.c(), d.m(e, null))), b & 64 && (e.disabled = u[6]), b & 16 && (s.checked = u[4]) }, d(u) { u && A(e), d.d(), u && A(t), u && A(s), u && A(i), u && A(l), r = !1, X(o) } } } function Wt(n) { let e; return { c() { e = B("BUY 200 WORMS") }, m(t, s) { v(t, e, s) }, p: T, d(t) { t && A(e) } } } function jt(n) { let e; return { c() { e = B(n[5]) }, m(t, s) { v(t, e, s) }, p(t, s) { s & 32 && x(e, t[5]) }, d(t) { t && A(e) } } } function Qt(n) {
	let e, t, s, i, l, r; function o(u, b) { return u[2] ? Yt : u[1] ? Ft : u[0].length <= 0 ? Gt : Tt } let a = o(n), c = a(n), d = n[3] === "Worms" && Ke(n); return {
		c() {
			e = _("div"), t = _("div"), s = _("div"), i = _("div"), l = B(`Quick Swap:\r
				`), c.c(), r = L(), d && d.c(), p(i, "class", "quick-swap-area svelte-ziplh9"), j(s, "display", "flex"), p(t, "class", "row"), j(t, "margin-bottom", "0"), p(e, "class", "card-content-inner"), j(e, "padding", "5px")
		}, m(u, b) { v(u, e, b), m(e, t), m(t, s), m(s, i), m(i, l), c.m(i, null), m(s, r), d && d.m(s, null) }, p(u, [b]) { a === (a = o(u)) && c ? c.p(u, b) : (c.d(1), c = a(u), c && (c.c(), c.m(i, null))), u[3] === "Worms" ? d ? d.p(u, b) : (d = Ke(u), d.c(), d.m(s, null)) : d && (d.d(1), d = null) }, i: T, o: T, d(u) { u && A(e), c.d(), d && d.d() }
	}
} function Kt(n, e, t) { let s, i, l, r, o, a; async function c() { try { t(6, s = !0); const w = await we(18, 200); t(6, s = !1), w == "success" || w === "" ? Q.refreshPage() : t(5, i = w) } catch (w) { t(5, i = "ERROR"), console.error(w) } } function d() { t(4, l = !l), Z.bot.toggleAutoBuyWorms(l), l ? localStorage.setItem(Z.LSKEY_AUTO_WORMS, "true") : localStorage.removeItem(Z.LSKEY_AUTO_WORMS) } let u; ve("#last_bait").then(async () => { t(3, o = Z.getLastBait()); try { t(2, r = !1), t(0, u = await Z.getCachedBaitData(Z.getLastBait())), t(0, u = u.filter(w => !w.selected)) } catch (w) { console.error(w) } }); async function b(w) { try { const R = await fetch(`worker.php?go=selectbait&bait=${w}`, { method: "POST" }).then(N => N.text()); R === "success" ? Q.refreshPage() : t(1, a = `ERROR: ${R}`) } catch (R) { t(1, a = "ERROR"), console.error(R) } } const g = w => b(w); return t(6, s = !1), t(5, i = null), t(4, l = Z.bot.isAutoBuyWorms), t(2, r = !0), t(0, u = []), t(3, o = Z.getLastBait()), t(1, a = null), [u, a, r, o, l, i, s, c, d, b, g] } class Zt extends ne { constructor(e) { super(), te(this, e, Kt, Qt, ee, {}) } } var Z; (n => { n.LSKEY_AUTO_WORMS = "fewfh-fishing-autoworms", n.bot = new qe; async function e() { return new Promise(c => { $("<div/>").load("changebait.php?from=fishing&id=" + $(".zone_id").html(), function () { c($(this).find(".selectbait").map(function () { return { name: $(this).data("bait"), num: $(this).find(".item-after").text(), imgSrc: $(this).find("img").attr("src"), selected: $(this).find(".item-title i").text() === "check" } }).get()) }) }) } let t; async function s(c) { var u; const d = t && c && t.active === c ? t.list : await e(); return t = { list: d.slice(), active: (u = d.find(b => b.selected)) == null ? void 0 : u.name }, d } n.getCachedBaitData = s; function i() { return $("#last_bait").html() } n.getLastBait = i; function l(c) { const d = $(c).find(".buttons-row").append("<div />"); if (d.length) return new Ut({ target: d[0] }) } function r(c) { const d = $("<div />").insertAfter($(c).find("#baitarea")); if (d.length) return new Zt({ target: d[0] }) } function o({ container: c }) { l(c), r(c) } function a() { n.bot.toggleAutoBuyWorms(localStorage.getItem(n.LSKEY_AUTO_WORMS) === "true"), Q.onPageInit("fishing", o), Q.onPageExit("fishing", () => { n.bot.stop() }) } n.setup = a })(Z || (Z = {})); function zt(n) { let e; return { c() { e = _("span"), e.textContent = "🤖 Claiming - Done!", j(e, "margin-left", "10px") }, m(t, s) { v(t, e, s) }, p: T, d(t) { t && A(e) } } } function Jt(n) { let e, t, s, i, l = n[2].length + "", r; return { c() { e = _("span"), t = B("🤖 Claiming - Progress: "), s = B(n[0]), i = B("/"), r = B(l), j(e, "margin-left", "10px") }, m(o, a) { v(o, e, a), m(e, t), m(e, s), m(e, i), m(e, r) }, p(o, a) { a & 1 && x(s, o[0]) }, d(o) { o && A(e) } } } function Vt(n) { let e, t, s; return { c() { e = _("button"), e.textContent = "🤖 QUICK CLAIM ALL", j(e, "margin-left", "10px") }, m(i, l) { v(i, e, l), t || (s = U(e, "click", n[3]), t = !0) }, p: T, d(i) { i && A(e), t = !1, s() } } } function Ht(n) { let e; function t(l, r) { if (l[1] === "button") return Vt; if (l[1] === "claiming") return Jt; if (l[1] === "done") return zt } let s = t(n), i = s && s(n); return { c() { i && i.c(), e = rt() }, m(l, r) { i && i.m(l, r), v(l, e, r) }, p(l, [r]) { s === (s = t(l)) && i ? i.p(l, r) : (i && i.d(1), i = s && s(l), i && (i.c(), i.m(e.parentNode, e))) }, i: T, o: T, d(l) { i && i.d(l), l && A(e) } } } function Xt(n, e, t) { let s, i; const l = me.getClaimIds(); async function r() { t(1, s = "claiming"), await o(l.slice()), t(1, s = "done"), await V(.3), Q.refreshPage() } async function o(a) { const c = a.pop(); await me.claimMastery(c), t(0, i++, i), a.length > 0 && (await V(.5), await o(a)) } return t(1, s = "button"), t(0, i = 0), [i, s, l, r] } class xt extends ne { constructor(e) { super(), te(this, e, Xt, Ht, ee, {}) } } var me; (n => { function e() { return $(".claimbtn").map(function () { return $(this).data("id") }).get() } n.getClaimIds = e; function t(l) { return fetch(`worker.php?go=claimmastery&id=${l}`, { method: "POST" }).then(r => r.text()) } n.claimMastery = t; function s({ container: l }) { if (!$(l).find(".claimbtn").length) return; const r = $("<span />").appendTo($(".claimbtn:first-of-type").closest(".list-block").prev()); if (r.length) return new xt({ target: r[0] }) } function i() { Q.onPageInit("mastery", s) } n.setup = i })(me || (me = {})); function Ze(n, e, t) { const s = n.slice(); return s[29] = e[t].section, s[30] = e[t].links, s } function ze(n, e, t) { const s = n.slice(); return s[33] = e[t].link, s[34] = e[t].text, s[40] = e[t].icon, s[35] = e[t].params, s[32] = t, s } function Je(n, e, t) { const s = n.slice(); return s[29] = e[t].section, s[30] = e[t].links, s[32] = t, s } function Ve(n, e, t) { const s = n.slice(); return s[33] = e[t].link, s[34] = e[t].text, s[35] = e[t].params, s[37] = t, s } function $t(n) { let e, t, s; return { c() { e = _("a"), e.textContent = "edit", p(e, "class", "start-edit-button svelte-1oplpo8") }, m(i, l) { v(i, e, l), t || (s = U(e, "click", n[3]), t = !0) }, p: T, d(i) { i && A(e), t = !1, s() } } } function en(n) { let e, t, s, i, l, r, o; return { c() { e = _("a"), e.textContent = "reset", t = L(), s = _("a"), s.textContent = "cancel", i = L(), l = _("a"), l.textContent = "save", j(e, "color", "red"), p(e, "class", "svelte-1oplpo8"), p(s, "class", "svelte-1oplpo8"), p(l, "class", "svelte-1oplpo8") }, m(a, c) { v(a, e, c), v(a, t, c), v(a, s, c), v(a, i, c), v(a, l, c), r || (o = [U(e, "click", n[6]), U(s, "click", n[5]), U(l, "click", n[4])], r = !0) }, p: T, d(a) { a && A(e), a && A(t), a && A(s), a && A(i), a && A(l), r = !1, X(o) } } } function tn(n) { let e, t = n[0], s = []; for (let i = 0; i < t.length; i += 1)s[i] = $e(Ze(n, t, i)); return { c() { e = _("div"); for (let i = 0; i < s.length; i += 1)s[i].c(); j(e, "font-size", "14px") }, m(i, l) { v(i, e, l); for (let r = 0; r < s.length; r += 1)s[r] && s[r].m(e, null) }, p(i, l) { if (l[0] & 1) { t = i[0]; let r; for (r = 0; r < t.length; r += 1) { const o = Ze(i, t, r); s[r] ? s[r].p(o, l) : (s[r] = $e(o), s[r].c(), s[r].m(e, null)) } for (; r < s.length; r += 1)s[r].d(1); s.length = t.length } }, d(i) { i && A(e), se(s, i) } } } function nn(n) { let e, t, s, i, l, r, o, a, c = n[1], d = []; for (let u = 0; u < c.length; u += 1)d[u] = nt(Je(n, c, u)); return { c() { e = _("div"); for (let u = 0; u < d.length; u += 1)d[u].c(); t = L(), s = _("div"), i = _("hr"), l = L(), r = _("button"), r.textContent = "Add new section", p(e, "class", "edit-section svelte-1oplpo8"), j(e, "font-size", "14px") }, m(u, b) { v(u, e, b); for (let g = 0; g < d.length; g += 1)d[g] && d[g].m(e, null); m(e, t), m(e, s), m(s, i), m(s, l), m(s, r), o || (a = U(r, "click", n[27]), o = !0) }, p(u, b) { if (b[0] & 31618) { c = u[1]; let g; for (g = 0; g < c.length; g += 1) { const w = Je(u, c, g); d[g] ? d[g].p(w, b) : (d[g] = nt(w), d[g].c(), d[g].m(e, t)) } for (; g < d.length; g += 1)d[g].d(1); d.length = c.length } }, d(u) { u && A(e), se(d, u), o = !1, a() } } } function He(n) { let e, t, s = n[29] + "", i; return { c() { e = _("div"), t = _("strong"), i = B(s), j(e, "margin-top", "3px") }, m(l, r) { v(l, e, r), m(e, t), m(t, i) }, p(l, r) { r[0] & 1 && s !== (s = l[29] + "") && x(i, s) }, d(l) { l && A(e) } } } function sn(n) { let e; return { c() { e = B(" •") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function Xe(n) { let e, t, s, i; return { c() { e = _("img"), i = L(), H(e.src, t = n[40]) || p(e, "src", t), p(e, "alt", s = n[34]), p(e, "height", "12") }, m(l, r) { v(l, e, r), v(l, i, r) }, p(l, r) { r[0] & 1 && !H(e.src, t = l[40]) && p(e, "src", t), r[0] & 1 && s !== (s = l[34]) && p(e, "alt", s) }, d(l) { l && A(e), l && A(i) } } } function xe(n) { let e, t, s = (n[34] ?? "") + "", i, l, r = n[32] != 0 && sn(), o = n[40] && Xe(n); return { c() { r && r.c(), e = L(), t = _("a"), o && o.c(), i = B(s), p(t, "href", l = n[33] + ".php" + (n[35] ? "?" + n[35] : "")), p(t, "class", "close-panel"), p(t, "data-view", ".view-main") }, m(a, c) { r && r.m(a, c), v(a, e, c), v(a, t, c), o && o.m(t, null), m(t, i) }, p(a, c) { a[40] ? o ? o.p(a, c) : (o = Xe(a), o.c(), o.m(t, i)) : o && (o.d(1), o = null), c[0] & 1 && s !== (s = (a[34] ?? "") + "") && x(i, s), c[0] & 1 && l !== (l = a[33] + ".php" + (a[35] ? "?" + a[35] : "")) && p(t, "href", l) }, d(a) { r && r.d(a), a && A(e), a && A(t), o && o.d() } } } function $e(n) { let e, t, s, i = n[29] && He(n), l = n[30], r = []; for (let o = 0; o < l.length; o += 1)r[o] = xe(ze(n, l, o)); return { c() { e = _("div"), i && i.c(), t = L(); for (let o = 0; o < r.length; o += 1)r[o].c(); s = L() }, m(o, a) { v(o, e, a), i && i.m(e, null), m(e, t); for (let c = 0; c < r.length; c += 1)r[c] && r[c].m(e, null); m(e, s) }, p(o, a) { if (o[29] ? i ? i.p(o, a) : (i = He(o), i.c(), i.m(e, t)) : i && (i.d(1), i = null), a[0] & 1) { l = o[30]; let c; for (c = 0; c < l.length; c += 1) { const d = ze(o, l, c); r[c] ? r[c].p(d, a) : (r[c] = xe(d), r[c].c(), r[c].m(e, s)) } for (; c < r.length; c += 1)r[c].d(1); r.length = l.length } }, d(o) { o && A(e), i && i.d(), se(r, o) } } } function ln(n) { let e, t, s; function i() { return n[17](n[32]) } return { c() { e = _("a"), e.textContent = "↑", p(e, "class", "svelte-1oplpo8") }, m(l, r) { v(l, e, r), t || (s = U(e, "click", i), t = !0) }, p(l, r) { n = l }, d(l) { l && A(e), t = !1, s() } } } function et(n) { let e, t, s; function i() { return n[18](n[32]) } return { c() { e = _("a"), e.textContent = "↓", p(e, "class", "svelte-1oplpo8") }, m(l, r) { v(l, e, r), t || (s = U(e, "click", i), t = !0) }, p(l, r) { n = l }, d(l) { l && A(e), t = !1, s() } } } function tt(n) { let e, t, s, i, l, r, o, a, c, d, u, b, g, w, R, N, S, I, D; function y(...C) { return n[20](n[32], n[37], ...C) } function f(...C) { return n[21](n[32], n[37], ...C) } function q(...C) { return n[22](n[32], n[37], ...C) } function h() { return n[23](n[32], n[37]) } function k() { return n[24](n[32], n[37]) } function E() { return n[25](n[32], n[37]) } return { c() { e = _("li"), t = _("input"), i = L(), l = _("input"), o = L(), a = _("input"), d = L(), u = _("a"), u.textContent = "↑", b = L(), g = _("a"), w = B("↓"), N = L(), S = _("a"), S.textContent = "⨯", t.value = s = n[34] ?? "", p(t, "placeholder", "Label"), p(t, "class", "svelte-1oplpo8"), l.value = r = n[33] ?? "", p(l, "placeholder", "URL page"), p(l, "class", "svelte-1oplpo8"), a.value = c = n[35] ?? "", p(a, "placeholder", "Params"), p(a, "class", "svelte-1oplpo8"), p(u, "class", "icon-btn " + (n[37] == 0 ? "hide" : "") + " svelte-1oplpo8"), p(g, "class", R = "icon-btn " + (n[37] == n[30].length - 1 ? "hide" : "") + " svelte-1oplpo8"), p(S, "class", "icon-btn svelte-1oplpo8"), j(S, "color", "red"), p(e, "class", "svelte-1oplpo8") }, m(C, P) { v(C, e, P), m(e, t), m(e, i), m(e, l), m(e, o), m(e, a), m(e, d), m(e, u), m(e, b), m(e, g), m(g, w), m(e, N), m(e, S), I || (D = [U(t, "change", y), U(l, "change", f), U(a, "change", q), U(u, "click", h), U(g, "click", k), U(S, "click", E)], I = !0) }, p(C, P) { n = C, P[0] & 2 && s !== (s = n[34] ?? "") && t.value !== s && (t.value = s), P[0] & 2 && r !== (r = n[33] ?? "") && l.value !== r && (l.value = r), P[0] & 2 && c !== (c = n[35] ?? "") && a.value !== c && (a.value = c), P[0] & 2 && R !== (R = "icon-btn " + (n[37] == n[30].length - 1 ? "hide" : "") + " svelte-1oplpo8") && p(g, "class", R) }, d(C) { C && A(e), I = !1, X(D) } } } function nt(n) { let e, t, s, i, l, r, o, a, c, d, u, b, g, w, R, N, S, I, D, y; function f(...M) { return n[16](n[32], ...M) } let q = n[32] !== 0 && ln(n), h = n[32] !== n[1].length - 1 && et(n); function k() { return n[19](n[32]) } let E = n[30], C = []; for (let M = 0; M < E.length; M += 1)C[M] = tt(Ve(n, E, M)); function P() { return n[26](n[32]) } return { c() { e = _("div"), t = _("div"), s = _("input"), l = L(), r = _("span"), o = B("("), a = _("span"), q && q.c(), c = L(), h && h.c(), d = L(), u = _("a"), u.textContent = "DEL", b = L(), g = B(")"), w = L(), R = _("ul"); for (let M = 0; M < C.length; M += 1)C[M].c(); N = L(), S = _("li"), I = _("button"), I.textContent = "Add new link", s.value = i = n[29] ?? "", p(s, "placeholder", "Section Name (optional)"), p(s, "class", "svelte-1oplpo8"), p(u, "class", "svelte-1oplpo8"), p(a, "class", "hlist svelte-1oplpo8"), p(r, "class", "action-tray svelte-1oplpo8"), p(t, "class", "edit-section-title svelte-1oplpo8"), j(I, "grid-column", "span 2"), p(S, "class", "svelte-1oplpo8"), p(R, "class", "edit-link-list svelte-1oplpo8") }, m(M, W) { v(M, e, W), m(e, t), m(t, s), m(t, l), m(t, r), m(r, o), m(r, a), q && q.m(a, null), m(a, c), h && h.m(a, null), m(a, d), m(a, u), m(a, b), m(r, g), m(e, w), m(e, R); for (let Y = 0; Y < C.length; Y += 1)C[Y] && C[Y].m(R, null); m(R, N), m(R, S), m(S, I), D || (y = [U(s, "change", f), U(u, "click", k), U(I, "click", P)], D = !0) }, p(M, W) { if (n = M, W[0] & 2 && i !== (i = n[29] ?? "") && s.value !== i && (s.value = i), n[32] !== 0 && q.p(n, W), n[32] !== n[1].length - 1 ? h ? h.p(n, W) : (h = et(n), h.c(), h.m(a, d)) : h && (h.d(1), h = null), W[0] & 14338) { E = n[30]; let Y; for (Y = 0; Y < E.length; Y += 1) { const ie = Ve(n, E, Y); C[Y] ? C[Y].p(ie, W) : (C[Y] = tt(ie), C[Y].c(), C[Y].m(R, N)) } for (; Y < C.length; Y += 1)C[Y].d(1); C.length = E.length } }, d(M) { M && A(e), q && q.d(), h && h.d(), se(C, M), D = !1, X(y) } } } function rn(n) {
	let e, t, s, i, l, r, o, a, c, d; function u(S, I) { return S[2] === "edit" ? en : $t } let b = u(n), g = b(n); function w(S, I) { return S[2] === "edit" ? nn : tn } let R = w(n), N = R(n); return {
		c() {
			e = _("div"), t = _("div"), s = _("div"), i = _("div"), i.innerHTML = '<i class="fa fa-fw fa-lightbulb-o"></i>', l = L(), r = _("div"), o = _("div"), a = B(`  Shortcuts\r
					`), c = _("span"), g.c(), d = L(), N.c(), p(c, "class", "action-tray hlist svelte-1oplpo8"), p(o, "class", "item-title"), j(s, "display", "grid"), j(s, "grid-template-columns", "auto 1fr"), j(s, "width", "100%"), p(t, "class", "item-inner"), p(e, "class", "item-content")
		}, m(S, I) { v(S, e, I), m(e, t), m(t, s), m(s, i), m(s, l), m(s, r), m(r, o), m(o, a), m(o, c), g.m(c, null), m(r, d), N.m(r, null) }, p(S, I) { b === (b = u(S)) && g ? g.p(S, I) : (g.d(1), g = b(S), g && (g.c(), g.m(c, null))), R === (R = w(S)) && N ? N.p(S, I) : (N.d(1), N = R(S), N && (N.c(), N.m(r, null))) }, i: T, o: T, d(S) { S && A(e), g.d(), N.d() }
	}
} function on(n, e, t) { let s, i, l, { sections: r } = e; const o = O => JSON.parse(JSON.stringify(O)); function a() { t(1, l = o(i)), t(2, s = "edit") } function c() { t(0, i = o(l)), ae.saveUserShortcuts(l), t(2, s = "view") } function d() { t(1, l = o(i)), t(2, s = "view") } function u() { t(0, i = t(1, l = ae.getDefaultSections())), ae.saveUserShortcuts(i), t(2, s = "view") } function b(O, G) { t(1, l[O].section = G.target.value, l) } function g(O, G) { const K = l.splice(O, 1)[0]; l.splice(O + (G ? -1 : 1), 0, K), t(1, l = o(l)) } function w(O) { l.splice(O, 1), t(1, l = o(l)) } function R() { l.push({ section: "", links: [] }), t(1, l = o(l)) } function N(O, G, K, pe) { t(1, l[O].links[G][K] = pe.target.value, l) } function S(O, G, K) { const pe = l[O].links, ct = pe.splice(G, 1)[0]; pe.splice(G + (K ? -1 : 1), 0, ct), t(1, l = o(l)) } function I(O, G) { l[O].links.splice(G, 1), t(1, l = o(l)) } function D(O) { l[O].links.push({ text: "", link: "" }), t(1, l = o(l)) } const y = (O, G) => b(O, G), f = O => g(O, !0), q = O => g(O, !1), h = O => w(O), k = (O, G, K) => N(O, G, "text", K), E = (O, G, K) => N(O, G, "link", K), C = (O, G, K) => N(O, G, "params", K), P = (O, G) => S(O, G, !0), M = (O, G) => S(O, G, !1), W = (O, G) => I(O, G), Y = O => D(O), ie = () => R(); return n.$$set = O => { "sections" in O && t(15, r = O.sections) }, n.$$.update = () => { n.$$.dirty[0] & 32768 && t(0, i = o(r)), n.$$.dirty[0] & 1 && t(1, l = o(i)) }, t(2, s = "view"), [i, l, s, a, c, d, u, b, g, w, R, N, S, I, D, r, y, f, q, h, k, E, C, P, M, W, Y, ie] } class cn extends ne { constructor(e) { super(), te(this, e, on, rn, ee, { sections: 15 }, null, [-1, -1]) } } var ae; (n => { function e() { return $('.view-main a[href^="xfarm.php?id="]').attr("href").match(/\?id=(\d*)/)[1] } const t = "fewfh-shortcuts-custom"; function s() { return [{ links: [{ link: "xfarm", text: "Farm", params: `id=${e()}` }, { link: "town", text: "Town" }, { link: "fish", text: "Fish" }, { link: "explore", text: "Explore" }, { link: "quests", text: "Help" }, { link: "kitchen", text: "Kitchen" }, { link: "pen", text: "Raptors" }] }, { section: "Town", links: [{ link: "market", text: "Sell" }, { link: "pets", text: "Pets" }, { link: "bank", text: "Bank" }, { link: "steakmarket", text: "Steak" }] }, { section: "Daily", links: [{ link: "daily", text: "Chores" }, { link: "well", text: "Well" }, { link: "crack", text: "Vault" }, { link: "spin", text: "Wheel" }, { link: "comm", text: "Community Center" }] }] } n.getDefaultSections = s; function i(o) { localStorage.setItem(t, JSON.stringify(o)) } n.saveUserShortcuts = i; function l({ container: o }) { const a = $("<li />").insertAfter($(o).find(".list-block li:first-of-type")); if (!a.length) return; const c = localStorage.getItem(t), d = c ? JSON.parse(c) : s(); return new cn({ target: a[0], props: { sections: d } }) } function r() { l({ container: document.querySelector(".view.view-left.navbar-through .page") }) } n.setup = r })(ae || (ae = {})); function an(n) {
	let e, t; return {
		c() {
			e = B(`🤖 CHEAT\r
		`), t = _("abbr"), t.textContent = "ⓘ", p(t, "title", "Passwords fetched from the buddy.farm passwords list: https://buddy.farm/passwords/")
		}, m(s, i) { v(s, e, i), v(s, t, i) }, d(s) { s && A(e), s && A(t) }
	}
} function un(n) { let e; return { c() { e = B("ALL USED") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function fn(n) { let e; return { c() { e = B("Loading...") }, m(t, s) { v(t, e, s) }, d(t) { t && A(e) } } } function qn(n) { let e, t, s, i; function l(a, c) { return a[1] ? fn : a[0] ? un : an } let r = l(n), o = r(n); return { c() { e = _("button"), o.c(), e.disabled = t = n[0] || n[1], p(e, "class", "svelte-1bj479l") }, m(a, c) { v(a, e, c), o.m(e, null), s || (i = U(e, "click", n[2]), s = !0) }, p(a, [c]) { r !== (r = l(a)) && (o.d(1), o = r(a), o && (o.c(), o.m(e, null))), c & 3 && t !== (t = a[0] || a[1]) && (e.disabled = t) }, i: T, o: T, d(a) { a && A(e), o.d(), s = !1, i() } } } function dn(n, e, t) { let s, i; async function l() { t(1, s = !0); const { allPasswords: r, usedPasswords: o } = await ge.getPasswordData(); t(1, s = !1); const a = r.filter(c => !o.includes(c)); if (a.length <= 0) { t(0, i = !0); return } jQuery("#popw").val(a[0]) } return t(1, s = !1), t(0, i = !1), [i, s, l] } class mn extends ne { constructor(e) { super(), te(this, e, dn, qn, ee, {}) } } var ge; (n => { async function e() { return fetch("https://buddy.farm/page-data/passwords/page-data.json").then(a => a.json()).then(a => a.result.data.farmrpg.passwords.map(c => c.password)) } async function t() { return new Promise(a => { $("<div/>").load("popwlog.php", function () { a($(this).find(".list-block .item-title span:first-of-type").map((c, d) => $(d).text()).get()) }) }) } let s, i; async function l() { return s ?? (s = (await e()).map(a => a.toLowerCase())), i ?? (i = (await t()).map(a => a.toLowerCase())), { allPasswords: s, usedPasswords: i } } n.getPasswordData = l; function r({ container: a }) { const c = $(a).find("#popw").closest(".item-inner").append("<div />"); if ($(".popwbtn").on("click", function () { i == null || i.push($("#popw").val().toString()) }), !!c.length) return new mn({ target: c[0] }) } function o() { Q.onPageInit("postoffice", r) } n.setup = o })(ge || (ge = {})); var Ce; (n => {
	const t = "0123456789".split(""), s = Array.from({ length: Math.pow(10, 4) }).map((y, f) => f.toString().padStart(4, "0")), i = { WRONG: 0, PARTIAL: 1, CORRECT: 2 }, l = (y, f) => Array.from({ length: y }).fill(f), r = y => y[Math.floor(Math.random() * y.length)], o = (y, f) => Array.from(y).filter(q => q == f).length, a = (y, f) => { let q = y.indexOf(f); return q > -1 && y.splice(q, 1)[0] }, c = (y, f) => Array.from(y).filter(q => !Array.from(f).includes(q)); class d { constructor(f) { F(this, "word_list"); F(this, "letter_count"); F(this, "word_scores"); F(this, "position_letter_count"); F(this, "position_word_scores"); this.word_list = (f == null ? void 0 : f()) ?? [], this.letter_count = {}, this.word_scores = {}, this.position_letter_count = l(4).map(() => ({})), this.position_word_scores = {}, this.gen_word_scores(), this.gen_positional_word_scores() } copy() { let f = new d; return f.word_list = this.word_list.slice(), f.word_scores = { ...this.word_scores }, f.position_word_scores = { ...this.position_word_scores }, f } get length() { return this.word_list.length } get_random_word() { return r(this.word_list) } get_hiscore_word(f = !1) { const q = f ? this.position_word_scores : this.word_scores; let h = "", k = 0; for (let E of this.word_list) q[E] > k && (k = q[E], h = E); return h } get_maximized_word(f) { this.gen_letter_count(); let q = "", h = 0; for (let k of this.word_list) { let E = 0; for (let C of f) k.indexOf(C) > -1 && (E += 1); E > h && (h = E, q = k) } return q } gen_letter_count() { this.letter_count = Object.fromEntries(t.map(f => [f, 0])); for (let f of this.word_list) for (let q of new Set(f)) this.letter_count[q] += 1 } gen_positional_letter_count() { for (let f = 0; f < 4; f++)this.position_letter_count[f] = Object.fromEntries(t.map(q => [q, 0])); for (let f of this.word_list) Array.from(f).forEach((q, h) => { this.position_letter_count[h][q] += 1 }) } gen_word_scores() { this.gen_letter_count(), this.word_scores = {}; for (let f of this.word_list) { let q = 0; for (let h of new Set(f)) q += this.letter_count[h]; this.word_scores[f] = q } } gen_positional_word_scores() { this.gen_positional_letter_count(), this.position_word_scores = {}; for (let f of this.word_list) { let q = {}; Array.from(f).forEach((h, k) => { q[h] !== void 0 ? q[h] = this.position_letter_count[k][h] : q[h] = Math.max(q[h], this.position_letter_count[k][h]) }), this.position_word_scores[f] = Object.values(q).length } } filter_by_mask(f, q, h) { let k = []; for (let E of this.word_list) if (!f.some((P, M) => !!P.length && E[M] != P[0])) { let P = !0; for (let M = 0; M < q.length; M++) { let W = !1; const Y = q[M]; for (let ie of Y) E[M] == ie && (W = !0); if (W) { P = !1; break } } P && (t.some(M => !h[o(E.split(""), M)].has(M)) || k.push(E)) } this.word_list = k } } class u { constructor(f, q, h) { F(this, "word"); F(this, "result"); F(this, "guessed_correctly"); this.word = f, this.result = h ?? this.get_result(q), this.guessed_correctly = o(this.result, i.CORRECT) === 4 } toString() { let f = `${this.word}: `; for (let q of this.result) return q == 2 ? f += "G" : q == 1 && (f += "Y"), q == 0 && (f += "_"), f } get_result(f) { let q = l(4, i.WRONG), h = [...f]; Array.from(this.word).forEach((k, E) => { k == h[E] && (q[E] = i.CORRECT, h[E] = "") }); for (let k = 0; k < this.word.length; k++)if (h.includes(this.word[k]) && q[k] != i.CORRECT) { q[k] = i.PARTIAL; for (let E = 0; E < 4; E++)if (h[E] == this.word[k]) { h[E] = ""; break } } return o(q, i.CORRECT) === 4 && (this.guessed_correctly = !0), q } } class b {
		constructor(f = "#random") { F(this, "correct_word"); F(this, "guesses"); f === "#random" ? this.correct_word = S.get_random_word() : S.word_list.indexOf(f) > -1 && (this.correct_word = f), this.guesses = [] } toString() {
			return `::${this.correct_word}::` + this.guesses.map((f, q) => `
${q + 1}. ${f}`).join("")
		} guess(f, q) { return this.guesses.push(new u(f, this.correct_word, q)), this.guesses.at(-1).guessed_correctly }
	} class g { constructor(f) { F(this, "yes_mask"); F(this, "no_mask"); F(this, "allowed_mask"); F(this, "must_use"); F(this, "remaining_words"); this.yes_mask = l(4).map(() => []), this.no_mask = l(4).map(() => []), this.allowed_mask = l(4 + 1).map(() => new Set(t)), this.must_use = new Set, this.remaining_words = f.copy() } filter_word_list() { this.remaining_words.filter_by_mask(this.yes_mask, this.no_mask, this.allowed_mask) } reuse_green() { let f = l(4).map(() => []), q = this.yes_mask, h = new Set; this.yes_mask.concat(this.no_mask).forEach(M => { for (let W of M) h.add(W) }); let k = new Set(c(this.allowed_mask[1], h)), E = k, C = [new Set(t), ...l(4).map(() => new Set(E))], P = I.copy(); return P.filter_by_mask(f, q, C), P.length > 0 ? P.get_maximized_word(Array.from(k)) : "" } make_guess() { if (!D.includes("scored") || D.includes("firstrandom") && this.remaining_words.length == I.length) return this.remaining_words.get_random_word(); let f = 4 - this.yes_mask.filter(q => q.length === 0).length; if (D.includes("easymode") && f > 0 && this.remaining_words.length > 2) { let q = this.reuse_green(); if (q != "") return q } return D.includes("recount") && (this.remaining_words.gen_word_scores(), this.remaining_words.gen_positional_word_scores()), D.includes("position") ? this.remaining_words.get_hiscore_word(!0) : this.remaining_words.get_hiscore_word(!1) } update_yes_mask(f) { f.result.forEach((q, h) => { q == i.CORRECT && (this.yes_mask[h].includes(f.word[h]) || this.yes_mask[h].push(f.word[h])) }) } update_no_mask(f) { f.result.forEach((q, h) => { q == i.PARTIAL && (this.no_mask[h].includes(f.word[h]) || this.no_mask[h].push(f.word[h])), q == i.WRONG && o(f.word, f.word[h]) > 1 && (this.no_mask[h].includes(f.word[h]) || this.no_mask[h].push(f.word[h])) }) } update_allowed_mask(f) { let q = {}; Array.from(f.word).forEach((h, k) => { q[h] ? q[h].push(f.result[k]) : q[h] = [f.result[k]] }), Object.entries(q).forEach(([h, k]) => { if (k.includes(i.WRONG)) { let E = k.length - o(k, i.WRONG); for (let C = E + 1; C < 4; C++)this.allowed_mask[C].delete(h) } if (k.includes(i.PARTIAL) || k.includes(i.CORRECT)) { let E = o(k, i.PARTIAL) + o(k, i.CORRECT); for (let C = 0; C < E; C++)this.allowed_mask[C].delete(h) } }) } update_mask_with_guess(f) { this.update_yes_mask(f), this.update_no_mask(f), this.update_allowed_mask(f) } update_mask_with_remaining_words() { this.remaining_words.gen_letter_count(), Object.entries(this.remaining_words.letter_count).forEach(([f, q]) => { if (q == 0) for (let h = 1; h < this.allowed_mask.length; h++)this.allowed_mask[h].delete(f) }) } remove_word(f) { a(this.remaining_words.word_list, f) } } function w() { const y = new b(null), f = new g(I); return { getGuess() { return f.make_guess() }, submitResult(q, h) { const k = y.guess(q, (typeof h == "string" ? h.split("") : h).map(E => parseInt(E))); return f.remove_word(q), f.update_mask_with_guess(y.guesses.at(-1)), f.filter_word_list(), f.update_mask_with_remaining_words(), k } } } n.realtimeGameSolver = w; function R(y = !0, f = null) { y || console.log("game started"); const q = new b("9876"), h = new g(I); let k = !1, E = 10; for (; !k && E > 0;) { let C = h.make_guess(); q.guess(C) && (k = !0), h.remove_word(C), h.update_mask_with_guess(q.guesses.at(-1)), h.filter_word_list(), h.update_mask_with_remaining_words(), E-- } return y || console.log(q), q.guesses.at(-1).guessed_correctly ? q.guesses : -1 } function N() { let y = Date.now(); R(!1), console.log(`Time: ${Date.now() - y}`) } n.main = N; const S = new d(() => s), I = new d(() => s), D = ["scored", "recount", "firstrandom_off", "position", "easymode"]
})(Ce || (Ce = {})); function pn(n) { let e, t, s; return { c() { e = _("button"), e.textContent = "🤖 GUESS" }, m(i, l) { v(i, e, l), t || (s = U(e, "click", n[0]), t = !0) }, p: T, i: T, o: T, d(i) { i && A(e), t = !1, s() } } } function hn(n) { const e = { G: 0, Y: 1, B: 2 }; function t() { const s = Ce.realtimeGameSolver(); jQuery(".col-25[data-type]").closest(".card-content-inner").find(".row").map((l, r) => ({ cellsResult: jQuery(r).find("[data-type]").map((o, a) => e[jQuery(a).data("type")]).get(), cellsGuess: jQuery(r).find("[data-type]").map((o, a) => jQuery(a).text()).get() })).get().forEach(l => s.submitResult(l.cellsGuess.join(""), l.cellsResult)), jQuery("#vaultcode").val(s.getGuess()) } return [t] } class _n extends ne { constructor(e) { super(), te(this, e, hn, pn, ee, {}) } } var Ee; (n => { function e({ container: s }) { const i = $("<div />").appendTo($(s).find("#vaultcode").closest(".item-inner")); if (i.length) return new _n({ target: i[0] }) } function t() { Q.onPageInit("crack", e) } n.setup = t })(Ee || (Ee = {})); typeof GM_getResourceText < "u" && GM_addStyle(GM_getResourceText("scriptStyle")); st(); ae.setup(); Z.setup(); z.setup(); ge.setup(); Ee.setup(); me.setup(); J.setup();